1

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 では動作しません.

どうすればこれを機能させることができるか、何か考えがありますか?

ありがとう。

4

1 に答える 1

0

Festival は、stdout ではなく stderr にテキストを出力する場合があります。交換してみる

p.getInputStream()

p.getErrorStream()
于 2013-01-16T01:35:28.567 に答える