接入 LiveKit 与 TurnSense 评分并改进模型曲线选择

This commit is contained in:
Xin Wang
2026-10-22 23:52:16 +08:00
parent c9b618e634
commit 19d4e3c767
38 changed files with 2652 additions and 58 deletions
+10 -2
View File
@@ -26,14 +26,14 @@ npm run dev
## 模型分数对比
点击时间轴上方的“模型分数对比”展开对比,默认收起。VAP / MaAI(紫色)、Smart Turn(青色)和 Silero VAD(橙色)共用录音的时间刻度、缩放、播放头及判断点参考线。点击或拖动曲线区域定位播放,悬停查看当时已产生的分数;点击空心评分点定位到原标注时刻。顶部显示播放位置最近的有效评分,暂无评分时显示“—”,不将缺失数据当作 0。
点击时间轴上方的“模型分数对比”展开对比,默认收起。VAP / MaAI(紫色)、Smart Turn(青色)、Silero VAD(橙色)、LiveKit v1-mini(蓝色)和 TurnSense 1.0(玫红色)共用录音的时间刻度、缩放、播放头及判断点参考线。点击或拖动曲线区域定位播放,悬停查看当时已产生的分数;点击空心评分点定位到原标注时刻。顶部显示播放位置最近的有效评分,暂无评分时显示“—”,不将缺失数据当作 0。
- 实线阶梯曲线来自对六通完整录音的真实推理,不是用44个点插值。MaAI每100ms输入一块音频,因流式重采样缓冲,部分评分间隔为200ms;Smart Turn每200ms计算一次,并包含原标注的精确时刻。
- MaAI使用双声道连续回放、20秒KV缓存,分数为 `1 - p_now[user]`,是接话候选分数,不是校准的EOT概率。Smart Turn沿用原回测的用户声道、过去ASR定位、500ms前置音频、3秒内续说及最多8秒窗口;没有额外的结束信号、VAD停止门槛或超时放行。
- 空心点保留原44点的独立窗口回测分数。尤其MaAI的连续状态与独立窗口不同,空心点可能不落在连续曲线上。原始44点指标不会被这次时间序列覆盖。
- Silero VAD 为用户声道逐个完整 32 ms 帧的真实 ONNX 推理,使用 `1 - speech_probability`,仅为非发声基线,不是语义 EOT 概率。时间戳为帧末;空心点取原判断时刻最后可用帧,不读取未来音频。独立环境和复现方法见 [Silero 实验说明](../../experiments/silero-vad/README.md)。
- 参考阈值只改变虚线位置,不修改人工标签。MaAI可选0.11、0.5、0.8,Smart Turn和Silero可选0.5、0.8。保存的分数不会随标注或转写编辑而重新计算。
- 三个模型名称旁各有独立显示开关,默认都打开。关闭后隐藏该模型的曲线、原标注点评分、参考线及分数读数;重新打开保留原阈值。全部关闭时显示提示,切换通话或收起再展开会保留当前显示选择。
- “选择模型”打开可搜索、按类型分组的多选面板,支持全选可用 / 清空;无评分模型保留在列表并说明状态。首次显示 VAP、Smart Turn、TurnSense 三条,之后记住显示选择和参考阈值,切换通话、收起和刷新均保留。紧凑图例只显示已选模型与当前分数,悬停或键盘聚焦会突出对应曲线。点击图例打开阈值和模型说明,可单独查看一个模型并恢复原选择。
- 仅在展开时读取当前项目录音的评分,并核对音频SHA256。更换为本地新录音、音频变化或没有对应推理数据时,不显示旧曲线。切换通话会取消旧请求,避免前一段数据覆盖当前段。
评分数据位于各模型实验目录的 `results/score-timeline.json`。更新数据时,在两个各自的本机uv环境中运行:
@@ -76,3 +76,11 @@ demo,5200,我明天下午,0,high,mid_turn_pause,A
- `GET /api/audio?path=...`:仅提供 `data` 内的 MP3、WAV、M4A、OGG、FLAC 和 WebM 录音,支持 Range 请求和 HEAD,便于跳转播放。路径相对 `data` 目录,不能通过 `..` 或符号链接访问目录之外的文件。
录音 `call_id` 默认取文件名去除扩展名后的部分;同一通话有多个项目录音时,默认使用发现的第一条,可点击“更换录音”重新关联本地文件。
### LiveKit v1-mini
新增蓝色 LiveKit v1-mini 曲线,默认显示、每 200 ms 更新,并包含 44 个判断点的精确分数。只接收判断前的用户声道,16 kHz 最近 1.2 秒音频。参考阈值默认采用锁定 SDK 的中文阈值 0.355,可切换 0.5 / 0.8。它通过 LiveKit Agents 本地推理入口运行,不加服务层 VAD 门槛、静音等待或超时;不将这些曲线称为完整在线策略表现。模型许可与复现说明见 [实验说明](../../experiments/livekit-v1-mini/README.md)。
### TurnSense 1.0 FP32
玫红色曲线为真实 ONNX 推理的 P(complete),每 200 ms 及原判断点精确时刻更新。输入仅为判断前的用户左声道,重采样到 16 kHz 后取最近 8 秒;官方前端/CMVN不改动。支持独立开关和 0.5 / 0.8 参考线。原生输出为 complete/incomplete/invalid 三分类,完整三项概率保存在实验 predictions.csv,原生 argmax complete 映射为可接话;网页 0.5 参考线不是原生 argmax 的等价规则。复现和评估结果见 [TurnSense 实验说明](../../experiments/turnsense-1.0/README.md)。