【问题标题】:Does pocketsphinx flush stdout?pocketsphinx 是否刷新标准输出?
【发布时间】:2015-06-02 16:35:17
【问题描述】:

我一直在修补 CMUSphinx/Pocketsphinx 和 Node.js。我想做的是在后台生成 pocketsphinx_continuous,然后使用 node 作为顶部的流量控制层。

然而,pocketsphinx 似乎完全忽略了标准输出。有谁知道这是否是设计使然?如果我通过 CLI 运行它,我会看到如下输出:

准备好了....

听...

INFO:ngram_search.c(467):将分数堆栈大小调整为 200000 个条目 信息:ngram_search.c(459):将反向指针表调整为 10000 个条目

可以从 stderror 中看到 INFO 和错误输出。 AFAICT READY、Listening 和任何成功的单词识别都看不到,也不会发送到 stdout。

我的节点非常简单,可以在执行 Hello World 之类的测试 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 等获得?提前致谢。

【问题讨论】:

    标签: node.js cmusphinx pocketsphinx


    【解决方案1】:

    使用expect package 中的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 作为参数传递

    【讨论】:

      【解决方案2】:

      然而,pocketsphinx 似乎完全忽略了标准输出。有谁知道这是否是设计使然?

      是的,默认情况下我们没有刷新标准输出。你需要在PTY下运行pocketsphinx或者等待程序完成才能得到输出。

      在修订版 13156 中我们修复了这个问题,您可以直接更新,然后您应该在消息解码后立即收到消息。

      我想做的是在后台生成 pocketsphinx_continuous,然后使用节点作为顶部的流量控制层。

      最好直接使用节点绑定而不是 spawn:

      https://github.com/cmusphinx/node-pocketsphinx

      【讨论】:

      • 谢谢,至少我知道我没疯。我会检查 node-pocketsphinx。
      猜你喜欢
      • 2011-01-08
      • 2021-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-12
      • 2013-11-04
      • 2019-11-22
      • 2021-05-14
      相关资源
      最近更新 更多