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

如何为sounddevice录音选择正确设备?录音异常问题求助

解决sounddevice录制系统音频的问题

问题原因分析

  • 选择输出设备(如ID4、8、15)报错:这类设备仅具备输出通道,没有音频捕获能力,rec()函数需要指定输入设备,用输出设备作为输入源必然会提示“输入通道数不正确”。
  • 用Stereo Mix(ID1、6、12)录制声音空洞:多由通道匹配错误、系统设备设置异常或音频格式不兼容导致。

解决方案

1. 正确选择输入设备

录制系统音频必须选择带“Stereo Mix”标识的输入设备(即ID1、6、12这类),这类设备是专门用于捕获系统输出音频的。default.device格式为[输入设备ID, 输出设备ID],录制时输出设备可设为常用播放设备,或直接忽略不影响录制。

2. 修复声音空洞问题

(1)检查系统设备设置

  • 右键Windows音量图标 → 声音 → 录制选项卡
  • 找到正在使用的Stereo Mix设备(比如对应ID12的“Stereo Mix (Conexant ISST Audio)”),右键选择属性
    • 在级别选项卡,将音量拉至合适位置,避免过低
    • 在增强选项卡,勾选“禁用所有声音效果”,点击确定

(2)调整代码参数匹配设备

修改代码,直接指定输入设备,确保通道数、采样率与设备兼容:

from sounddevice import rec, query_devices
from soundfile import write

# 指定输入设备为WASAPI的Stereo Mix(ID12,可根据你的设备列表调整)
input_device_id = 12
# 打印设备信息,确认支持的通道数和采样率
print(query_devices(input_device_id))

fs = 48000  # 若设备不支持48000Hz,改为设备支持的采样率(比如44100)
duration = 10

# 录制时指定设备,通道数建议用设备实际支持的(比如设备12支持4通道,可设为4或2)
myrecording = rec(int(duration * fs), 
                  samplerate=fs, 
                  blocking=True, 
                  device=input_device_id,
                  channels=2)

# 优先保存为WAV格式,避免MP3格式的兼容性问题
write("output.wav", myrecording, fs)

(3)关于MP3格式的说明

soundfile.write()默认对MP3的支持需要额外依赖(libsndfile的MP3编码库),未安装时直接写MP3可能导致音频异常。建议先保存为WAV格式,再用ffmpeg等工具转换为MP3。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 18:50:31