【发布时间】:2013-01-16 00:53:43
【问题描述】:
我正在尝试使用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)),大概输出到标准输出。
例如,我尝试通过以下方式使用 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 获得任何输出。我可以从其他命令中获取输出。例如。我也试过这段代码http://en.allexperts.com/q/Java-1046/2008/2/Runtime-getRuntime-exec-cmd.htm,它适用于许多其他命令(如ls),但不适用于Festival。
有没有人知道我如何才能让它发挥作用?
谢谢。
【问题讨论】:
标签: java linux terminal text-to-speech festival