我正在尝试将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下运行时会出现此错误,但在正常运行时却不会。
谢谢,
约什
答案 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工作的管道标准输入。