私はラズベリーパイの上にそれのメモリに容量の少し大きいを持っている3モデルB、私はコードで直面してる問題がそれを実行しようとした次のコードは、それが時々実行されるということです。オーバーフローのないPyaudioのpythonモジュールを使用してRaspberry Piでオーディオをキャプチャする方法は?
from os import environ, path
import pyaudio
from pocketsphinx.pocketsphinx import *
from sphinxbase.sphinxbase import *
MODELDIR = "../../../model"
DATADIR = "../../../test/data"
config = Decoder.default_config()
config.set_string('-hmm', path.join(MODELDIR, 'en-us/en-us'))
config.set_string('-lm', path.join(MODELDIR, '3199.lm'))
config.set_string('-dict', path.join(MODELDIR, '3199.dic'))
config.set_string('-logfn', '/dev/null')
decoder = Decoder(config)
p = pyaudio.PyAudio()
stream = p.open(format=pyaudio.paInt16, channels=1, rate=16000, input=True, frames_per_buffer=1024)
stream.start_stream()
in_speech_bf = False
decoder.start_utt()
while True:
buf = stream.read(1024)
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()
result = decoder.hyp().hypstr
print 'Result:', result
if result == 'yes':
print 'Do whatever you want'
decoder.start_utt()
else:
break
decoder.end_utt()
プログラムはクラッシュし続け、次の例外がスローされます。 OSError:[-9985] Errnoデバイスが使用できません
リンクしたコードはマイクから読み取れません。エラーだけでなく、実際に使用しているコードと完全なログ出力を提供する必要があります。ラズベリーPIのポケットフィックスでは、言語モデルによる大規模な語彙連続音声認識は不可能です。遅すぎます。 –
はい、申し訳ありませんが、質問の投稿を更新しました。 – 0x01Brain
あなたのオーディオ設定がそれをサポートしている場合、44.1khzで録音しようとすることができます。次に、 '-samprate 44100 -nfft 2048'オプションをデコーダ設定に追加する必要があります。あるいは、システム上のpulseaudio/alsa-dmixを適切に設定して、リサンプリングを行うことができます。 –