java say apenas fala a primeira palavra

1

Eu tenho o seguinte código:

public class ChatSystem {
    public static void main(String[] args) {
        SpeakCommand sp = new SpeakCommand("hello master! How are you feeling today?");
        sp.execute();
    }
}

import java.io.IOException;

public class SpeakCommand implements CommandInterface{
    String message;
    public SpeakCommand(String content){
        message=content;
    }

    public void execute() {
        try {
            System.out.println("spd-say \"" +message+ "\" -p 100 -i 100 -t female1");
            Runtime.getRuntime().exec("spd-say \"" +message+ "\" -p 100 -i 100 -t female1");


        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

Que, se executado, resulta em meu laptop dizendo "olá" na voz correta (que é -p 100 -i 100 -t female1 -r -40 é realmente passado para dizer). A impressão também afirma corretamente spd-say "hello master! How are you feeling today?" -p 100 -i 100 -t female1 , que se executado na linha de comando funciona. Alguma ideia do que estou fazendo errado?

    
por Thijser 02.05.2015 / 19:25

1 resposta

0

Substituir

Runtime.getRuntime().exec("spd-say \"" +message+ "\" -p 100 -i 100 -t female1");

com

Runtime.getRuntime().exec(new String[]{"spd-say",'\"'+message+'\"',"-p 100 -i 100 -t female1");

e vai funcionar. Felicidades!

    
por tbking 02.05.2015 / 23:32