拓冰建站拓冰建站
首页 / 资讯中心 / 正文

WhisperLiveKit 说话人区分:一行参数跑通

WhisperLiveKit 说话人区分一行参数跑通【免费下载链接】WhisperLiveKitReal-time, local speech-to-text with streaming ASR, speaker diarization, translation, and OpenAI/Deepgram-compatible APIs.项目地址: https://gitcode.com/GitHub_Trending/wh/WhisperLiveKitWhisperLiveKit 转一场三人远程会议不开说话人区分时出来的结果就是Speaker 1 / Speaker 2混在一起我得听着录音一条条手动改归属。把实时说话人区分打开之后标签跟着字幕一起吐出来会议纪要不用再事后返工。流式说话人区分和事后批处理差在哪WhisperLiveKit 流式说话人区分事后批处理分离标签产生时机与转写同时录音上传后统一处理说话人身份按出现顺序分配全程稳定可能重新聚类标签会漂移内存占用滚动缓存不随会议时长增长需加载整段音频适合场景实时会议、远程通话、直播已录好音频的归档整理实时转写的 ASR 精度已经是成熟方案缺的恰恰是这句话是谁说的。加一个--diarization参数同一套服务就能直接用于多人场景——这也是它值得单独拿出来讲的原因。安装和启动只需要两条命令pip install whisperlivekit[diarization-sortformer] wlk --model medium --diarization --language zh第一行装基础包和 Sortformer 依赖的 NeMo第二行就启动了带说话人区分的服务。默认模型nvidia/diar_streaming_sortformer_4spk-v2首次运行自动下载最多支持 4 个说话人CPU 和 GPU 都能跑。服务默认监听 8000 端口浏览器打开就是实时转写页面不想用界面也可以把麦克风流直接发到 WebSocket 端点/asr界面上每条转写都带着说话人标签谁在发言就实时切到谁。底层机制全量档案 近况快照一句话模型带着两块记忆一块是从会话开始一路积累的全量档案存所有出现过的说话人特征另一块只保留最近一秒音频的近况快照。每一段新音频进来都对这两块记忆做一次比对再输出当前是谁在说话。块长是写死的10 帧 × 下采样因子 10 × 10ms 帧移正好 1 秒。每秒一个块走完一次 Sortformer 流式推理两块记忆各更新一次产出一批带说话人的片段。编号按首次出现顺序分配第一个开口的人是 Speaker 0第二个是 Speaker 1整场不再变动——前端标签才不会跳。核心循环简化后大概是这样# 每个 1 秒音频块特征 - 流式推理 - 说话人片段 state, preds model.forward_streaming_step(mel_features, state) segments process_predictions(preds) # - [Speaker 0: 1.0-1.4, Speaker 1: 1.4-2.0]完整实现在 sortformer_backend.py状态结构就是档案 快照两组张量翻一遍就能看懂。两个顺手就能用的场景远程会议实时字幕。前端把麦克风 PCM 流发过去后端回带说话人标签的转写走 API 时还可以要diarized_json格式每段文字都带 speaker 和起止时间。三人会议的话启动时把说话人上限声明掉wlk --model medium --diarization --sortformer-max-speakers 3--sortformer-max-speakers是声明不是估计——它按到达顺序保留前 N 个说话人通道。参会人数固定的会议声明一下标签空间收窄前端只需维护 3 种颜色。访谈、播客录音归档 ️两人对谈其实是最划算的用法服务照常起结果回传的是带 speaker 和时间段的分片 JSON按人聚合发言时长就是现成的统计。两人场景直接--sortformer-max-speakers 2即可模型里多出来的两个空通道不用管。之后按 speaker 字段 group by 出一张人 × 时长的表访谈纪要骨架就有了。调参速查和两个高频坑参数默认值建议值适用场景--sortformer-max-speakers4模型上限2~3参会人数已知--sortformer-model-pathHF 默认模型本地.nemo文件离线环境 / 自定义模型--diarization-backendsortformer保持默认Python 3.13 下只能用它超过 4 个人会不会乱会。默认模型的通道数就是 4超过 4 人标签必然串。这种情况要么拆成多场小组进行要么换--diarization-backend diart注意 diart 只支持 Python 3.11 / 3.123.13 请用 sortformer。长时间静音后时间戳会不会漂Python 集成时VAD 判定长静音后手动调一次insert_silence(秒数)把时间偏移对齐后面片段的起始时间就不会整体偏移内置 Web 界面帮你处理掉了不用操心。--model的选型也会影响整体延迟仓库里有一组 H100 上测的转写速度-精度散点图选模型时可以对着看把--diarization加到启动命令里谁说了什么当场就有答案。建议明天早会先试一场。【免费下载链接】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),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门