本文最后更新于182 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com
FireredASR 集成总结
1. 修改 ASR 实现类
文件: sherpa_onnx_asr.py
1.1 添加构造函数参数
def __init__(
self,
# ... 其他参数 ...
fire_red_asr_encoder: str = "",
fire_red_asr_decoder: str = "",
# ... 其他参数 ...
):
# ... 其他初始化代码 ...
self.fire_red_asr_encoder = fire_red_asr_encoder
self.fire_red_asr_decoder = fire_red_asr_decoder
1.2 在 _create_recognizer 方法中添加分支
def _create_recognizer(self):
# ... 其他 model_type 的处理 ...
elif self.model_type == "fire_red_asr":
recognizer = sherpa_onnx.OfflineRecognizer.from_fire_red_asr(
encoder=self.fire_red_asr_encoder,
decoder=self.fire_red_asr_decoder,
tokens=self.tokens,
num_threads=self.num_threads,
decoding_method=self.decoding_method,
debug=self.debug,
provider=self.provider,
)
return recognizer
2. 更新配置验证模型
文件: asr.py
2.1 添加到 model_type 枚举
class SherpaOnnxASRConfig(BaseModel):
model_type: Literal[
"transducer",
"paraformer",
"nemo_ctc",
"wenet_ctc",
"whisper",
"tdnn_ctc",
"sense_voice",
"fire_red_asr", # 新增
] = Field(
default="sense_voice",
description="Type of the ASR model"
)
2.2 添加配置字段
# FireredASR 模型路径
fire_red_asr_encoder: str = Field(
default="",
description="Path to the FireredASR encoder model (.onnx file)"
)
fire_red_asr_decoder: str = Field(
default="",
description="Path to the FireredASR decoder model (.onnx file)"
)
2.3 添加验证逻辑
@model_validator(mode="after")
def check_model_paths(self) -> "SherpaOnnxASRConfig":
# ... 其他验证逻辑 ...
elif self.model_type == "fire_red_asr":
if not self.fire_red_asr_encoder:
raise ValueError(
"fire_red_asr_encoder is required when model_type is 'fire_red_asr'"
)
if not self.fire_red_asr_decoder:
raise ValueError(
"fire_red_asr_decoder is required when model_type is 'fire_red_asr'"
)
if not self.tokens:
raise ValueError(
"tokens file is required when model_type is 'fire_red_asr'"
)
return self
3. 更新配置模板
文件: conf.default.yaml 和 conf.ZH.default.yaml
3.1 添加到 model_type 选项
sherpa_onnx_asr:
model_type: 'sense_voice' # 可选值包含: 'fire_red_asr'
3.2 添加配置示例(中文版)
# --- 对于 model_type: 'fire_red_asr' (FireredASR) ---
# FireredASR (阿里达摩院 Paraformer) - 高性能中英文识别
# 支持 fp16 和 int8 量化版本
# fire_red_asr_encoder: './models/sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16/encoder.int8.onnx'
# fire_red_asr_decoder: './models/sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16/decoder.int8.onnx'
# tokens: './models/sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16/tokens.txt'
3.3 添加配置示例(英文版)
# --- For model_type: 'fire_red_asr' (FireredASR) ---
# FireredASR (Alibaba DAMO Academy Paraformer) - High-performance Chinese/English ASR
# Supports fp16 and int8 quantized versions
# fire_red_asr_encoder: './models/sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16/encoder.int8.onnx'
# fire_red_asr_decoder: './models/sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16/decoder.int8.onnx'
# tokens: './models/sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16/tokens.txt'
4. 下载模型
使用 huggingface-cli 下载:
# int8 版本(推荐 CPU)
uv run hf download csukuangfj/sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16 --local-dir models/sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16
# fp16 版本(需要 GPU 支持)
uv run hf download csukuangfj/sherpa-onnx-fire-red-asr-large-zh_en-fp16-2025-02-16
复制到项目目录:
xcopy /E /I /Y "C:\Users\<username>\.cache\huggingface\hub\models--csukuangfj--sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16\snapshots\<hash>" ".\models\sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16"
5. 配置使用
文件: conf.yaml
asr_config:
asr_model: 'sherpa_onnx_asr'
sherpa_onnx_asr:
model_type: 'fire_red_asr'
fire_red_asr_encoder: './models/sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16/encoder.int8.onnx'
fire_red_asr_decoder: './models/sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16/decoder.int8.onnx'
tokens: './models/sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16/tokens.txt'
num_threads: 4
provider: 'cpu' # 'cpu' 或 'cuda'
use_itn: False
关键要点
- 模型类型: FireredASR 基于阿里达摩院的 Paraformer 架构
- 支持语言: 中文、英文、方言(川普、津普、豫普)
- 模型规格:
- int8:1.74GB(推荐 CPU)
- fp16:2.34GB(需要 GPU 但 sherpa-onnx 预编译版不支持)
- 加载时间: 约 8 秒(首次加载模型到内存)
- API 参数: 使用
encoder、decoder、tokens,不需要sample_rate/feature_dim
与其他模型的区别
| 特性 | SenseVoice | FireredASR |
|---|---|---|
| 架构 | CTC | Paraformer |
| 语言 | 中英日韩粤 | 中英+方言 |
| 配置参数 | sense_voice, use_itn=True | encoder, decoder |
| 模型文件 | 单文件 | 双文件(编码器+解码器) |
集成完成!✅









