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

68 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# VAP / MaAI:机器人输入静音的用户语音评测
## 当前主评测口径:流式场景(2026-10-28)
本场景以 VAP 连续流式推理为主:从录音开始持续维护编码器和 VAP 状态,在每个当前标注 `decision_ms`,取可用时间不晚于它的最后一个分数。判断点不重置模型、不插值、不使用未来音频。分数为 `1 - p_now[user]`,预测规则为严格 `> 0.5`;这是活动预测到可接话的映射,不是原生校准 EOT 概率。
前端圆点、悬停分数和准确率统一使用这份连续输出。时间戳包括流式重采样缓冲;没有输出或分数年龄超过两倍标称更新间隔时记为不可用,单独计数,不填 0。保存新增或移动的标注后,用已有真实连续记录重新取点,无需重跑模型:
```bash
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 的机器人声道全程填零。保留时间轴、停顿及原采样长度,不把用户语音复制到两路、不混音,也不修改源录音或人工标签。用户声道本身已有的机器人串音不会因另一声道置零而消失。
## 运行
在项目根目录执行:
```bash
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`。