Granite-Speech-4.1-2B-Plus 是一个增强版 ASR (自动语音识别) 模型,包含更深的编码器和投影器。本项目提供其在华为 Ascend NPU 环境下的部署方案。
granite-speech-4.1-2b-plus-ascend/
├── inference.py # 推理脚本
├── test.log # 测试日志
├── README.md # 本文档source /usr/local/Ascend/ascend-toolkit/set_env.sh模型文件位于 /opt/atomgit/mxy/granite-speech-4.1-2b-plus/ 目录下:
cd granite-speech-4.1-2b-plus-ascend/
python3 inference.py| 指标 | 实测值 | 阈值 | 状态 |
|---|---|---|---|
| Max Error (mean) | 1.19e-07 | < 1e-5 | PASS |
| Max Error (std) | 1.86e-09 | < 1e-5 | PASS |
注: sum 阈值采用自适应策略, 基于 tensor 规模 (max(1e-2, 1e-4 * |sum|))
| 操作 | 耗时 |
|---|---|
| 模型加载 | 55.95s |
| CPU 参考计算 (20 tensors) | 4.57s |
| NPU 推理 (20 tensors) | 0.15s |
| 语音推理 (3s音频) | 19.71s |
2026-05-19 09:17:53,103 - INFO - Granite-Speech-4.1-2B-Plus ASR Ascend NPU Inference
2026-05-19 09:17:53,103 - INFO - Model path: /opt/atomgit/mxy/granite-speech-4.1-2b-plus
2026-05-19 09:18:50,371 - INFO - Model loaded on device: npu:0
2026-05-19 09:19:09,007 - INFO - Inference time: 18.601s
2026-05-19 09:19:13,486 - INFO - CPU computation time: 4.3122s
2026-05-19 09:19:13,486 - INFO - NPU inference time: 0.1537s
2026-05-19 09:19:13,487 - INFO - PRECISION TEST PASSEDimport torch
import numpy as np
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor
model_path = "/opt/atomgit/mxy/granite-speech-4.1-2b-plus"
device = torch.device("npu:0")
model = AutoModelForSpeechSeq2Seq.from_pretrained(
model_path,
dtype=torch.bfloat16,
low_cpu_mem_usage=True
).to(device).eval()
processor = AutoProcessor.from_pretrained(model_path)
speech = np.random.randn(16000 * 3).astype(np.float32)
inputs = processor(text="transcribe", audio=speech, return_tensors="pt")
input_ids = inputs["input_ids"].to(device)
with torch.no_grad():
output = model.generate(input_ids=input_ids, max_new_tokens=256)
transcription = processor.batch_decode(output, skip_special_tokens=True)[0]
print(transcription)GraniteSpeechProcessor 的调用方式:
inputs = processor(
text="transcribe", # 文本提示 (必需)
audio=speech, # 音频数据
return_tensors="pt"
)注意: text 是位置参数, 不是关键字参数。音频采样率从处理器配置中读取 (16000 Hz), 无需单独传递。
模型主要组件:
| 组件 | 说明 |
|---|---|
| language_model | Transformer 解码器 (GraniteForCausalLM) |
| encoder | 语音编码器 (GraniteSpeechPlusEncoder, 16层) |
| projector | Q-Former 投影器 |
问题: transformers 4.56.0 不支持 granite_speech_plus 模型类型
解决方案: 脚本会自动临时修改 config.json, 将 granite_speech_plus 改为 granite_speech 以加载模型。测试完成后恢复原配置。
问题: ReasoningEffort 类在新版 mistral_common 中不存在
解决方案: 脚本会自动 patch mistral_common.protocol.instruct.request, 添加空的 ReasoningEffort 类。
A: 检查 NPU 驱动是否正确安装, 确保 CANN 环境变量已 source。
A: 模型包含 3 个 safetensors 分片, 总计约 4GB。首次加载需要约 1 分钟。
A: 音频长度不影响推理, 模型使用动态卷积核处理变长输入。
本项目遵循 Granite-Speech-4.1-2B-Plus 原始许可证。