使用SpeechRecognition调用list_working_microphones()出现属性错误求助
解决SpeechRecognition中Microphone无list_working_microphones方法的问题
在SpeechRecognition 3.8.1版本中,Microphone类并没有list_working_microphones()这个静态方法,你可能混淆了其他库的API或者旧版本的用法。以下是正确的实现方式:
1. 获取所有麦克风名称列表
使用官方提供的list_microphone_names()方法可以获取系统中所有麦克风的名称和对应的索引:
import speech_recognition as sr # 获取所有麦克风的名称与索引 microphone_list = sr.Microphone.list_microphone_names() for idx, name in enumerate(microphone_list): print(f"麦克风索引 {idx}: {name}")
2. 筛选可用麦克风
如果需要确认哪些麦克风实际可用(能正常初始化和采集音频),可以通过尝试初始化每个麦克风并捕获异常的方式验证:
import speech_recognition as sr recognizer = sr.Recognizer() working_microphones = [] all_mics = sr.Microphone.list_microphone_names() for idx, name in enumerate(all_mics): try: # 尝试初始化麦克风,测试是否可用 with sr.Microphone(device_index=idx) as source: recognizer.adjust_for_ambient_noise(source, duration=0.1) working_microphones.append((idx, name)) print(f"✅ 麦克风 {idx} ({name}) 可用") except Exception as e: print(f"❌ 麦克风 {idx} ({name}) 不可用: {str(e)}") # 遍历可用麦克风进行后续操作 for idx, name in working_microphones: # 你的业务逻辑代码 pass
说明
list_microphone_names()仅返回系统识别到的麦克风设备名称,不验证设备是否能正常工作;- 初始化麦克风时如果抛出异常,通常表示该设备不可用(比如被占用、驱动问题等)。
内容的提问来源于stack exchange,提问作者mau
相关产品推荐
相关产品推荐

