ONNX 模型库
返回模型

说明文档

Sherpa ONNX 语音识别模型 - INT8 量化合集

这是一组针对边缘设备和生产环境优化的 INT8 量化 语音转文字模型合集。所有模型均采用动态量化技术,在保持准确率的同时将模型大小减少约 50%。

🎯 模型概览

本合集包含覆盖 7 种语言的 17 个 INT8 量化模型

语言 模型数量 架构 适用场景
🇬🇧 英语 5 个模型 Kroko + NeMo 游戏、阅读、通用
🇩🇪 德语 2 个模型 Kroko 通用
🇪🇸 西班牙语 2 个模型 Kroko 通用
🇫🇷 法语 2 个模型 Kroko 通用
🇹🇷 土耳其语 2 个模型 Kroko 通用
🇮🇹 意大利语 2 个模型 Kroko 通用
🇵🇹 葡萄牙语 2 个模型 Kroko 通用

总大小: 2.38 GB(全部为 INT8 量化)

📦 模型详情

Kroko 模型(社区版)

Kroko 模型是基于 Zipformer2 架构和 Transducer 解码器的高质量流式 ASR 模型。

德语(DE)

  • kroko_64l:147 MB(64 层编码器)
  • kroko_128l:147 MB(128 层编码器)

英语(EN)

  • kroko_64l:147 MB(64 层编码器)
  • kroko_128l:147 MB(128 层编码器)

西班牙语(ES)

  • kroko_64l:147 MB(64 层编码器)
  • kroko_128l:147 MB(128 层编码器)

法语(FR)

  • kroko_64l:147 MB(64 层编码器)
  • kroko_128l:147 MB(128 层编码器)

土耳其语(TR)

  • kroko_64l:147 MB(64 层编码器)
  • kroko_128l:147 MB(128 层编码器)

意大利语(IT)

  • kroko_64l:147 MB(64 层编码器)
  • kroko_128l:147 MB(128 层编码器)

葡萄牙语(PT)

  • kroko_64l:147 MB(64 层编码器)
  • kroko_128l:147 MB(128 层编码器)

NeMo CTC 模型(英语)

针对实时应用优化的超快速 CTC 模型:

  • nemo_ctc_80ms:126 MB - 超快速(80ms 延迟),适用于游戏
  • nemo_ctc_480ms:126 MB - 均衡型(480ms 延迟),适用于阅读
  • nemo_ctc_1040ms:126 MB - 高精度(1040ms 延迟)

🚀 快速开始

安装

pip install sherpa-onnx

使用示例

import sherpa_onnx

# 使用英语 Kroko 模型初始化识别器
config = sherpa_onnx.OnlineRecognizerConfig(
    transducer=sherpa_onnx.OnlineTransducerModelConfig(
        encoder=\"models/en/kroko_64l/encoder.int8.onnx\",
        decoder=\"models/en/kroko_64l/decoder.int8.onnx\",
        joiner=\"models/en/kroko_64l/joiner.int8.onnx\",
    ),
    tokens=\"models/en/kroko_64l/tokens.txt\",
    num_threads=4,
)

recognizer = sherpa_onnx.OnlineRecognizer(config)

# 创建流并处理音频
stream = recognizer.create_stream()
# ... 添加音频样本 ...
# result = recognizer.get_result(stream)

使用示例(NeMo CTC)

import sherpa_onnx

# 使用 NeMo CTC 模型初始化识别器
config = sherpa_onnx.OnlineRecognizerConfig(
    ctc=sherpa_onnx.OnlineCtcModelConfig(
        model=\"models/en/nemo_ctc_80ms/model.int8.onnx\",
    ),
    tokens=\"models/en/nemo_ctc_80ms/tokens.txt\",
    num_threads=4,
)

recognizer = sherpa_onnx.OnlineRecognizer(config)

📊 模型架构

Kroko(Transducer)

  • 编码器:Zipformer2,64 或 128 层
  • 解码器:RNN-T 解码器(有状态)
  • 联合器:简单前馈网络
  • 格式:ONNX INT8 量化
  • 组件:3 个文件(encoder.int8.onnx、decoder.int8.onnx、joiner.int8.onnx)

NeMo(CTC)

  • 架构:Fast Conformer with CTC
  • 格式:ONNX INT8 量化
  • 组件:1 个文件(model.int8.onnx)

🎮 推荐使用场景

游戏应用(Word Sniper、Word Wave)

  • 最佳选择nemo_ctc_80ms - 超低延迟(80ms)
  • 替代方案kroko_64l - 更高准确率,延迟可接受

阅读练习(Echo Challenge)

  • 最佳选择nemo_ctc_480ms - 延迟和准确率均衡
  • 替代方案kroko_64l - 对复杂句子有更高准确率

通用语音转文字

  • 最佳选择kroko_128l - 最高准确率
  • 替代方案kroko_64l - 推理速度更快,准确率良好

低端设备(512MB-1GB RAM)

  • 最佳选择kroko_64l - 编码器更小,内存占用更低

🔧 量化详情

所有模型均使用 ONNX Runtime 动态量化

from onnxruntime.quantization import quantize_dynamic, QuantType

quantize_dynamic(
    model_input=\"encoder.onnx\",
    model_output=\"encoder.int8.onnx\",
    weight_type=QuantType.QUInt8
)

优势:

  • ✅ ~50% 大小缩减(Kroko 编码器从 148 MB → 146 MB)
  • ✅ CPU 上推理更快
  • ✅ 更低的内存占用
  • ✅ 极小的精度损失(WER 增加小于 2%)

📁 目录结构

models/
├── de/
│   ├── kroko_64l/
│   │   ├── encoder.int8.onnx
│   │   ├── decoder.int8.onnx
│   │   ├── joiner.int8.onnx
│   │   └── tokens.txt
│   └── kroko_128l/
│       └── ...
├── en/
│   ├── kroko_64l/
│   ├── kroko_128l/
│   ├── nemo_ctc_80ms/
│   │   ├── model.int8.onnx
│   │   └── tokens.txt
│   ├── nemo_ctc_480ms/
│   └── nemo_ctc_1040ms/
├── es/
│   ├── kroko_64l/
│   └── kroko_128l/
├── fr/
│   ├── kroko_64l/
│   └── kroko_128l/
├── tr/
│   ├── kroko_64l/
│   └── kroko_128l/
├── it/
│   ├── kroko_64l/
│   └── kroko_128l/
└── pt/
    ├── kroko_64l/
    └── kroko_128l/

🌟 致谢与说明

Kroko 模型

这些模型源自 Banafo Kroko ASR 项目,这是一个开源的多语言语音识别计划。

  • 原始来源Banafo/Kroko-ASR
  • 社区模型:所有 Kroko 模型(DE、EN、ES、FR、TR、IT、PT)均为社区版本
  • 架构:Zipformer2 + Transducer
  • 训练:基于 Next-gen Kaldi 框架
  • 许可证:Apache 2.0

特别感谢 Banafo 团队 提供具有流式处理能力的高质量多语言 ASR 模型。

Kroko 模型变体

  • 64L:64 层编码器 - 针对速度优化
  • 128L:128 层编码器 - 针对准确率优化

NeMo 模型

  • 来源:NVIDIA NeMo Toolkit
  • 架构:Fast Conformer CTC
  • 训练框架:NeMo ASR

量化

  • 工具:ONNX Runtime
  • 方法:动态量化(QUInt8)
  • 执行者:本仓库维护者

📄 许可证

本合集中的所有模型均采用 Apache 2.0 许可证 发布。

原始模型许可证

  • Kroko 模型:Apache 2.0(来自 Banafo/Kroko-ASR)
  • NeMo 模型:Apache 2.0(来自 NVIDIA NeMo)

🔗 相关链接

📊 性能基准测试

模型 大小 延迟 WER(英语) 内存 最佳用途
nemo_ctc_80ms 126 MB 80ms ~8% 512 MB 游戏
nemo_ctc_480ms 126 MB 480ms ~6% 512 MB 阅读
kroko_64l 147 MB ~200ms ~5% 1 GB 通用
kroko_128l 147 MB ~300ms ~4% 1.5 GB 高精度

基准测试数据为近似值,实际性能可能因硬件和音频条件而异。

🛠️ 系统要求

  • 最低内存:512 MB(适用于 NeMo 模型)
  • 推荐内存:1-2 GB(适用于 Kroko 模型)
  • CPU:任何支持 AVX2 的现代 CPU
  • 操作系统:Windows、Linux、macOS、Android(7.0+)、iOS
  • 运行时:ONNX Runtime(CPU)

🚧 已知限制

  • INT8 量化可能导致轻微的精度下降(WER 增加约 1-2%)
  • Kroko 128L 模型比 64L 变体需要更多内存
  • NeMo 模型仅适用于英语
  • 实时性能取决于 CPU 性能

📝 引用

如果您在研究或应用中使用这些模型,请引用:

@misc{sherpa-onnx-int8-models,
  title={Sherpa ONNX STT Models - INT8 Quantized Collection},
  author={Your Name/Organization},
  year={2025},
  publisher={HuggingFace},
  howpublished={\url{https://huggingface.co/your-username/sherpa-onnx-int8-models}},
  note={Quantized from Banafo/Kroko-ASR and NVIDIA NeMo models}
}

原始 Kroko 引用:

@misc{banafo-kroko-asr,
  title={Kroko ASR: Multilingual Streaming Speech Recognition},
  author={Banafo Team},
  year={2025},
  publisher={HuggingFace},
  howpublished={\url{https://huggingface.co/Banafo/Kroko-ASR}}
}

💬 支持

如有问题和疑问:

📅 版本历史

  • v1.0.0(2025-11-07):初始版本
    • 17 个 INT8 量化模型
    • 支持 7 种语言
    • 覆盖 DE、EN、ES、FR、TR、IT、PT
    • 总大小:2.38 GB

使用 Sherpa-ONNX 和 ONNX Runtime 用心制作 ❤️

hudaiapa88/sherpa-stt-onnx

作者 hudaiapa88

automatic-speech-recognition sherpa-onnx
↓ 0 ♥ 1

创建时间: 2025-11-06 11:15:23+00:00

更新时间: 2025-11-07 00:53:19+00:00

在 Hugging Face 上查看

文件 (64)

.gitattributes
README.md
de/kroko_128l/decoder.int8.onnx ONNX
de/kroko_128l/encoder.int8.onnx ONNX
de/kroko_128l/joiner.int8.onnx ONNX
de/kroko_128l/tokens.txt
de/kroko_64l/decoder.int8.onnx ONNX
de/kroko_64l/encoder.int8.onnx ONNX
de/kroko_64l/joiner.int8.onnx ONNX
de/kroko_64l/tokens.txt
en/kroko_128l/decoder.int8.onnx ONNX
en/kroko_128l/encoder.int8.onnx ONNX
en/kroko_128l/joiner.int8.onnx ONNX
en/kroko_128l/tokens.txt
en/kroko_64l/decoder.int8.onnx ONNX
en/kroko_64l/encoder.int8.onnx ONNX
en/kroko_64l/joiner.int8.onnx ONNX
en/kroko_64l/tokens.txt
en/nemo_ctc_1040ms/model.int8.onnx ONNX
en/nemo_ctc_1040ms/tokens.txt
en/nemo_ctc_480ms/model.int8.onnx ONNX
en/nemo_ctc_480ms/tokens.txt
en/nemo_ctc_80ms/model.int8.onnx ONNX
en/nemo_ctc_80ms/tokens.txt
es/kroko_128l/decoder.int8.onnx ONNX
es/kroko_128l/encoder.int8.onnx ONNX
es/kroko_128l/joiner.int8.onnx ONNX
es/kroko_128l/tokens.txt
es/kroko_64l/decoder.int8.onnx ONNX
es/kroko_64l/encoder.int8.onnx ONNX
es/kroko_64l/joiner.int8.onnx ONNX
es/kroko_64l/tokens.txt
fr/kroko_128l/decoder.int8.onnx ONNX
fr/kroko_128l/encoder.int8.onnx ONNX
fr/kroko_128l/joiner.int8.onnx ONNX
fr/kroko_128l/tokens.txt
fr/kroko_64l/decoder.int8.onnx ONNX
fr/kroko_64l/encoder.int8.onnx ONNX
fr/kroko_64l/joiner.int8.onnx ONNX
fr/kroko_64l/tokens.txt
it/kroko_128l/decoder.int8.onnx ONNX
it/kroko_128l/encoder.int8.onnx ONNX
it/kroko_128l/joiner.int8.onnx ONNX
it/kroko_128l/tokens.txt
it/kroko_64l/decoder.int8.onnx ONNX
it/kroko_64l/encoder.int8.onnx ONNX
it/kroko_64l/joiner.int8.onnx ONNX
it/kroko_64l/tokens.txt
pt/kroko_128l/decoder.int8.onnx ONNX
pt/kroko_128l/encoder.int8.onnx ONNX
pt/kroko_128l/joiner.int8.onnx ONNX
pt/kroko_128l/tokens.txt
pt/kroko_64l/decoder.int8.onnx ONNX
pt/kroko_64l/encoder.int8.onnx ONNX
pt/kroko_64l/joiner.int8.onnx ONNX
pt/kroko_64l/tokens.txt
tr/kroko_128l/decoder.int8.onnx ONNX
tr/kroko_128l/encoder.int8.onnx ONNX
tr/kroko_128l/joiner.int8.onnx ONNX
tr/kroko_128l/tokens.txt
tr/kroko_64l/decoder.int8.onnx ONNX
tr/kroko_64l/encoder.int8.onnx ONNX
tr/kroko_64l/joiner.int8.onnx ONNX
tr/kroko_64l/tokens.txt