使用sounddevice录制双声道扬声器音频时出现通道错误求助
问题分析
你指定的设备1是输出设备(0 in, 2 out),它没有输入通道,无法作为输入源录制音频,这才触发了「Invalid number of channels」错误。Mac默认没有内置立体声混音功能,要捕获扬声器输出,需要借助虚拟音频设备实现音频路由。
解决方案步骤
1. 安装虚拟音频设备(BlackHole)
用Homebrew快速安装双声道版本:
brew install blackhole-2ch
(无Homebrew可直接从其官方渠道下载DMG安装包)
2. 配置系统音频路由
- 通过Spotlight搜索打开「音频 MIDI 设置」
- 点击左下角
+号,选择「创建多输出设备」 - 在右侧面板勾选「MacBook Pro Speakers」和「BlackHole 2ch」
- 右键点击新建的多输出设备,选择「使用此设备作为声音输出」
这样系统音频会同时输出到扬声器和BlackHole,BlackHole即可作为输入设备捕获音频。
3. 修改代码指定正确输入设备
运行sd.query_devices()找到BlackHole的设备索引(会显示2个输入通道),然后调整代码:
import sounddevice as sd from scipy.io.wavfile import write fs = 44100 # 使用标准整数采样率,避免浮点数潜在问题 seconds = 3 # 录制时长 # 替换为你的BlackHole设备索引,示例为3 myrecording = sd.rec(int(seconds * fs), samplerate=fs, channels=2, device=3) sd.wait() # 等待录制完成 write('output.wav', int(fs), myrecording) # 保存WAV文件
额外注意事项
- 若不需要实时听声音,可直接将BlackHole设为系统默认输出,但日常使用建议切换回原扬声器设备。
- 原代码中
fs = 44100/2的浮点数采样率可能引发兼容问题,建议使用标准整数采样率(如44100、48000)。
内容的提问来源于stack exchange,提问作者koegl
相关产品推荐
相关产品推荐

