diff --git a/docs/sherpa-paraformer-guide.md b/docs/sherpa-paraformer-guide.md deleted file mode 100644 index 8b9e7321..00000000 --- a/docs/sherpa-paraformer-guide.md +++ /dev/null @@ -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 -- Python:3.9 - -**性能优势**: -- ✅ 0.5秒完成30字识别,响应迅速 -- ✅ 内存占用低,2GB 设备运行流畅 -- ✅ 虽然识别瞬间 CPU 跑满,但持续时间短,不影响整体体验 - -**性能特点**: -- 识别过程中 CPU 四核会瞬时跑满(纯 CPU 推理) -- 由于识别速度快(0.5秒),CPU 高负载时间很短 -- 对比 SenseVoice(894MB)在同设备上需要 2-3 秒,Paraformer-small(78MB)提升了 **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) \ No newline at end of file