返回模型
说明文档
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}}
}
💬 支持
如有问题和疑问:
- Sherpa-ONNX:GitHub Issues
- Kroko 模型: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