Files
xiaobailing-turn-detection/experiments/maai-ch-kyoto/仅用户评测说明.md
T

6.1 KiB
Raw Blame History

VAP / MaAI:机器人输入静音的用户语音评测

当前主评测口径:流式场景(2026-10-28)

本场景以 VAP 连续流式推理为主:从录音开始持续维护编码器和 VAP 状态,在每个当前标注 decision_ms,取可用时间不晚于它的最后一个分数。判断点不重置模型、不插值、不使用未来音频。分数为 1 - p_now[user],预测规则为严格 > 0.5;这是活动预测到可接话的映射,不是原生校准 EOT 概率。

前端圆点、悬停分数和准确率统一使用这份连续输出。时间戳包括流式重采样缓冲;没有输出或分数年龄超过两倍标称更新间隔时记为不可用,单独计数,不填 0。保存新增或移动的标注后,用已有真实连续记录重新取点,无需重跑模型:

cd experiments/maai-ch-kyoto
uv run --locked python evaluate_streaming.py all
配置 当前主结果目录 正确数 / 有效点 准确率 FP / FN
CPC 降噪双声道 results/streaming/cpc-stereo/ 30 / 44 68.18% 7 / 7
CPC 降噪机器人静音 results/streaming/cpc-user-only/ 24 / 44 54.55% 18 / 2
Mimi 标准双声道 results/streaming/mimi-standard/ 31 / 44 70.45% 5 / 8
Mimi 降噪双声道 results/streaming/mimi-mc/ 34 / 44 77.27% 5 / 5

本次 44 点均有可用输出,来自同六通录音、22 个可接话与 22 个不可接话标签。每个目录包含 predictions.csv、summary.json 和前端 score-timeline.json;CSV 记录判断时间、实际评分时间及分数年龄,JSON 保留源记录、标签和评估代码的哈希。总表为 results/streaming/comparison-summary.json,文字说明为 results/streaming/对比分析.txt。

本次复用已有真实连续推理记录,没有新做模型推理或计算延迟实验。它仍是选定判断点上的分类评估,不等同于 LiveKit 的静音区间误抢话与结束延迟策略评估,也不代表完整在线系统的响应延迟。原始独立窗口结果保留作为历史诊断,不能与本表混用。重新运行原推理入口的 all 模式(CPC 双声道为 export_timeline.py)后会自动刷新对应流式目录;四配置对比统一用上述命令更新。

历史独立窗口及原始连续推理记录

以下记录说明原始实验、权重和独立窗口诊断。所述独立点评分及旧指标不是当前流式场景的主结果;前端已切换为上方流式目录。

本实验复用 MaAI ch_kyoto 的独立 uv 环境和同一组 VAP/CPC 权重,新增一个输入对照:保留索引 0 的用户声道,索引 1 的机器人声道全程填零。保留时间轴、停顿及原采样长度,不把用户语音复制到两路、不混音,也不修改源录音或人工标签。用户声道本身已有的机器人串音不会因另一声道置零而消失。

运行

在项目根目录执行:

cd experiments/maai-ch-kyoto
uv run --locked python run_user_only.py smoke
uv run --locked python run_user_only.py all

已有 .venv 和权重直接复用,无需重新下载。smoke 执行真实判断点两次,验证固定种子下结果一致,并验证机器人声道、未来音频的变化不影响输入和结果;evaluate 只计算判断点;all 同时生成判断点评测和六通录音连续评分。

本次执行机器为本机 Apple M4 Mac mini、16 GB 内存,使用 CPU、4 个计算线程和 1 个 inter-op 线程。Python 3.11.15,MaAI 0.2.22,PyTorch 2.14.1,transformers 5.5.3;其余实际依赖、平台、权重 SHA256、uv.lock 和脚本哈希写入输出的 provenance。Python、NumPy 和 PyTorch 种子均为 42。

输入与评分

  • 每个判断点独立重置 CPC/VAP,取判断前最多 20 秒历史,按 100 ms 对齐并保持末帧结束于精确 decision_ms;先裁取收到的音频,再置零机器人输入、重采样至 16 kHz。逐帧处理,不读取判断点之后的音频,不使用标注转写作为模型输入。
  • 主分数与现有前端一致,为 1 - p_now[user],默认规则为分数严格大于 0.5 可以接话。p_now 是说话活动预测,该映射不是官方校准的 EOT 概率;不加入外部结束信号、VAD 静音门槛或超时放行。
  • 同时在相同的当前判断点重跑双声道对照,使用相同用户输入、20 秒窗口、分数映射和阈值。原有双声道结果及前端曲线保留,避免因当前标注点有调整而混用旧点评分。
  • 连续曲线按完整录音持续更新 CPC 和 20 秒 KV cache,机器人输入全程为零。使用流式重采样,时间戳包含重采样缓冲;录音尾部不补虚构静音。连续状态与独立窗口不同,因此空心判断点可能不落在连续曲线上。
  • 这是当前选定判断点上的探索性分类评估,不等同于 LiveKit 的区间误抢话和结束延迟策略评估。实际标签来源与音频哈希随结果保存。

输出与前端

输出位于本目录 results/user-only/:

文件 内容
predictions.csv 当前判断点的仅用户分数、同点双声道对照、原生活动预测、窗口和重放计算耗时。
errors.csv 仅用户版本阈值 0.5 下的错误点;没有错误时不生成。
thresholds.csv 不同参考阈值下的分类指标,仅用于分析,不据此声称独立测试集最优效果。
summary.json 汇总、每通话指标、同点双声道对照、种子和输入不变性校验、来源哈希。
score-timeline.json 模型 ID 为 maai_user_only 的连续曲线与独立判断点评分。

在工作台展开“模型分数对比”→“选择模型”→勾选 VAP / MaAI(仅用户)。橄榄绿色曲线支持独立显示、0.11 / 0.5 / 0.8 参考线、悬停分数和点击判断点。原紫色 VAP / MaAI 仍为双声道版。模型输入静音不改变页面播放的原始录音。

本次仅用户判断点来自运行时的“工作数据”;原有双声道曲线的空心点保留此前回测位置。严格同点比较使用本次 predictions.csv 的 stereo_can_reply_score 和 summary.json 的 same_point_stereo_reference。