Delete docs/sherpa-paraformer-guide.md

This commit is contained in:
hrz
2025-07-31 13:34:17 +08:00
committed by GitHub
parent 9edd083411
commit b6ee2dee68
-268
View File
@@ -1,268 +0,0 @@
# Sherpa-ONNX Paraformer 模型使用指南
本文档介绍如何在小智 ESP32 服务器中使用 Paraformer 模型进行中文语音识别。Paraformer 有多个版本,本指南重点介绍适合低性能设备(如 RK3566)的小尺寸版本。
## 为什么选择 Paraformer
Paraformer 是阿里达摩院开发的语音识别模型系列,支持多种语言和尺寸。对于性能较低的设备(如 RK3566),我们推荐使用中文小尺寸版本:
- **多种尺寸可选**:从 78MB 的小模型到 600MB+ 的大模型
- **速度快**:优化的模型结构,推理速度快
- **资源占用灵活**:可根据设备性能选择合适的版本
## Paraformer 模型特点
- **多语言支持**:除中文外,还有英文、日文等版本
- **支持 INT8 量化**:通过量化技术减小模型体积
- **CPU 友好**:即使在纯 CPU 环境下也能高效运行
- **低延迟**:适合实时对话场景
**注意**:本指南主要介绍中文版本(paraformer-zh 系列),这是小智 ESP32 项目的主要使用场景。
## 如何找到合适的模型
### 模型来源渠道
1. **GitHub Releases(推荐)**
- [Sherpa-ONNX 官方发布页](https://github.com/k2-fsa/sherpa-onnx/releases/tag/asr-models)
- 优点:模型经过验证,格式标准,下载稳定
- 缺点:需要科学上网
2. **ModelScope(阿里巴巴)**
- [ModelScope 搜索](https://modelscope.cn/models?name=sherpa-onnx&page=1)
- 优点:国内访问快,无需科学上网
- 缺点:部分模型格式不标准,需要仔细筛选
3. **HuggingFace**
- [HuggingFace 搜索](https://huggingface.co/models?search=sherpa-onnx)
- 优点:模型丰富,社区活跃
- 缺点:需要科学上网,下载速度慢
### 判断模型是否可用
**必须满足以下条件**
1. **文件格式要求**
```
模型目录/
├── model.int8.onnx # INT8 量化的 ONNX 模型(必需)
├── tokens.txt # 词汇表文件(必需)
└── README.md # 说明文档(可选)
```
2. **模型类型识别**
- 文件名包含 `paraformer`:使用 `model_type: paraformer`
- 文件名包含 `sense-voice`:使用 `model_type: sense_voice`
- 不确定时查看 README 或模型说明
3. **验证方法**
```bash
# 下载后解压查看文件
tar -tf downloaded-model.tar.bz2 | grep -E "(model\.int8\.onnx|tokens\.txt)"
# 如果两个文件都存在,模型可用
```
### 搜索技巧
1. **GitHub 搜索关键词**
- `sherpa-onnx-paraformer-zh`(中文 Paraformer
- `sherpa-onnx-sense-voice`(多语言 SenseVoice
2. **ModelScope 搜索**
- 搜索 `sherpa-onnx`
- 筛选作者 `pengzhendong`(经过验证的模型)
3. **识别不可用的模型**
- ❌ 只有 `.pt` 或 `.pth` 文件(PyTorch 格式)
- ❌ 只有 `.bin` 文件(未转换的二进制)
- ❌ 缺少 `tokens.txt`
- ✅ 包含 `model.int8.onnx` 和 `tokens.txt`
## 模型下载
### 推荐的 Paraformer 模型
#### 1. Paraformer-zh-small(推荐)
- **大小**:约 78MB
- **适用场景**:低性能设备,纯中文场景
- **下载地址**
```bash
# GitHub 官方下载
wget https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/sherpa-onnx-paraformer-zh-small-2024-03-09.tar.bz2
# 国内镜像加速
wget https://ghproxy.com/https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/sherpa-onnx-paraformer-zh-small-2024-03-09.tar.bz2
# 解压
mkdir -p models
tar -xf sherpa-onnx-paraformer-zh-small-2024-03-09.tar.bz2 -C models/
```
#### 2. Paraformer-zh(标准版)
- **大小**:约 230MB
- **适用场景**:性能充足时,追求更高准确度
- **下载地址**
```bash
wget https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/sherpa-onnx-paraformer-zh-2023-09-14.tar.bz2
```
### 其他可用的 Paraformer 模型
在 [Sherpa-ONNX Releases](https://github.com/k2-fsa/sherpa-onnx/releases/tag/asr-models) 页面可找到:
- **中文版本**:搜索 "paraformer-zh"
- **英文版本**:搜索 "paraformer-en"
- **多语言版本**:搜索 "paraformer-trilingual"(中英日)
## 配置方法
在 `config.yaml` 中配置对应的 ASR 模块:
### 1. 在 config.yaml 中添加 Paraformer 配置
```yaml
ASR:
SherpaParaformerASR:
type: sherpa_onnx_local
model_dir: models/sherpa-onnx-paraformer-zh-small-2024-03-09
output_dir: tmp/
model_type: paraformer # 必须指定为 paraformer
```
### 2. 在 .config.yaml 中启用
```yaml
selected_module:
ASR: SherpaParaformerASR # 使用 Paraformer 模型
```
## Paraformer 不同版本对比
| 版本 | 模型大小 | 内存占用 | 推理速度 | 准确度 | 推荐场景 |
| ------------------- | -------- | -------- | -------- | ------ | ---------- |
| paraformer-zh-small | ~78MB | ~200MB | 快 | 良好 | 低性能设备 |
| paraformer-zh | ~230MB | ~500MB | 中等 | 优秀 | 标准设备 |
| paraformer-zh-large | ~600MB | ~1.2GB | 较慢 | 最佳 | 高性能设备 |
## 实测性能数据
### RK3566 设备实测(2GB 内存)
使用 **paraformer-zh-small** 模型的实际表现:
| 测试项目 | 数据 |
|---------|------|
| 模型加载时间 | ~3秒 |
| 30字中文识别 | **~0.5秒** |
| 60字中文识别 | ~0.8秒 |
| 内存占用(空闲) | ~180MB |
| 内存占用(识别中) | ~220MB |
| CPU 占用(识别时) | **四核瞬时跑满** |
**测试环境**
- 设备:RK3566 开发板
- 内存:2GB DDR4
- 系统:Debian 11
- Python3.9
**性能优势**
- ✅ 0.5秒完成30字识别,响应迅速
- ✅ 内存占用低,2GB 设备运行流畅
- ✅ 虽然识别瞬间 CPU 跑满,但持续时间短,不影响整体体验
**性能特点**
- 识别过程中 CPU 四核会瞬时跑满(纯 CPU 推理)
- 由于识别速度快(0.5秒),CPU 高负载时间很短
- 对比 SenseVoice894MB)在同设备上需要 2-3 秒,Paraformer-small78MB)提升了 **4-6 倍**的识别速度
## 常见问题
### 1. 模型文件缺失错误
如果看到 "模型文件下载失败" 错误,请手动下载模型文件并确保以下文件存在:
- `model.int8.onnx` - 量化后的 ONNX 模型文件
- `tokens.txt` - 词汇表文件
### 2. RK3566 NPU 加速
目前 Sherpa-ONNX 暂不支持 RK3566 NPU 加速(正在努力攻克中),但 INT8 量化模型已经能在 CPU 上高效运行。
### 3. 模型选择建议
- **RK3566 等嵌入式设备**:使用 paraformer-zh-small
- **树莓派、迷你主机**:使用 paraformer-zh
- **性能充足的设备**:使用 paraformer-zh-large
- **需要极致性能**:考虑使用在线 ASR 服务(如豆包、阿里云)
### 4. 下载失败处理
**GitHub 下载慢或失败**
- 使用代理工具
- 使用 GitHub 加速服务
- 从 ModelScope 下载同名模型
**ModelScope 下载失败**
- 检查网络连接
- 使用手动下载方式
- 尝试其他模型源
### 5. 模型版本更新
定期检查新版本:
```bash
# 查看最新的 Paraformer 模型
curl -s https://api.github.com/repos/k2-fsa/sherpa-onnx/releases | grep paraformer-zh
```
## 实战示例
### 快速测试模型是否可用
```python
#!/usr/bin/env python3
# test_model.py - 测试下载的模型是否可用
import os
import sys
def check_model(model_dir):
"""检查模型文件是否完整"""
required_files = ['model.int8.onnx', 'tokens.txt']
missing = []
for file in required_files:
path = os.path.join(model_dir, file)
if not os.path.exists(path):
missing.append(file)
else:
size = os.path.getsize(path) / 1024 / 1024 # MB
print(f"✓ {file}: {size:.1f} MB")
if missing:
print(f"✗ 缺少文件: {', '.join(missing)}")
return False
# 检查模型类型
if 'paraformer' in model_dir.lower():
print("→ 模型类型: paraformer")
elif 'sense-voice' in model_dir.lower():
print("→ 模型类型: sense_voice")
else:
print("→ 模型类型: 未知(默认使用 sense_voice")
return True
if __name__ == "__main__":
model_dir = sys.argv[1] if len(sys.argv) > 1 else "models/sherpa-onnx-paraformer-zh-small-2024-03-09"
if check_model(model_dir):
print(f"\n✅ 模型 {model_dir} 可以使用!")
else:
print(f"\n❌ 模型 {model_dir} 不完整,请重新下载!")
```
## 参考链接
- [Sherpa-ONNX 官方仓库](https://github.com/k2-fsa/sherpa-onnx)
- [Sherpa-ONNX 模型下载](https://github.com/k2-fsa/sherpa-onnx/releases/tag/asr-models)
- [Paraformer 论文](https://arxiv.org/abs/2206.08317)
- [k2-fsa 组织主页](https://github.com/k2-fsa)