3

我是一个学习 C++ 的 Python 和 Lisp 人,并且由于缺乏更精确的术语,3 个 C++ 程序而需要“连接”。我不确定执行以下操作的最佳方法是什么:

1)pocketsphinx 从麦克风获取输入,进行实时自动语音识别,将文本输出到终端,我想将输出发送到输入:

2)Chatscript,一个聊天程序,它解析传入的文本(此时来自键盘)并生成一个发送到终端的响应,我想将输出发送到输入:

3) Festival,文本到语音,从终端读取文本输入并生成该文本的语音输出。

我正在探索不同的方法来做到这一点,据我了解,我可以运行从 pocketsphinx 到 Chatscript 到 Festival 的管道,但是我读过的一些内容让我相信由于开销,这是一种效率较低的方法。另外,关于管道,我认为我会用文本输出设置 2 个单向管道(pid == 0)是否正确?

我想我可以(一旦我学到了很多东西)通过基本上确定所需的库/文件等并在更改输出语句时“连接”三个 void main() 来组合所有 3 个程序(它们都是开源的)?

有人可以就此提供一些指导/指导,并就这些(或建议其他方法)中的哪一个(或建议其他方法?)将是最经济和有效的吗?

问候,理查德

4

2 回答 2

1

注意源中的 cout 或 printf ,并将其添加到缓冲区字符串变量中,这将允许您每次缓冲区填充时,您可以调用下一个程序并使用获得的缓冲区执行它。如果您不需要“实时”处理,您可以执行@zch 指出的操作,因为如果我记得(我可能错了)管道需要程序在将数据发送到下一个二进制文件之前结束。

于 2013-01-15T21:13:25.117 回答
1

采用 ”?” 您可以使用“|”一起运行多个程序 使用前面的输出作为后面程序的输入

于 2013-01-15T22:07:21.243 回答