我一直在修补CMUSphinx/Pocketsphinx和 Node.js。我想做的是在后台生成 pocketsphinx_continuous,然后使用 node 作为顶部的流量控制层。
但是,pocketsphinx 似乎完全忽略了标准输出。有谁知道这是否是设计使然?如果我通过 CLI 运行它,我会看到如下输出:
准备好....
听...
信息:ngram_search.c(467):将分数堆栈调整为 200000 个条目信息:ngram_search.c(459):将反向指针表调整为 10000 个条目
可以从 stderror 中看到 INFO 和错误输出。AFAICT READY、听力和任何成功的单词识别都看不到,也不会发送到 stdout。
我的节点非常简单,并且在执行 Hello World 之类的 echo 测试 bash 脚本上运行良好:
if(ps == null) {
//'-logfn','/dev/null',
//sudo pocketsphinx_continuous -dict lm/8531.dic -lm lm/8531.lm -kws words.kws -kws_threshold 1e-40 -logfn /dev/null -inmic yes
//console.log(process.stdout.write(''));
ps = spawn('pocketsphinx_continuous', ['-nfft','2048', '-hmm','/usr/local/share/pocketsphinx/model/en-us/en-us', '-dict','lm/8531.dic', '-lm','lm/8531.lm', '-kws','words.kws', '-kws_threshold','1e-40', '-inmic', 'yes']);
//ps = spawn('bash',['test.sh']);
//ps.stderr.pipe(process.stdout);
//console.log(ps.stdout.write(''));
ps.stdout.on('data', function (data) {
console.log('stdout: ' + data);
});
ps.stderr.on('data', function (data) {
console.log('stderr: ' + data);
});
}
此信息是否只能通过 GStreamer 或类似方式获得?提前致谢。