如何识别电脑正在播放的音频?附Python实现参考代码
电脑端播放音频识别操作方案
你当前提供的代码默认采集麦克风输入的音频,要识别电脑自身播放的音频,需要先把系统播放的音频流转为音频输入源,再进行采集识别。
第一步:配置系统音频采集源
- Windows系统:右键右下角音量图标→打开声音设置→进入声音控制面板→切换到「录制」标签页→右键空白区域勾选「显示禁用的设备」→找到「立体声混音(Stereo Mix)」设备,右键启用并设置为默认录制设备
- Mac系统:安装第三方虚拟音频驱动(如BlackHole),安装完成后将系统输出设备设置为该虚拟驱动,同时将该虚拟驱动设置为系统输入设备
- Linux系统:安装pavucontrol工具,在输入设备配置页将采集源切换为系统输出对应的monitor设备
第二步:查找对应音频设备的索引
运行以下代码获取所有可用音频输入设备的索引,找到刚才配置的立体声混音/虚拟音频设备对应的索引值:
import pyaudio p = pyaudio.PyAudio() for i in range(p.get_device_count()): dev = p.get_device_info_by_index(i) print(f"索引{i}:{dev['name']},最大输入通道数:{dev['maxInputChannels']}")
第三步:调整优化识别代码
将刚才查到的设备索引填入代码中Microphone的参数里,同时可以增加降噪校准、指定识别语言的配置,调整后完整代码如下:
import speech_recognition from speech_recognition import Recognizer, Microphone r = Recognizer() # 请把此处的2替换为你上一步查到的对应设备的索引 m = Microphone(device_index=2) with m as source: # 环境噪声校准,提升识别准确率 r.adjust_for_ambient_noise(source, duration=0.5) print("开始识别") audio = r.listen(source) try: # 识别中文需指定language参数为zh-CN,默认识别英文 text = r.recognize_google(audio, language="zh-CN") print(f"识别结果:{text}") except Exception as e: print(f"识别失败:{str(e)}")
补充说明
- 如果谷歌识别接口连接失败,可以替换为百度语音、科大讯飞等国内厂商的语音识别接口,调整对应识别逻辑即可
- 若系统播放的音频包含背景音乐、杂音或者多人同时说话的情况,识别准确率会有所下降,可额外增加音频降噪、人声分离的预处理步骤优化效果
内容的提问来源于stack exchange,提问作者SilverPage
相关产品推荐
相关产品推荐

