ユーザーがリモート システムから小さなコマンド セットを読み上げ、それらをサーバー上で実行できるようにするアプリケーションを作成しようとしています。pocketphinx を使用して音声テキストを解析します。マイクを使用してローカルで実行すると、単語をどのようにスラーしても、 pocketphinx_continuous は完全に機能します。しかし、オーディオ ファイルをインポートし、ffmpeg を使用してオーディオを単一チャンネルの 16 ビット PCM ファイルにダウンサンプリングすると、問題なく最初の単語が解析されます。次に、他のすべてをスキップして、として扱います。問題はファイル形式にあり、ポケットフィンクスの構成にあると確信しています。
ffmpeg -y -i Sound\AddSheet.wav -ac 1 -f s16le -acodec pcm_s16le -ar 16k AddTmp.wav
バッチ ファイルでコマンド ラインを使用
する。
私が得る出力の下部は次のとおりです。
INFO: fsg_search.c(1407): Start node ADD.0:5:47
INFO: fsg_search.c(1407): Start node <sil>.0:2:49
INFO: fsg_search.c(1446): End node <sil>.126:128:305 (-486)
INFO: fsg_search.c(1662): lattice start node <s>.0 end node <sil>.126
INFO: ps_lattice.c(1352): Normalizer P(O) = alpha(<sil>:126:305) = -175371
INFO: ps_lattice.c(1390): Joint P(O,S) = -176076 P(S|O) = -705
000000000: ADD USER
ファイル内のオーディオではありません。ファイルで話されている言葉は「ADD SPREADSHEET」で、.wav ファイルが介在しなくても同じマイクから完全に機能します。
sox を使用して、オーディオの音量を上げ、バックグラウンド ノイズを減らしてみました。
sox -v 3.0 Sound\%1 Sound\%1-loud.wav ffmpeg -i Sound\%1-loud.wav -vn -ss 00:00:00 -t 00:00:01 -y Sound\%1-noiseaud.wav
sox Sound\%1-noiseaud.wav -n noiseprof Sound\%1-noise.prof
sox Sound\%1 Sound\%1-clean.wav noisered sound\noise.prof 0.21
ffmpeg -y -i Sound\%1-clean.wav -ac 1 -f s16le -acodec pcm_s16le -ar 16k AddTmp.wav
最終結果に目立った影響はありません。
出力を見ると、fsg_search.c が開始ノードとして ADD を検出し、残りは無音になっていることがわかります。これについて助けてください。