我在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);
}
答案 0 :(得分:4)
没有专门的选项可以仅将结果保存到文件中。但是,您可以使用-backtrace
告诉pocketsphinx保存结果并回溯到日志文件,您可以使用-logfn
指定日志文件。
答案 1 :(得分:1)
自修订版13156后,pocketsphinx应在每条消息上刷新stdout,因此交互式应用程序应该可以正常工作。
您可以更新您的版本。