语音智能体的识别器会把麦克风旁边所有人的话都转写进去。VoxLock 是一个 27M 参数的因果目标说话人提取模型,由公开的 REAL-TSE 基线在单张 GPU 上微调而来:它从通话本身截一段来电者的声音当样本(默认取前 15 秒,流式模式听到 3 秒后开始),之后只保留这个人的声音、去掉旁人说话,再交给语音识别。
点赞 3 · 代码星数 88
理由
- 作者称在 Krisp 的 265 条真实录音上把词错率从 23.21% 降到 4.95%,与 Krisp 最好的付费滤波没有显著差别;在训练未用到的 AMI 会议窗口上从 42.95% 降到 10.63%。
- 轻量可实时:8 位模型在一个 CPU 线程上占 77% 就能跑一路通话,算法延迟 24 ms;ONNX 有 int8 / fp16 / fp32 多种精度。
- 接入现成:pip install voxlock,自带 Pipecat 音频滤波器和 LiveKit Agents 插件,sherpa-onnx 2.0.1 起内置;模型、代码和逐文件评分都开放,Apache-2.0。
用法
- 命令行:pip install voxlock → voxlock call.wav -o caller.wav(首次自动下载模型)。
- Python 流式:vl = voxlock.VoxLock(threads=1); stream = vl.live(),每收到一段 16 kHz 音频就 stream.push(chunk),结束时 stream.flush();已有来电者样本可用 vl.stream(sample) 从第一段就开始隔离。
- 语音智能体:pip install "voxlock[pipecat]" 后把 VoxLockFilter() 设为 audio_in_filter;LiveKit 用 "voxlock[livekit]",作为 noise_cancellation 传入。
- 浏览器试用:抱脸 Space arbazsiddiqui/voxlock。
风险
- 训练数据是英语(LibriSpeech、AMI),模型卡语言标为英语,中文等其他语言的效果没有报告。
- 前几秒要靠通话开头自动找来电者,开头是别人在说话时可能锁错人,可手动传 sample 规避;与商业产品的对比由作者本人测试。
- 个人作者项目,评测脚本和逐文件结果在仓库 bench/ 下,可自行核对。