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

如何使用Python实现macOS系统扬声器内部输出音频的采集

macOS录制系统内部音频解决方案

macOS的Core Audio默认不开放系统扬声器输出的内部采集接口,你原有Windows脚本依赖的声卡环路回录能力在macOS上没有原生支持,必须先配置虚拟音频设备才能实现对应功能,以下是完整实现方案:

前置配置:安装虚拟音频设备

  1. 安装开源虚拟音频工具BlackHole,可直接在App Store搜索下载,选择2通道版本即可满足普通录制需求
  2. 打开「音频MIDI设置」,点击左下角+号创建「多输出设备」,同时勾选你的物理扬声器和BlackHole两个设备
  3. 将系统默认输出设备设置为刚创建的多输出设备,此时系统播放的音频会同时流向扬声器和BlackHole,后续只要采集BlackHole的输入流即可得到系统内部音频

适配后的SoundDevice运行脚本

原有逻辑基本可以复用,只需要修改采集设备为BlackHole即可:

import sounddevice as REC
import scipy.io.wavfile

# 录音参数配置
SAMPLE_RATE = 48000
SECONDS = 10
MONO = 1
STEREO = 2

# 打印所有音频设备,查询BlackHole对应的名称或ID
print(REC.query_devices())
# 终端也可直接执行命令查询:python3 -m sounddevice

# 填写你查询到的BlackHole设备名称或数字ID
REC.default.device = "BlackHole 2ch"

print(f'开始录制,时长{SECONDS}秒')
recording = REC.rec(int(SECONDS * SAMPLE_RATE), samplerate=SAMPLE_RATE, channels=STEREO)
REC.wait()
print("录制完成")
scipy.io.wavfile.write("test.wav", SAMPLE_RATE, recording)

依赖安装说明:

  • 先执行brew install portaudio安装PortAudio依赖
  • 再执行pip install sounddevice scipy安装Python库

其他适配macOS的可选库

  • PyAudio:逻辑和SoundDevice完全一致,同样依赖前置的BlackHole配置,适合已经习惯PyAudio接口的开发场景
  • ffmpeg-python:封装FFmpeg的采集能力,无需手动处理音频流逻辑,适合简单录制场景,也可以直接用subprocess调用FFmpeg命令完成录制
  • pycoreaudio:原生对接Core Audio接口的Python库,无需依赖PortAudio,延迟更低,但开发复杂度更高,适合需要自定义音频处理的专业场景

注意事项

  • 多输出设备模式下不要直接调节系统主音量,需要分别调整物理扬声器和BlackHole的增益,避免录制的音频音量异常
  • 如果不需要录制时同步听到声音,可以直接将系统默认输出设置为BlackHole,无需创建多输出设备,录音稳定性更高
  • 目前没有可以绕开虚拟音频设备配置的纯代码方案,所有macOS系统内部音频采集方案都依赖虚拟音频设备的支持

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:15:03