如何使用Python实现耳机/耳麦通话录音?
耳机/耳麦通话录制及Python实现方案
完全可以在使用耳机/耳麦时录制通话内容,但核心问题是捕获系统内部的音频流——默认的麦克风/扬声器只能录制外部或播放的声音,而通话的音频(包括你通过耳麦输入的声音和对方传来的声音)属于系统内部通路的音频,需要通过特定设备或工具捕获。
Python实现步骤
1. 系统音频捕获准备
首先需要让系统支持内部音频捕获:
- Windows:启用「立体声混音」设备(打开声音设置 → 录制选项卡 → 右键勾选「显示禁用的设备」→ 启用「立体声混音」)
- Mac:安装BlackHole或Soundflower虚拟声卡,将耳机输出路由到虚拟设备
- Linux:使用PulseAudio的monitor源(通过
pactl list sources命令找到对应的monitor设备)
2. 安装依赖库
用pip安装音频处理所需的库:
pip install sounddevice numpy wave
3. 录制脚本示例
以下脚本可捕获系统内部音频并保存为标准WAV文件:
import sounddevice as sd import numpy as np import wave # 列出所有音频设备,找到系统音频捕获设备的ID(替换为你自己的设备ID) print("可用音频设备:") print(sd.query_devices()) device_id = 2 # 请替换为你的系统捕获设备ID # 录制参数配置 sample_rate = 44100 # 标准音频采样率 channels = 2 # 立体声通道 duration = 60 # 录制时长(单位:秒) # 开始录制 print("录制中...") audio_data = sd.rec( frames=int(duration * sample_rate), samplerate=sample_rate, channels=channels, device=device_id ) sd.wait() # 等待录制完成 # 转换音频格式为WAV标准的16位整数 audio_data = np.int16(audio_data * 32767) # 保存录制文件 with wave.open("call_recording.wav", "wb") as wav_file: wav_file.setnchannels(channels) wav_file.setsampwidth(2) wav_file.setframerate(sample_rate) wav_file.writeframes(audio_data.tobytes()) print("录制完成,文件已保存为 call_recording.wav")
额外说明
- 如果需要同时录制你通过耳麦输入的声音和对方的声音,可通过虚拟声卡将麦克风输入与系统音频输出混音后再捕获;也可以在脚本中同时捕获两个设备的音频流,通过代码合并为一个文件。
- 不同系统的音频设备ID存在差异,务必通过
sd.query_devices()的输出找到正确的捕获设备。
内容的提问来源于stack exchange,提问作者Lecs
相关产品推荐
相关产品推荐

