6.1 KiB
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。