Python Speech_Recognition - "This audio source is already inside a context manager"

Python Speech_Recognition - "This audio source is already inside a context manager"

我正在尝试 运行 在 Linux 机器的后台进行语音识别,但它给了我一个 AssertionError 说“这个音频源已经在上下文管理器中”。在没有线程的情况下使用时一切正常。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import speech_recognition as sr

def speech_to_text(recognizer, audio):
    try:
        print(recognizer.recognize_google(audio, language="de"))
    except sr.UnknownValueError:
        print("[!] UnknownValueError")
    except sr.RequestError as e:
        print("RequestError: ", e)

def get_audio():
    r = sr.Recognizer()
    with sr.Microphone() as source:
        print("Listening...")
        r.adjust_for_ambient_noise(source)
        stop_listening = r.listen_in_background(source, speech_to_text)
        #stop_listening()
        #audio = r.listen(source)
        #print(r.recognize_google(audio))

if __name__ == "__main__":
    get_audio()

提前致谢!

问题出在上下文管理器之前的麦克风实例 'with'。 试试这个


def get_audio():
    r = sr.Recognizer()
    mic = sr.Microphone()
    with mic as source:
        print("Listening...")
        r.adjust_for_ambient_noise(source)
        try:
           stop_listening = r.listen_in_background(source, speech_to_text)
        except:
            print('please say that again')
            return get_audio()