Python调用speech_recognition报NotImplementedError报错及抽象类含义咨询
错误原因
你代码中误用了speech_recognition.Recognizer类作为with上下文管理器的操作对象,这个类是语音识别核心类,本身不支持上下文管理协议,你应该使用专门用来获取麦克风输入的speech_recognition.Microphone类。
另外你原有代码在异常捕获逻辑后重复调用了一次语音识别方法,会导致异常捕获完全失效,也需要同步修改。
抽象类(abstract class)含义
抽象类是面向对象编程中的类设计类型,它仅用于定义子类必须遵循的方法和属性规范,本身不能被直接实例化完成具体功能,需要子类继承并实现它定义的所有抽象方法后才能正常使用。你触发报错就是因为调用了Recognizer类中没有实现的上下文接口方法,库内置抛出了该错误提示。
修正后可运行代码
import speech_recognition ai_ear = speech_recognition.Recognizer() # 替换为Microphone类获取麦克风输入 with speech_recognition.Microphone() as mic: print("AI: I'm listening...") audio = ai_ear.listen(mic) try: # 增加language参数适配中文识别,仅需要识别英文可以删掉该参数 you = ai_ear.recognize_google(audio, language="zh-CN") except: you = "语音识别失败" print(you)
运行前置说明
- 首先需要安装pyaudio依赖才能调用麦克风,执行命令
pip install pyaudio安装即可,Windows系统如果安装失败可以下载对应Python版本的pyaudio whl离线包安装 - 运行时请允许程序访问麦克风权限,首次运行会自动完成环境噪音校准,等待1-2秒即可正常录音
内容的提问来源于stack exchange,提问作者jDuck_77
相关产品推荐
相关产品推荐

