每日文摘

深挖 · WhisperLiveKit × sokuji 横评:开源实时语音转写两路线,先学哪个

题图

WhisperLiveKit(下称 WLK)是 ~11k stars 的 Python 流式语音转写翻译工具包,Apache-2.0,月更节奏。这是上一篇 sokuji 深挖的续篇:sokuji 是「能直接用的同传应用」,WLK 是「能拆开学习的同传引擎」——它恰好把 sokuji 没有解决的增量翻译问题做成了可复用模块。本文深挖 WLK 本体,然后与 sokuji 横评,最后给出「先 study 哪一个」的结论。

是什么

WLK 的形态是库 + CLI + 自托管服务 + 客户端的全家桶,PyPI 包名 whisperlivekit(v0.2.26),官方 tagline「Ultra-low-latency, self-hosted speech-to-text pipeline」(README):

一句话:WLK 管线层(耳朵到文字),sokuji 应用层(文字回到声音和会议软件)。

核心机制

流式 ASR 双策略(--backend-policy 切换):

增量翻译三路线(这是它相对 sokuji 最大的差异点):

  1. NLLB 蒸馏 + LocalAgreement(默认,--target-language 激活):600M/1.3B 蒸馏 NLLB,源 token 增量喂入重跑翻译、两次一致的前缀才提交,未定尾部每轮重评估
  2. AlignAtt4LLM(--translation-backend alignatt,vLLM sidecar,默认 Gemma-4-E4B 约 40GB VRAM):decoder-only LLM 对 ASR 未提交的不稳定尾部「可起草、不可提交」;注意力门控决定 commit 时机;append-only 永不撤回;ASR 后续提交源词时 sidecar 从缓存草稿零成本放行目标 token——效果是翻译延迟跟踪(track)ASR 提交延迟,而不是叠加在其上。三档延迟模式中 low 档端到端约 2.5s(translation-alignatt.md)
  3. Whisper 直译英文(--direct-english-translation):不走翻译模块,STT 模型直接出英文

一个容易搞错的事实:README 把 SimulStreaming 当核心卖点,但 SimulStreaming 是查理大学 UFAL 的方法与论文(arXiv 2506.17077,作者 Macháček & Polák),Fuxa 是集成者不是发明者;他本人的一作论文是 AlignAtt4LLM(IWSLT 2026,与 Macháček 合著,arXiv 2606.03967,其中 En→Zh 结果混合)(arXiv)。WLK 对 ufal 两个上游是 vendor + 深度改写(非 fork),配套件 NLLW/Alignatt4LLM/Qwen3-ASR-causal 都是 Fuxa 自研——这是一个「产业界工程师 × 学术界策略内核」的组合体。

工程质量:20 个测试文件、CodeQL、多平台发布矩阵、文档与代码同步更新,42 个 PyPI 版本持续发布。代价是复杂度膨胀:16 个互斥 extras、功能按后端裁剪、部分组合需分 venv——自建时按需抽模块,别照单全收。

怎么跑起来(3090 视角)

数据说话

横评:sokuji vs WhisperLiveKit

维度sokujiWhisperLiveKit
形态端到端「应用」(Electron+扩展)可嵌入「工具包」(库+CLI+服务)
输出语音↔语音(TTS 137 模型/53 语言)只到文本,无 TTS
方向双向会议、虚拟麦克风注入 Zoom/Meet/Teams单向流式管道,无会议接入
API/SDK无对外 APIOpenAI 兼容 REST + Deepgram 兼容 WS + 原生 WS + Python API
流式算法ASR 双模式降级自愈;翻译整句全量、无增量AlignAtt/LA 双策略 + 真增量翻译(append-only commit)
部署桌面安装包,无服务端一条命令起服务,Docker/Nginx 齐全
中文云端 Soniox 覆盖广;本地 99+/55+ 语言FunASR 官方路线;zh/zh-CN 代码与标点两处摩擦
延迟证据无官方数字H100 英文 first-word 0.09-0.47s;3090/中文需自测
许可AGPL-3.0(传染性)Apache-2.0(NLLB 权重 NC 禁商用)

两者的能力矩阵严格互补(证据来自两仓库 README/docs 交叉比对,04-横评原料):sokuji 覆盖应用层闭环(声音进声音出、会议软件接入、AEC 回声处理),但把自己封闭成产品、没有编程接口;WLK 覆盖管线层引擎(流式算法、增量翻译、开放协议),但输出到文字为止、不出声。要自研一个同传,两者恰好各覆盖一半链路。

先 study 哪一个

**结论:先 WhisperLiveKit,sokuji 作第二对象。**理由:

  1. 自研同传最难的部分 WLK 已模块化。流式 ASR 策略与增量翻译是算法门槛所在,WLK 把它们做成了 35 行 Python 可嵌入的库,OpenAI SDK 直连使自研前端对接成本接近零;sokuji 的分段/降级状态机优秀但没有增量翻译,算法上限低一档
  2. 3090 + 中文路径明确。faster-whisper + FunASR 后端组合有官方支持,注意语言代码体系与标点两处摩擦即可
  3. 许可更友好。Apache-2.0 可商用(换掉 NLLB 权重后整条链路无障碍);AGPL 的 sokuji 只能学不能抄

sokuji 的价值在 WLK 空缺的另一半:TTS 选型经验(137 个模型的实践)、虚拟麦克风路由、双向回声的 AEC 组合拳、VRAM ledger——这些在做「出声」阶段时回来按需取用。

建议的阅读顺序:local_agreement/online_asr.py(LA-2,百行入门)→ simul_whisper/(AlignAtt 注意力机制)→ docs/translation-alignatt.md + Alignatt4LLM 仓库(增量翻译协议,配 arXiv 2606.03967 论文)→ 再回 sokuji 的 asr_engine.py 与 audio-flow 文档(分段降级与 AEC 工程)。

参考阅读