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();
明らかに、これが機能していると私が言える方法は、スピーカーを通してテキストを話すことです。
私が本当に苦労しているのは、ターミナルに表示されるものからテキスト出力を取得することです。おそらくstdoutにテキストを出力する他のコマンド((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 から出力を得ることができません。他のコマンドから出力を取得できます。EG 私もこのコードを試しましたhttp://en.allexperts.com/q/Java-1046/2008/2/Runtime-getRuntime-exec-cmd.htm他の多くのコマンド ( などls
) で動作しますが、Festival では動作しません.
どうすればこれを機能させることができるか、何か考えがありますか?
ありがとう。