将 Pocketsphinx_continuous 的输出重定向到文件

将 Pocketsphinx_continuous 的输出重定向到文件

我有一个丑陋的命令:

pocketsphinx_continuous -samprate 48000 -nfft 2048 -hmm /usr/local/share/pocketsphinx/model/en-us/en-us -lm 9745.lm -dict 9745.dic -inmic yes

分解:它会监听任何噪音,当检测到噪音时,它会监听它,然后对其进行语音识别。

现在,命令输出中有一堆垃圾,只有一行很重要。这是一种语音识别的输出:

READY....
Listening...
INFO: cmn_prior.c(131): cmn_prior_update: from < 21.18 -11.87  6.18  0.77  4.42 -0.76  1.99  8.43  2.83 -1.46  3.80  6.19  3.71 >
INFO: cmn_prior.c(149): cmn_prior_update: to   < 23.28 -5.11  8.81 -0.28  0.06 -0.83  0.94  6.68  0.42  1.07  4.00  7.34  4.32 >
INFO: ngram_search_fwdtree.c(1553):      814 words recognized (9/fr)
INFO: ngram_search_fwdtree.c(1555):    60871 senones evaluated (684/fr)
INFO: ngram_search_fwdtree.c(1559):    37179 channels searched (417/fr), 6846 1st, 21428 last
INFO: ngram_search_fwdtree.c(1562):     1415 words for which last channels evaluated (15/fr)
INFO: ngram_search_fwdtree.c(1564):     2626 candidate words for entering last phone (29/fr)
INFO: ngram_search_fwdtree.c(1567): fwdtree 0.66 CPU 0.742 xRT
INFO: ngram_search_fwdtree.c(1570): fwdtree 3.36 wall 3.780 xRT
INFO: ngram_search_fwdflat.c(302): Utterance vocabulary contains 21 words
INFO: ngram_search_fwdflat.c(948):      655 words recognized (7/fr)
INFO: ngram_search_fwdflat.c(950):    40095 senones evaluated (451/fr)
INFO: ngram_search_fwdflat.c(952):    31447 channels searched (353/fr)
INFO: ngram_search_fwdflat.c(954):     1794 words searched (20/fr)
INFO: ngram_search_fwdflat.c(957):     1006 word transitions (11/fr)
INFO: ngram_search_fwdflat.c(960): fwdflat 0.29 CPU 0.326 xRT
INFO: ngram_search_fwdflat.c(963): fwdflat 0.30 wall 0.333 xRT
INFO: ngram_search.c(1253): lattice start node <s>.0 end node </s>.70
INFO: ngram_search.c(1279): Eliminated 1 nodes before end node
INFO: ngram_search.c(1384): Lattice has 127 nodes, 473 links
INFO: ps_lattice.c(1380): Bestpath score: -2298
INFO: ps_lattice.c(1384): Normalizer P(O) = alpha(</s>:70:87) = -132973
INFO: ps_lattice.c(1441): Joint P(O,S) = -156371 P(S|O) = -23398
INFO: ngram_search.c(875): bestpath 0.01 CPU 0.011 xRT
INFO: ngram_search.c(878): bestpath 0.00 wall 0.005 xRT
HELLO

HELLO是唯一重要的事情,我希望以某种方式将其输出到文件中。

我已经尝试添加>foo.txt到命令的末尾,这是有效的,除了它输出除HELLO文件之外的所有内容,HELLO甚至从未将其输出到命令行。

我尝试过添加&> foo.txt 2> foo.txt >> foo.txt,所有这些都会导致输出到达它所说的位置,除非每次它也会导致READY....Listening...HELLO消失。

我怎样才能HELLO以任何方式定向到一个文件,我不在乎是否有其他东西,我可以剪掉其他东西。

答案1

尝试这个:

pocketsphinx_continuous -samprate 48000 -nfft 2048 -hmm \
/usr/local/share/pocketsphinx/model/en-us/en-us -lm 9745.lm -dict 9745.dic \
-inmic yes 2>&1 | tee ./full-output.log | grep -v --line-buffered '^INFO:'

这将记录一切./full-output.log,但隐藏控制台中以 . 开头的任何输出INFO:2>&1将标准错误重定向到标准输出,以便所有输出都强制通过一系列管道,而不仅仅是标准输出。

如果您想隐藏不包含的其他行INFO:,您可以|在扩展grep语法中使用:

egrep -v --line-buffered '^INFO:|^ERROR:'

--line-buffered选项将阻止grep等待直到输出pocketsphinx_continuous完全完成。

编辑

也有可能已经pocketsphinx_continuous将您想要的所有内容放在标准输出上,并将您不想要的所有内容放在标准错误上。所以,你可以尝试这样做:

pocketsphinx_continuous -samprate 48000 -nfft 2048 -hmm \
/usr/local/share/pocketsphinx/model/en-us/en-us -lm 9745.lm -dict 9745.dic \
-inmic yes 2>./unwanted-stuff.log | tee ./words.log

这会将标准错误上的所有内容记录到 ,./unwanted-stuff.log将标准输出上的所有内容记录到./words.log

答案2

漂亮清晰的输出:

 pocketsphinx_continuous  -samprate 48000 -nfft 2048 -inmic yes 2>/dev/null

对于这些全类对象来说,Python 模块可能是更好的接口。

相关内容