会议录音工具开源调研 v2——whisper.cpp + 虚拟声卡 + 硬件方案
上一篇文章写完后,收到不少反馈。有人提了 whisper.cpp 的本地转写方案,有人分享了硬件混音器的思路。花了两周把新方案全部测过,写个更新版。
whisper.cpp:本地转写的游戏规则改变者
之前做会议纪要,转写都是调 API——Whisper API、Deepgram。成本不高但有个致命问题:延迟。三小时会议录完上传、等转写、拿下文,整个过程十分钟起步。如果用本地模型,录完几秒出结果。
whisper.cpp 是 OpenAI Whisper 模型的 C++ 移植,支持 Apple Silicon GPU 加速。M2 Max 上跑 large-v3 模型,一小时音频 3-4 分钟转完。准确度跟 API 版持平。
但有个关键局限:说话人分离(diarization)。 Whisper 本身不分说话人,需要额外跑一个 diarization 模型。目前最好的开源方案是 pyannote-audio,跟 whisper.cpp 搭配需要自己写胶水代码。
实测流程:录音 → whisper.cpp 转写 → pyannote 说话人分离 → LLM 生成纪要。全程本地,零网络依赖,延迟在录音完成后 5 分钟内。效果已经够用了。
虚拟声卡方案新进展
BlackHole 的开发者最近更新了 2ch 和 16ch 模式。16ch 版可以同时录系统音频 + 多个麦克风到不同音轨——如果你需要说话人各自独立的音轨,这是目前唯一免费方案。
Sunshine(一个 GameStream 替代品)最近也在 macOS 上实现了系统音频捕获。实现方式有点黑——通过安装一个虚拟音频设备扩展。不是为会议录音设计的,但效果不错。
硬件方案的意外优势
测软件方案时,顺便试了个物理混音器:给会议用 Mac 的耳机孔插一根 AUX 线到录音手机。最笨的办法,最稳定的体验。
不需要任何软件权限。不依赖操作系统版本。苹果改一百次音频安全策略,这根线照用。 缺点:AUX 是模拟信号,有底噪。录音手机需要额外设备。
还有个意外收获——硬件录音天然解决了"隐私"问题。用户能看到物理线缆连接,知道什么时候在录音,什么时候断开。软件层面的隐私声明再详细,也不如一根看得见摸得着的线让人放心。
这个洞察直接影响了后续产品的隐私设计方向。
现在的推荐方案
轻量用户:QuickRecorder + ScreenCaptureKit。零配置,系统音频直录。
技术用户:whisper.cpp + pyannote + BlackHole 16ch。完全本地化,说话人分离,多音轨。
对隐私极度敏感:硬件混音器 + AUX 录音。物理隔离,无软件权限问题。
我自己现在的日常方案是 QuickRecorder + whisper.cpp(本地转写)+ Claude(生成纪要)。五分钟内从会议结束到手上有结构化的会议纪要,带说话人标注。体验已经很接近"理想状态"。