在Sherpa_onnx_asr 中支持 FireredASR
本文最后更新于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

关键要点

  1. 模型类型: FireredASR 基于阿里达摩院的 Paraformer 架构
  2. 支持语言: 中文、英文、方言(川普、津普、豫普)
  3. 模型规格:
    • int8:1.74GB(推荐 CPU)
    • fp16:2.34GB(需要 GPU 但 sherpa-onnx 预编译版不支持)
  4. 加载时间: 约 8 秒(首次加载模型到内存)
  5. API 参数: 使用 encoderdecodertokens,不需要 sample_rate/feature_dim

与其他模型的区别

特性SenseVoiceFireredASR
架构CTCParaformer
语言中英日韩粤中英+方言
配置参数sense_voice, use_itn=Trueencoder, decoder
模型文件单文件双文件(编码器+解码器)

集成完成!✅

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇