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

Python语音识别:如何将桌面输出作为麦克风输入?非麦克风设备无输出

问题分析与解决思路

你遇到的核心问题是:选中的设备并非输入麦克风(比如是扬声器这类输出设备),这类设备无法捕获音频,导致rc.listen(source)一直处于等待音频输入的状态,既不会输出内容,也不会触发异常(因为程序本身没有报错,只是在等待)。

1. 先确认真正的输入麦克风设备

sr.Microphone.list_microphone_names()列出的设备包含输入、输出两类,你需要筛选出真正的输入麦克风:

  • 设备名称通常带有「Microphone」「麦克风」「Input」这类关键词;
  • 对照系统音频设置里的已启用输入设备,匹配程序输出的设备列表。

2. 优化代码,增加调试与超时机制

原代码的except:捕获所有异常却无提示,且没有超时逻辑,建议修改为以下版本,方便排查问题:

import speech_recognition as sr
import pyaudio

# 列出所有设备,供你选择正确的输入麦克风索引
for index, name in enumerate(sr.Microphone.list_microphone_names()):
    print(f'{index}, {name}')

rc = sr.Recognizer()
# 替换为你确认的输入麦克风索引
target_device_index = 0
# 替换为你要检测的关键词
badword = "你的关键词"

while True:
    try:
        with sr.Microphone(device_index=target_device_index) as source:
            print("正在监听...")
            rc.adjust_for_ambient_noise(source, duration=0.2)
            # 添加超时,避免无音频输入时无限等待
            audio = rc.listen(source, timeout=5, phrase_time_limit=3)
            
            # 若需要中文识别,添加language参数
            text = rc.recognize_google(audio, language="zh-CN")
            text = text.lower()
            print(f"识别结果: {text}")
            if badword in text:
                print("don't say that!")
    except sr.WaitTimeoutError:
        print("监听超时,未检测到音频输入,请确认设备是否为输入麦克风")
    except sr.UnknownValueError:
        print("无法识别音频内容")
    except sr.RequestError as e:
        print(f"谷歌识别服务请求失败: {e}")
    except Exception as e:
        print(f"其他错误: {e}")
    continue

3. 额外排查点

  • 确保选中的输入麦克风在系统中已启用,且设置为默认输入设备;
  • 检查麦克风硬件状态:是否静音、连接是否正常;
  • 外接麦克风可尝试重新插拔或更换USB端口。

内容的提问来源于stack exchange,提问作者Jengo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 16:03:37