如何将电脑正在播放的音频输入麦克风实现YouTube实时语音翻译
系统音频捕获实现实时YouTube翻译方案
方案1:修改系统音频配置(无需改动现有代码,推荐快速验证)
核心逻辑是通过系统自带的立体声混音功能或者第三方虚拟音频设备,把系统播放的音频路由到麦克风输入通道,原有代码可以直接复用。
- Windows平台操作:
- 右键右下角音量图标,依次选择「声音设置」→「更多声音设置」→「录制」标签页
- 找到「立体声混音(Stereo Mix)」选项,右键点击启用即可,如果没有该选项可以安装VB-Cable虚拟音频设备
- 安装完成后将系统默认播放设备设置为
CABLE Input,默认录制设备设置为CABLE Output,运行原有代码即可直接捕获系统播放的YouTube音频
- Mac平台操作:
安装BlackHole开源虚拟音频设备,在音频MIDI设置中创建聚合设备,将系统输出路由到BlackHole的输入通道,再将BlackHole设为默认录音设备即可 - Linux平台操作:
执行命令pactl load-module module-null-sink sink_name=VirtualSink加载PulseAudio虚拟声卡,将系统输出切换到VirtualSink,再把VirtualSink的监控源设置为默认输入设备即可
方案2:修改代码直接捕获系统音频(无需修改系统配置)
需要先通过pyaudio枚举找到系统的环回音频设备,直接读取音频流喂给识别模块,首先安装依赖:pip install pyaudio SpeechRecognition googletrans==4.0.0-rc1
修改后的代码如下:
import speech_recognition as sr import pyaudio import googletrans translator = googletrans.Translator() r = sr.Recognizer() p = pyaudio.PyAudio() # 先取消下方注释枚举所有音频设备,找到系统环回/虚拟音频设备的索引替换对应参数 # for i in range(p.get_device_count()): # print(p.get_device_info_by_index(i)) LOOPBACK_DEVICE_INDEX = 2 # 配置音频流参数 stream = p.open(format=pyaudio.paInt16, channels=1, rate=16000, input=True, input_device_index=LOOPBACK_DEVICE_INDEX, frames_per_buffer=1024) print("开始识别翻译...") while True: try: # duration参数控制每次识别的音频长度,单位为秒,可根据需求调整平衡实时性和准确率 audio = r.record(stream, duration=5) text = r.recognize_google(audio, language='en') result = translator.translate(text, dest='ko') print(result.text) except: print("can't recognize") stream.stop_stream() stream.close() p.terminate()
注意事项
- 如需同时听到YouTube播放声音和捕获音频,可在虚拟音频设备配置时创建聚合输出设备,同时输出到物理声卡和虚拟声卡即可
- 谷歌语音识别接口需要可访问谷歌服务的网络环境,离线场景可替换为Vosk等本地识别模型
内容的提问来源于stack exchange,提问作者SilverPage
相关产品推荐
相关产品推荐

