WhisperLiveKit 说话人区分实战指南:如何从安装到调参实现实时多人转录
【免费下载链接】WhisperLiveKitReal-time, local speech-to-text with streaming ASR, speaker diarization, translation, and OpenAI/Deepgram-compatible APIs.项目地址: https://gitcode.com/GitHub_Trending/wh/WhisperLiveKit
开多人会议做笔记时,转录出来的文字常常分不清是谁说的,只能回头听录音逐句归位。WhisperLiveKit 的 Sortformer 说话人区分功能可以在实时转录音频的同时,自动给每句话标上说话人编号,让多人会议的实时转录和字幕带上可用的"谁说了什么"信息。
理解这项功能:实时说话人区分
WhisperLiveKit 的说话人区分与 ASR 转录并行运行:音频流一边做语音检测与转录,一边由 Sortformer 模型输出"谁在说话"的片段,再与转录文本对齐。你拿到的不只是一段字,而是带编号的发言。
它适合两到四人同时交谈的场景:多人会议记录、访谈转写、直播字幕。默认模型支持 4 个说话人,覆盖多数办公场景。
与"先录音、后处理"的传统方式相比,差别主要体现在出结果的时间和占用上:
| 方面 | WhisperLiveKit 流式区分 | 传统离线处理 |
|---|---|---|
| 出结果时间 | 边说边出 | 等录音结束 |
| 内存占用 | 只保留定长说话人特征缓存 | 需存完整音频 |
| 说话人身份 | 会话内持续更新 | 每次离线重识别 |
原理通俗版:双缓存流式推理
Sortformer 把音频流切成约 1 秒的块,逐块顺序处理,而不是"整句听完再归人"。每处理一块,它会更新两块缓存:
- spkcache:存会话开始以来的说话人特征,相当于长期记忆,保证"张三还是张三";
- fifo:存最近几个块的特征,相当于短期记忆,负责跟上近期变化。
每块处理完,模型对每个说话人通道按帧输出概率(默认最多 4 个通道),连续属于同一人的帧被合并成带起止时间的说话人片段,再对齐到转录文本上。
# 示意流程,非真实源码 features = audio_to_mel(pcm_chunk) # 音频块转梅尔频谱 state, preds = model.forward_streaming_step( features, state, left_offset, right_offset) # state 内含 spkcache(长期)与 fifo(短期)两块缓存 segments = merge_consecutive_frames(preds) # 帧预测合并为带时间戳片段如何快速跑起来:一条命令安装并开启说话人区分
# 安装基础包与 Sortformer 依赖(支持 Python 3.11–3.13) pip install "whisperlivekit[diarization-sortformer]" # 启动带说话人区分的服务 wlk --model base --diarization如果用 Docker,执行docker compose up --build wlk-gpu-sortformer即可拉起预配置的 GPU 配置。
启动后打开 http://localhost:8000 开口说话,页面会显示带说话人编号的实时转录:
Speaker 1 00:00–00:04 先确认一下本季度的目标 Speaker 2 00:04–00:09 数据这边初版结果已经出来了
实战参数怎么调:说话人数量与实时延迟
--sortformer-max-speakers:声明本次会话最多几个说话人(1–4,默认 4)。模型按出现顺序保留前 N 个通道。一对一访谈设 2,可避免空通道干扰归因。--min-chunk-size:每次处理前的最小音频缓冲,默认 0.1 秒。值越小转录反馈越快;机器跟不上时适当调大。--pause-segmentation-seconds:停顿超过该秒数就形成一个稳定转录段,默认 5.0。发言切换频繁想更快落段就调小;长会议想句子更完整就调大。
另外,--sortformer-model-path可以直接指向本地的 .nemo 模型文件或模型目录,覆盖默认模型,省掉启动时的下载。
进阶玩法:多语言、实时翻译与 API 集成
- 多语言会议:
wlk --model large-v3 --diarization --language auto,模型自动判断语言,说话人标签保持不变。 - 实时翻译:
wlk --model large-v3 --diarization --target-language en,非英语会议边转边出英文,说话人编号保留。 - API 集成:原生 WebSocket 地址为
ws://localhost:8000/asr,返回的片段带speaker字段(-2 表示静音);同时提供 OpenAI 兼容 REST 接口,需以--diarization启动。
这套组合适合多人会议记录、访谈转写和直播字幕场景,默认 4 人模型在多数情况下够用;双缓存的实现可以看 whisperlivekit/diarization/sortformer_backend.py,完整参数与接口说明见 docs/configuration.md 和 docs/API.md。
【免费下载链接】WhisperLiveKitReal-time, local speech-to-text with streaming ASR, speaker diarization, translation, and OpenAI/Deepgram-compatible APIs.项目地址: https://gitcode.com/GitHub_Trending/wh/WhisperLiveKit
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考