2016-08-06 21 views
-1

私は、pocketsphinxパッケージとsphinxbaseパッケージの両方をPythonでインストールしてセットアップしました。 githubの音声認識コードを取得し、データとモードの両方のディレクトリを要件に応じて変更しましたが、「python test.py」で実行しようとしているときに音声でストリーミングできません ここにコードがあります:マイクロホンからのPython pocketsphinx認識

#!/usr/bin/env python 
import os 
import sphinxbase as sb 
import pocketsphinx as ps 

MODELDIR = '/usr/lib/python2.7/site-packages/speech_recognition/pocketsphinx-data' 
DATADIR='/usr/lib/python2.7/site-packages/speech_recognition/pocketsphinx-data' 
# Create a decoder with certain model 
config = ps.Decoder.default_config() 
config.set_string('-hmm', "/usr/lib/python2.7/site-packages/speech_recognition/pocketsphinx-data/en-US/acoustic-model") 
config.set_string('-lm', os.path.join(MODELDIR, 'en-US/language-model.lm.bin')) 
config.set_string('-dict', os.path.join(MODELDIR, 'en-US/pronounciation-dictionary.dict')) 
decoder = ps.Decoder(config) 

# Decode streaming data. 
decoder.start_utt() 
stream = open(os.path.join(DATADIR, 'en-US/goforward.raw'), 'rb') 
while True: 
    buf = stream.read(1024) 
    if buf: 
     decoder.process_raw(buf, False, False) 
    else: 
     break 
decoder.end_utt() 
stream.close() 
print('Best hypothesis segments:', [seg.word for seg in decoder.seg()]) 

実行方法を教えてください。マイクから

+0

あなたが実際に –

+0

を参照してください問題の説明を提供する必要があり、ターミナルには、正確な問題はありません。モジュールのすべての詳細を正確に表示していますが、実行しようとしているときにストリーミングされていません(入力があれば)。 –

+0

録音マイクの場合、パイオニアのストリームを取る必要があります。ソースでサンプルを見つけることができます –

答えて

2

連続認識は次のようになります。

#!/usr/bin/python 

from os import environ, path 
import pyaudio 

from pocketsphinx.pocketsphinx import * 
from sphinxbase.sphinxbase import * 

MODELDIR = "../../../model" 

config = Decoder.default_config() 
config.set_string('-hmm', path.join(MODELDIR, 'en-us/en-us')) 
config.set_string('-lm', path.join(MODELDIR, 'en-us/en-us.lm.bin')) 
config.set_string('-dict', path.join(MODELDIR, 'en-us/cmudict-en-us.dict')) 
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() 
       print 'Result:', decoder.hyp().hypstr 
       decoder.start_utt() 
    else: 
     break 
decoder.end_utt() 
関連する問題