MooER(摩耳)是摩尔线程推出的基于大语言模型(LLM)的语音识别与翻译模型,本项目针对华为昇腾NPU进行了适配。
本仓库包含MooER-MTL-80K的昇腾NPU适配版本,并已完成推理验证、精度确认及性能基准测试。
| 组件 | 描述 | 参数规模 |
|---|---|---|
| 编码器 | Paraformer(SANMEncoder) | 158M |
| 适配器 | 线性下采样 + 投影 | 9.4M |
| 大语言模型 | Qwen2-7B-Instruct + LoRA | 7.6B |
处理流程: 音频(16kHz)-> FBank特征 -> LFR(长时特征重塑)-> CMVN( cepstral均值方差归一化)-> Paraformer编码器 -> 线性适配器 -> Qwen2-7B(已合并LoRA)-> 文本
| 项目 | 版本 |
|---|---|
| NPU | 昇腾910(2颗) |
| CANN | 8.5.1 |
| PyTorch | 2.9.0 |
| torch_npu | 已安装 |
| Python | 3.11 |
mooer/utils/utils.py中添加torch_npu支持,采用基于优先级的设备选择机制torch.musa.amp.autocast / torch.cuda.amp.autocast替换为torch.npu.amp.autocastsoundfile + scipy.signal.resample进行音频输入输出(NPU环境下torchcodec不可用)npu:0设备inference_npu.py - NPU推理脚本(支持单WAV文件和批量SCP文件模式)eval_npu_simple.py - 精度与性能基准测试脚本eval_accuracy.py - NPU与CPU精度对比脚本src/mooer/utils/utils.py - 新增NPU设备注册功能| 指标 | 数值 | 阈值 | 状态 |
|---|---|---|---|
| NPU与CPU文本匹配度 | 完全匹配 | < 1% 误差 | 通过 |
| 字符错误率(CER) | 0.00% | < 1% | 通过 |
| NPU一致性(5次运行) | 100% | - | 通过 |
CPU参考输出:
欢迎使用由摩尔线程开发的基于大语言模型的语音识别及语音翻译系统NPU 输出(所有 5 次运行结果一致):
欢迎使用由摩尔线程开发的基于大语言模型的语音识别及语音翻译系统| 指标 | 数值 |
|---|---|
| 模型加载时间 | 134.75秒 |
| 平均推理时间 | 0.734秒 |
| 推理时间标准差 | 0.004秒 |
| CPU推理时间 | 277.29秒 |
| NPU相对CPU加速比 | 378倍 |
| 运行次数 | 时间(秒) | 字符错误率(CER) | 文本匹配 |
|---|---|---|---|
| 1 | 0.734 | 0.00% | 通过(PASS) |
| 2 | 0.736 | 0.00% | 通过(PASS) |
| 3 | 0.738 | 0.00% | 通过(PASS) |
| 4 | 0.727 | 0.00% | 通过(PASS) |
| 5 | 0.733 | 0.00% | 通过(PASS) |
# Install dependencies
pip install torch_npu transformers peft soundfile scipy numpy
pip install modelscope
# Or use requirements
pip install -r requirements.txt# Download MooER-MTL-80K
modelscope download --model MooreThreadsSpeech/MooER-MTL-80K
# Download Qwen2-7B-Instruct
modelscope download --model Qwen/Qwen2-7B-Instruct --local_dir ./pretrained_models/Qwen2-7B-Instruct# Single file inference
PYTHONPATH=src:$PYTHONPATH python3 inference_npu.py \
--wav_path demo/resources/demo.wav \
--task asr
# Batch inference with SCP file
PYTHONPATH=src:$PYTHONPATH python3 inference_npu.py \
--wav_scp test.scp \
--task asr \
--batch_size 10# Quick NPU benchmark (5 iterations)
PYTHONPATH=src:$PYTHONPATH python3 eval_npu_simple.py
# Full NPU vs CPU accuracy comparison
PYTHONPATH=src:$PYTHONPATH python3 eval_accuracy.pyuttid1 /path/to/audio1.wav
uttid2 /path/to/audio2.wav原始模型:MooreThreadsSpeech/MooER-MTL-80K
GitHub:MooreThreads/MooER
论文:MooER: LLM-based Speech Recognition and Translation Model from Moore Threads
MIT许可证。详情参见LICENSE。
@article{liang2024mooer,
title = {MooER: an LLM-based Speech Recognition and Translation Model from Moore Threads},
author = {Zhenlin Liang, Junhao Xu, Yi Liu, Yichao Hu, Jian Li, Yajun Zheng, Meng Cai, Hua Wang},
journal = {arXiv preprint arXiv:2408.05101},
url = {https://arxiv.org/abs/2408.05101},
year = {2024}
}