验证报告
可懂度(SenseVoice iic/SenseVoiceSmall,8 句固定测试)
测试句:
- 你好世界,今天天气真不错,适合出去散步。
- 机器服务员的生产厂家介绍说这款产品很好用。
- 从八月九日十九时到八月十二日上午十时。
- 中国人民银行决定下调存款准备金率。
- 人工智能技术正在改变我们的生活方式。
- 今天中午我想吃一碗牛肉面。
- 北京是中国的首都,有着悠久的历史文化。
- 请问最近的医院在哪里。
| 配置 | 女声 CER | 男声 CER |
|---|---|---|
| CPU 全 fp32(ONNX) | 0.075 | 0.108 |
注:日期句(#3)的系统性偏差为 SenseVoice itn 转写差异("上午十时"→"上午10"), 非语音错误。去掉该句后女声 CER 约 0.02。
性能(AX650N,10.126.35.115,Ubuntu 22.04)
| 输入 | acoustic(CPU) | vocoder(NPU) | 总耗时 | 有效音频 | RTF |
|---|---|---|---|---|---|
| 女声 21 字 | 0.32s | 0.32s | 0.65s | 4.04s | 0.161 |
| 男声 15 字 | 0.31s | 0.30s | 0.63s | 3.31s | 0.191 |
| 女声 19 字 | 0.30s | 0.30s | 0.62s | 4.11s | 0.151 |
| 长句(分块 526 帧) | 0.30s | 0.61s | 0.93s | 5.61s | 0.166 |
NPU 量化验证结论
声学模型(text→mel):NPU 量化不可行
| 方案 | 结果 |
|---|---|
| int8(Percentile/BRecQ) | duration 偏差 13%、mel 渲染 CER~0.9 |
| U16(激活+权重) | 同上(duration 偏差 13%) |
| 混合精度 | Pulsar2 编译失败(AxLayerNorm tiling bug) |
| FP16/F32 | Pulsar2 7.0 不支持 |
根因:VITS 的 flow(仿射耦合)+ duration(对数尺度)对 8/16-bit 量化系统性敏感。 → 声学模型必须 CPU fp32(AX650N 实测 0.30s/句)。
声码器(mel→wav):NPU int8 可用
- Pulsar2 7.0 编译,
onnx_opt.enable_onnxsim: true必须开启 (BigVGAN edge-pad 节点会导致 AxPad shape 错误) - 对多数句子可懂(男声真机 CER 0.000);个别句子有轻微质量波动
- 板上 CPU fp32 vocoder 实测 >30s/句(rtf>5)不可用 → vocoder 必须 NPU
音质优化要点(训练/推理)
- 数据:CosyVoice 官方音色(女)生成 150 条/音色,比原始语料更干净
- 训练:声码器感知 GAN(mel→冻结 BigVGAN→MPD/MSD)+ 句尾采样
tail_bias=0.4 - 节奏:
length_scale女 0.7 / 男 0.85(音节时长贴近自然 180ms) - 尾字:
tail_stretch()句尾 mel 20→45 帧拉伸(模型句尾音节 duration 偏短)