簡體   English   中英

Python語音識別錯誤-無效的頻道數

[英]Python speech recognition error - Invalid number of channels

作為項目的一部分,我正在python上運行語音識別代碼。 當我將語音識別代碼放在類似這樣的函數中時,我面臨一個非常奇怪的問題:

def loop():
    r=sr.Recognizer()
    with sr.Microphone(device_index=2) as source:
            print("say something")
            audio = r.listen(source)
            try:
                    print("you said "+r.recognize_google(audio))
            except sr.UnknownValueError:
                    print("Could not understand")
            except sr.RequestError as e:
                    print("errpr: {0}".format(e))

它給了我以下錯誤:

以sr.Microphone(device_index = 2)作為源:文件“ /usr/local/lib/python3.5/dist-packages/speech_recognition/ init .py”,第141行,在輸入 input = True中,#stream是輸入流文件“ /usr/local/lib/python3.5/dist-packages/pyaudio.py”,第750行,在開放流中= Stream(self,* args,** kwargs)文件“ / usr / local / lib / python3.5 / dist-packages / pyaudio.py“,第441行, init self._stream = pa.open(** arguments)OSError:[Errno -9998]無效的通道數

但是,如果我在函數外部運行相同的代碼行,例如不在def loop():內部運行def loop():它可以正常運行

我該怎么辦? 我的python版本是3.5.4

嘗試這種方式:

r = sr.Recognizer()
m = sr.Microphone(device_index=2)

def loop():
    with m as source:
        print("say something")
        audio = r.listen(source)
        try:
            print("you said "+r.recognize_google(audio))
        except sr.UnknownValueError:
            print("Could not understand")
        except sr.RequestError as e:
            print("errpr: {0}".format(e))

loop()

不要創建多個Microphone()實例。

是否可以獨享該頻道? 只能有一個線程可以訪問麥克風嗎? 您的問題可能是您嘗試同時(多次循環調用)多次訪問麥克風,而不是一次(循環外)訪問麥克風。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM