1. 为什么你需要一个虚拟音频线?
如果你曾经想录制电脑里播放的音乐、游戏音效,或者在线会议的声音,你可能会发现一个尴尬的问题:直接用麦克风对着音箱录,效果差不说,还全是环境噪音。更专业的做法是直接从系统内部'抓取'音频流,就像水管工直接从主管道接水,而不是拿水桶去接水龙头流出来的水。这就是虚拟音频线(Virtual Audio Cable,简称 VAC)的用武之地。
简单来说,虚拟音频线是一个软件驱动程序,它在你的操作系统里创建了一个虚拟的'声音管道'。你可以把任何正在播放声音的应用程序(比如音乐播放器、浏览器、游戏)的输出,指定到这个虚拟管道里。然后,另一个应用程序(比如你的 Python 脚本、录音软件)就可以从这个管道的另一端,像读取麦克风一样,读取到纯净、无杂音的系统内部音频。
我最初接触这个技术,是因为想做一个自动化的直播音效播放器。我需要让 Python 脚本能实时播放一些音效,并且这些音效要和我的麦克风声音混合后,一起送到直播软件里。如果不用虚拟音频线,要么音效会从我的音箱放出来被麦克风拾取(有回声和延迟),要么就得用复杂的音频接口硬件。而虚拟音频线用纯软件的方式,完美解决了这个问题,成本为零,效果却出奇的好。
2. 搭建你的音频'管道':安装与配置
2.1 选择合适的虚拟音频线工具
市面上有好几款虚拟音频线软件,最经典、最稳定的是 VB-Audio 公司出品的 VB-Cable。它分为免费版和捐赠版,对于绝大多数个人用户和开发者来说,免费的 VB-Cable A+B(也就是我们常说的 VB-Cable)完全够用。它的工作原理是在你的声音设备列表里,创建一个名为'CABLE Input'的输出设备和一个名为'CABLE Output'的输入设备。
安装过程非常简单,但有几个坑需要注意:
- 一定要以管理员身份运行安装程序。因为它是驱动程序,需要向系统底层注册设备。
- 安装完成后,务必重启电脑。我第一次安装时没重启,设备列表里死活找不到,折腾了半天。
- 重启后,打开系统的'声音设置'(右键点击右下角的小喇叭),在'播放'和'录制'选项卡里,你应该能看到名为'CABLE Input'和'CABLE Output'的设备。
2.2 配置系统音频路由
安装好只是第一步,怎么让声音流进这个管道是关键。这里有两种主流思路:
方法一:全局路由(适合录制整个系统声音)
- 在系统'声音设置' -> '播放'选项卡里,将'CABLE Input'设置为默认播放设备。
- 这样,所有应用程序的声音默认都会发送到虚拟音频线里。
- 但副作用是:你的音箱或耳机没声音了!因为声音都流进虚拟管道了,物理设备收不到。所以,你需要在录制完成后再把默认设备改回来。
方法二:应用级路由(适合录制特定软件的声音) 很多播放软件(如 PotPlayer、Foobar2000)和通信软件(如 Discord、OBS)都支持手动选择输出设备。你可以在这些软件的声音设置里,单独指定输出设备为'CABLE Input'。这样,只有这个软件的声音会被导入虚拟线,其他软件和系统声音依然从你的音箱播放,互不干扰。这种方法更灵活,是我更推荐的方式。
3. 用 Python'监听'虚拟音频线
管道建好了,声音也流进去了,现在轮到 Python 上场,扮演'管道工'的角色,把流过来的音频数据接住并处理。这里我们主要用两个强大的库:sounddevice 和 PyAudio。sounddevice 的 API 更简洁现代,PyAudio 则更底层、功能更全面。我们先从简单的 sounddevice 开始。
3.1 使用 Sounddevice 进行基础录制
首先,确保安装了必要的库。打开你的命令行(CMD 或 PowerShell),运行:
pip install sounddevice numpy scipy
numpy 用于处理音频数组数据,scipy 可以用来保存 WAV 文件。
接下来,让我们写一个最基础的录音脚本。第一步,不是急着录音,而是先看看你的虚拟音频线在系统里被分配了什么'编号'。
import sounddevice as sd
(sd.query_devices())

