CMUSphinx与PyAIML接口 - 输入/输出流

时间:2013-11-30 23:09:23

标签: java python python-2.7

我有一个使用PyAIML用Python编写的简单聊天机器人,我正在运行一个Java语音到文本系统。 现在,我想将Java的输出传递给Python。

这是我到目前为止所尝试的内容:

File file = new File("C:\\Users\\path\\to\\chat_bot\\");

Process process = Runtime.getRuntime().exec("python chat.py", null, file);
OutputStream stdin = process.getOutputStream();
InputStream stderr = process.getErrorStream();
InputStream stdout = process.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(stdout));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(stdin));

while ((line = reader.readLine()) != null) {
            System.out.println("Stdout: " + line);
}

String input = in.nextLine();
input += "\n";
writer.write(input);
writer.flush();

现在,我在Python 2.7中安装了AIML,但出于某种原因,默认设置为Python 3.3 另外,我从Java得到的错误是:

java.io.IOException: The pipe is being closed

我已将Windows注册表更改为默认设置Python 2.7,但这没用。 那么,如何设置Java来运行C:\Python27文件夹中的python? 我真的不想卸载Python 3.3。

1 个答案:

答案 0 :(得分:0)

您应该使用ProcessBuilder(而不是Runtime.exec)。除此之外,你应该使用你想要的python版本的完整路径(例如使用c:\\Python27\\bin\\python而不仅仅是python)。