当NodeJS执行时,PocketSphinx无法从stdin读取

时间:2016-06-03 02:32:15

标签: node.js cmusphinx pocketsphinx

我正在尝试将NodeJS中的数据流传递给pocketsphinx_continuous进程。我对如何做到这一点的想法是使用NodeJS的管道功能将我的数据发送到pocketsphinx进程的stdin流。

如果我跑

pocketsphinx_continuous -infile /dev/stdin -nfft 2048 -samprate 44100 -keyphrase "hello computer" -kws_threshold 1e-18
在命令行上

然后,pocketsphinx_continuous启动并耐心等待stdin输入。

然而,当我添加

var ps = exec('pocketsphinx_continuous -infile /dev/stdin -nfft 2048 -samprate 44100 -keyphrase "hello computer" -kws_threshold 1e-18', function(error, stdout, stderr) {});

到我的NodeJS程序,我得到:

  

致命:“continuous.c”,第158行:无法打开文件'/ dev / stdin'进行阅读:没有这样的设备或地址

我很难理解为什么在NodeJS下运行时会出现此错误,但在正常运行时却不会。

谢谢,

约什

1 个答案:

答案 0 :(得分:1)

我在nodejs GitHub上找到an issue来回答我的问题。

我已将我的代码调整为以下内容,现在可以正常运行:

var ps = exec('cat | pocketsphinx_continuous -infile /dev/stdin -nfft 2048 -samprate 44100 -keyphrase "hello computer" -kws_threshold 1e-18', function(error, stdout, stderr) {});

通过cat管道将NodeJS为子进程创建的套接字stdin转换为允许/ dev / stdin工作的管道标准输入。