为了账号安全,请及时绑定邮箱和手机立即绑定

Python语音识别错误-无效的频道数

Python语音识别错误-无效的频道数

哔哔one 2021-03-29 17:14:57
作为项目的一部分,我正在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行,在 初始化 self._stream = pa.open(** arguments)OSError:[Errno -9998]无效的通道数但是,如果我在函数外部运行相同的代码行,例如不在函数内部def loop():运行,则它将正常运行我应该怎么办?我的python版本是3.5.4
查看完整描述

2 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

尝试这种方式:


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()实例。


查看完整回答
反对 回复 2021-04-09
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

是否可以独享频道访问权?只能用一根线保持对麦克风的访问权限吗?您的问题可能是您尝试同时(多次循环调用)多次访问麦克风,而不是一次(循环外)访问麦克风。


查看完整回答
反对 回复 2021-04-09
  • 2 回答
  • 0 关注
  • 256 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号