Pocketsphinx:捕获-tmic yes的实时输出到.txt

时间:2015-07-18 13:14:29

标签: cmusphinx pocketsphinx

我在Windows上使用pocketsphinx_continuous。将输出重定向到文本文件使用“-infile”参数,但失败并显示“-inmic yes”。

如问题Does pocketsphinx flush stdout?中所述,pocketsphinx忽略了stdout(至少在使用-inmic时)。

有没有什么方法可以将pocketphinx_continuous识别的单词“-inmic yes”保存到文本文件中?

具体来说,我希望我的Java程序运行pocketsphinx_continuous.exe并从麦克风输入中识别出单词。

解决方案

按照Alexander Solovets的建议,将-backtrace-logfn一起使用,确实会将结果与日志保存在指定的文件中。但是,日志不会像结果发送到终端那样频繁保存。我希望结果输出尽可能快,所以我从源代码构建了pocketsphinx_continuous.exe,并对continous.c进行了以下更改。

在continuous.c:

hyp = ps_get_hyp(ps, NULL );
if (hyp != NULL)
{
    printf("%s\n", hyp);
    FILE * fp;
    fp = fopen("file.txt", "a+");
    fprintf(fp, hyp);
    fprintf(fp, "\r\n");
    fclose(fp);
}

2 个答案:

答案 0 :(得分:4)

没有专门的选项可以仅将结果保存到文件中。但是,您可以使用-backtrace告诉pocketsphinx保存结果并回溯到日志文件,您可以使用-logfn指定日志文件。

答案 1 :(得分:1)

自修订版13156后,pocketsphinx应在每条消息上刷新stdout,因此交互式应用程序应该可以正常工作。

您可以更新您的版本。