MMS-300M Forced Aligner 是基于 Wav2Vec2 架构的语音强制对齐模型,用于将文本与音频进行时间对齐。本项目提供其在华为 Ascend NPU 环境下的部署方案。
mms-300m-1130-forced-aligner-ascend/
├── inference.py # NPU推理测试脚本
├── test.log # 测试日志
├── README.md # 本文档MMS-300M Wav2Vec2ForCTC 模型包含以下组件:
| 组件 | 说明 | 参数数量 |
|---|---|---|
| FeatureEncoder | 7层CNN特征提取器 | ~1.2M |
| FeatureProjection | LayerNorm + Linear | ~0.5M |
| PosConvEmbed | 位置卷积嵌入 | ~0.1M |
| Wav2Vec2Encoder | 24层Transformer | ~445M |
| lm_head | CTC输出层 | ~31K |
总参数量: 449,687,199
source /usr/local/Ascend/ascend-toolkit/set_env.shcd mms-300m-1130-forced-aligner-ascend/
python3 inference.pycd mms-300m-1130-forced-aligner-ascend/
python3 inference.py --precision_test| 指标 | 结果 |
|---|---|
| 输入形状 | torch.Size([1, 48000]) |
| 输出形状 | torch.Size([1, 149, 31]) |
| 推理设备 | npu:0 |
| 推理耗时 | ~4.6s |
| 指标 | 实测值 | 阈值 | 状态 |
|---|---|---|---|
| Max Error (sum) | 1.22e-04 | < 1e-3 | PASS |
| Max Error (mean) | 5.96e-08 | < 1e-5 | PASS |
| Max Error (std) | 2.98e-08 | < 1e-5 | PASS |
| 操作 | 耗时 |
|---|---|
| 模型加载 | ~6s |
| CPU 参考计算 (20 tensors) | 0.02s |
| NPU 推理 (20 tensors) | 0.24s |
| 端到端推理 (3秒音频) | ~4.6s |
2026-05-19 12:17:06,322 - INFO - MMS-300M Forced Aligner Ascend NPU Inference
2026-05-19 12:17:06,322 - INFO - Loading MMS-300M model from /opt/atomgit/mxy/mms-300m-1130-forced-aligner
2026-05-19 12:17:12,564 - INFO - Model loaded! Params: 449687199
2026-05-19 12:17:12,679 - INFO - Input waveform: torch.Size([1, 48000])
2026-05-19 12:17:16,966 - INFO - Logits: torch.Size([1, 149, 31]), Time: 4281.25ms, Device: npu:0A: 确保 FeatureEncoder 的 forward 方法正确添加了 channel 维度 unsqueeze(1)
A: 检查 key_to_model_path 映射是否完整覆盖了所有权重 key