【问题标题】:Sending input to stdin and getting the full output in Java - Festival TTS将输入发送到标准输入并在 Java 中获取完整输出 - Festival TTS
【发布时间】: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


    【解决方案1】:

    Festival 可能会在 stderr 而不是 stdout 上输出它的文本。尝试替换

    p.getInputStream()
    

    p.getErrorStream()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-14
      • 1970-01-01
      相关资源
      最近更新 更多