私は音声認識にpocketsphinxを使用しようとしていましたが、奇妙なエラーが続いています。私は、コードを実行すると私のコードはPocketsphinxオーバーフローエラー
#!/usr/bin/env python
from os import environ, path
import pyaudio
from pocketsphinx.pocketsphinx import *
from sphinxbase.sphinxbase import *
MODELDIR = "pocketsphinx/model"
DATADIR = "pocketsphinx/test/data"
# Create a decoder with certain model
config = Decoder.default_config()
config.set_string('-hmm', path.join(MODELDIR, 'en-us/en-us'))
config.set_string('-lm', path.join(MODELDIR, 'MERLIN/MERLINv1.lm'))
config.set_string('-dict', path.join(MODELDIR, 'MERLIN/MERLINv1.dic'))
decoder = Decoder(config)
p = pyaudio.PyAudio()
stream = p.open(format=pyaudio.paInt16, channels=1, rate=16000, input=True, frames_per_buffer=256)
stream.start_stream()
in_speech_bf = False
decoder.start_utt()
try:
while True:
buf = stream.read(256)
if buf:
decoder.process_raw(buf, False, False)
if decoder.get_in_speech() != in_speech_bf:
in_speech_bf = decoder.get_in_speech()
if not in_speech_bf:
decoder.end_utt()
print 'Result:', decoder.hyp().hypstr
decoder.start_utt()
else:
break
decoder.end_utt()
except:
print'Exception caught! Handeling...'
を次のようになり、私はそれが私が言った何を考えて印刷し、私は再び話をするまで待って、その後、話をするのを待つことになっています。 実際には、待機し、印刷した後、エラーをスローして終了します。
Result: DISPLAY CLOCK
Traceback (most recent call last):
File "SR_test.py", line 26, in <module>
buf = stream.read(256)
File "/usr/lib/python2.7/dist-packages/pyaudio.py", line 608, in read
return pa.read_stream(self._stream, num_frames, exception_on_overflow)
IOError: [Errno -9981] Input overflowed
私はこのエラーを見て、チャンクサイズを増減することを提案しました。私はチャンクを256-2048に変更して無駄にしました。誰もこれを解決する方法を知っていますか?前もって感謝します。
ところで、コードがエラーまで動作するので、try-except節でエラーを無視するようにトリックしようとしました。残念ながら、それは単に私のステートメントを印刷し、とにかく終了します。
で説明したようにデコーダ構成/語彙を最適化しようとすることができます。 Poketsphinxは私のシステム上で連続して動作します。デコーダをチューニングして何が起こるかを調べようとします – Alexander
提案されたパラメータを変更しようとすると、セグメンテーションフォールトまたは認識されない変数になります。私は辞書と同じように 'config.set_string( ' - beam'、 '1e-50')'を追加しています。これは正しいです? – Alexander
また、私はラズベリーパイで動こうとしていますが、私の辞書は約50語です。それは大きいと考えられていますか? pocketsphinx_continuousは動作しますが、スクリプトがオーバーフローするのはなぜですか?すべての質問を申し訳ありません、私はかなり経験の浅いプログラマーです。 – Alexander