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제외하면 작동하는 명령 끝에 추가를 시도했습니다 .HELLOHELLO

나는 추가를 시도했는데 , 이로 인해 , 및 사라질 &> 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않게 됩니다 .greppocketsphinx_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 모듈은 이러한 풀클래스 객체에 대한 더 나은 인터페이스일 수 있습니다.

관련 정보