# MindSync Scoring v0.1

状态：`Beta / provisional`  
适用范围：Phase 0 单词目标音训练与长句诊断 Demo  
目的：在保留 SpeechAce 原始证据的前提下，验证 MindSync 自有评分结构。

## 1. 评分边界

- SpeechAce 是声学证据提供方，不是最终产品评分标准。
- `providerScore`、原始 JSON 与 `mindSyncScore` 必须同时保留。
- v0.1 只评估音频中能够观察到的结果，不评估真实嘴形、舌位或肌肉动作。
- 评分版本固定为 `mindsync-v0.1`；300 组真人数据完成盲标后发布新版本，不覆盖历史结果。

## 2. 线性校准

所有可用的 SpeechAce 0–100 分数先经过：

```text
strict(x) = clamp(2 × x - 100, 0, 100)
```

| SpeechAce | MindSync v0.1 |
|---:|---:|
| 70 | 40 |
| 80 | 60 |
| 85 | 70 |
| 90 | 80 |
| 95 | 90 |
| 100 | 100 |

## 3. 单词目标音

```text
目标音分 = 70% × 目标音平均 strict 分
         + 30% × 目标音最低区间 strict 分

基础分 = 75% × 目标音分
       + 15% × 其他音素最低区间分
       + 10% × 整词 strict 分
```

关键规则：

- 多候选识别不是目标词：最高 39 分（接口已预留，v0.1 尚未启用多候选请求）。
- API 未返回目标音：不给出精确分数，要求重录。
- 已知关键替换，如 `SH→S/HH`、`P→B`：最高 59 分。
- 其他明确目标音替换：最高 69 分。
- 已确认的附加音：最高 69 分（接口已预留，需专项尾音检测或多候选证据后启用）。

## 4. 长句诊断

```text
基础分 = 45% × 本题重点音分
       + 25% × 全句最低 25% 音素平均分
       + 20% × 全部音素平均分
       + 10% × 单词平均分
```

- 少于一半重点音出现替换：最高 79 分。
- 至少一半重点音出现替换：最高 69 分。
- 完整度 90–99：最高 79 分。
- 完整度低于 90：最高 69 分。
- 每个明确重音错位扣 4 分，最多扣 12 分。

## 5. 初始偏误表

| 目标音 | 已知候选偏误 |
|---|---|
| SH | S、HH |
| S | SH |
| AH | AA |
| P | B |
| G | AX、AH |
| DH | D |
| TH | S、T |
| R | L |
| N | L |
| V | W |

此表只用于路由与封顶，不能替代真人盲标结论。

## 6. 输出合同

每次结果至少包含：

```json
{
  "providerScore": 94,
  "mindSyncScore": 59,
  "scoring": {
    "version": "mindsync-v0.1",
    "provisional": true,
    "baseScore": 88,
    "finalScore": 59,
    "confidence": "high",
    "hardCap": 59,
    "capReason": "关键音 SH 更接近 HH",
    "mouthShapeStatus": "not_assessed",
    "evidence": []
  }
}
```

## 7. 300 组数据后的 v1 校准

1. 由 Jessie 与另一名教练在不知道 API 结果的情况下独立标注。
2. 按参与者而不是录音随机拆分训练集、验证集和测试集。
3. 分别评估五个重点音的 Precision、Recall、Specificity 与重复一致性。
4. 只有正确、错误两组返回值的差异显著大于重复录音波动时，才保留自动评分规则。
5. 用真人数据替换线性函数、候选偏误阈值和硬封顶参数，发布新的评分版本。

