You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 14:51:02