我正在尝试使用 Java Runtime.getRuntime().exec(String) 命令运行 Festival,然后使用 OutputStreamWriter 将一些命令写入进程的输出流。
这很好用,我可以做这样的事情:
Process p = Runtime.getRuntime().exec("festival");
Writer w = new OutputStreamWriter(p.getOutputStream());
w.append("(SayText \"Hello World\")");
w.flush();
显然,我可以告诉它的方式是它通过扬声器说出文本。
我真正困难的是从终端中看到的文本输出。我正在尝试运行一些其他输出文本的命令(例如(voice.list)),大概是到stdout。
例如,我尝试通过以下方式使用 BufferedReader:
BufferedReader reader = new BufferedReader (new InputStreamReader(p.getInputStream()));
w.append("(voice.list)");
w.flush();
String output = "";
String line = reader.readLine();
System.out.println(line);
while ((line = reader.readLine()) != null)
{
System.out.println("Reading: " + line);
output += line;
}
(System.out.println 仅用于调试,如果我能够让它工作,我会以更简洁的方式完成整个工作。)
无论我尝试什么代码,我都无法从 Festival 获得任何输出。我可以从其他命令中获取输出。EG 我也尝试过这段代码http://en.allexperts.com/q/Java-1046/2008/2/Runtime-getRuntime-exec-cmd.htm它适用于许多其他命令(如ls
)但不适用于 Festival .
有什么知道我将如何使它工作的吗?
谢谢。