我一直在修补CMUSphinx/Pocketsphinx和Node.js.我想做的是在后台生成pocketsphinx_continuous,然后在顶部使用node作为流量控制层。
然而,pocketsphinx似乎完全忽略了stdout。有谁知道这是否是设计的?如果我通过CLI运行它,我会看到像:
... READY
...听力
INFO:ngram_search.c(467):将评分大小调整为200000个条目 INFO:ngram_search.c(459):将后台指针表调整为10000个条目
可以从stderror中看到INFO和错误输出。 AFAICT READY,Listening和任何成功的单词识别都无法看到,也没有被发送到stdout。
我的节点非常简单,并且在执行Hello World的测试bash脚本上工作正常,如echo:
div
此信息仅可通过GStreamer等获得吗?提前谢谢。
答案 0 :(得分:2)
unbuffer
这是我工作的例子
$> mkfifo pipe
$> unbuffer pocketsphinx_continuous -inmic yes -keyphrase "ok dag knee" -kws_threshold "\1e-15" -logfn /dev/null > pipe
在另一个终端
&> cat < pipe
按预期工作......
READY....
Listening...
只需在spwan
中调用unbuffer并将pocketsphinx_continuous
作为参数传递
答案 1 :(得分:1)
然而,pocketsphinx似乎完全忽略了stdout。有谁知道这是不是设计?
是的,默认情况下我们没有刷新stdout。你需要在PTY下运行pocketsphinx或等待程序完成输出。
在修订版13156中我们修复了这个问题,您可以更新,然后您应该在解码后立即收到消息。
我想做的是在后台生成pocketsphinx_continuous,然后在顶部使用node作为流量控制层。
最好直接使用节点绑定而不是spawn: