2014-02-12 54 views
1

我正在嘗試獲取語音識別以搜索正在處理的項目。在那一刻,我只專注於讓語音識別工作,我正在使用pygsr來做到這一點。我在here earlier上發現了一篇關於pygsr的文章,但我目前正在努力實現它。這是我正在使用的代碼:使用pygsr進行語音識別時發生錯誤

from pygsr import Pygsr 

speech = Pygsr() 
speech.record(3) 
phrase, complete_response =speech.speech_to_text('en_US') 
print phrase 

花了一段時間安裝帶有OS X的庫後,我終於得到了實際的工作。它檢測到的庫,看似工作,但然後我會得到這個錯誤:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "<string>", line 4, in <module> 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pygsr/__init__.py", line 33, in record 
    data = stream.read(self.chunk) 
    File "/Library/Python/2.7/site-packages/pyaudio.py", line 605, in read 
    return pa.read_stream(self._stream, num_frames) 
IOError: [Errno Input overflowed] -9981 

我不知道這是否是因爲什麼我做錯了,或者如果我不能在OS X上如果用pygsr這是沒有辦法的工作,有沒有人有任何使用Python 2.7的OS X語音識別庫的建議?

回答

1

,如果它工作正常,你可以測試pyaudio運行此腳本:

import pyaudio 
import wave 

CHUNK = 1024 
FORMAT = pyaudio.paInt16 
CHANNELS = 2 
RATE = 44100 
RECORD_SECONDS = 5 
WAVE_OUTPUT_FILENAME = "output.wav" 

p = pyaudio.PyAudio() 

stream = p.open(format=FORMAT, 
      channels=CHANNELS, 
      rate=RATE, 
      input=True, 
      frames_per_buffer=CHUNK) 

print("* recording") 

frames = [] 

for i in range(0, int(RATE/CHUNK * RECORD_SECONDS)): 
    data = stream.read(CHUNK) 
    frames.append(data) 

print("* done recording") 

stream.stop_stream() 
stream.close() 
p.terminate() 

wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb') 
wf.setnchannels(CHANNELS) 
wf.setsampwidth(p.get_sample_size(FORMAT)) 
wf.setframerate(RATE) 
wf.writeframes(b''.join(frames)) 
wf.close() 

我收到pygsr MacOS的不工作很多報道,但我不能修復它,因爲我無法測試它在Mac上。