SenseVoice语音识别零基础教程:从安装到API调用的完整流程
SenseVoice语音识别零基础教程:从安装到API调用的完整流程
1. 环境准备与快速部署
SenseVoice语音识别服务是一个基于ONNX量化的轻量级解决方案,特别适合需要快速上手的开发者。我们将从最基本的安装步骤开始,带你一步步完成整个部署过程。
1.1 系统要求检查
在开始之前,请确保你的系统满足以下最低要求:
- 操作系统:Linux/Windows/macOS(推荐Ubuntu 20.04+)
- Python版本:3.7或更高
- 内存:至少4GB可用内存
- 磁盘空间:至少1GB可用空间
1.2 一键安装依赖
打开终端,执行以下命令安装所有必要依赖:
pip install funasr-onnx gradio fastapi uvicorn soundfile jieba这个命令会安装:
funasr-onnx:核心语音识别库gradio:用于构建Web界面fastapi和uvicorn:用于创建API服务soundfile:音频文件处理jieba:中文分词工具
1.3 启动语音识别服务
安装完成后,只需一行命令即可启动服务:
python3 app.py --host 0.0.0.0 --port 7860启动成功后,你会在终端看到类似这样的输出:
INFO: Started server process [12345] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:78602. 服务访问与功能体验
现在服务已经运行起来了,让我们看看它提供了哪些访问方式和功能。
2.1 三种访问方式
SenseVoice服务提供了三种不同的交互方式:
- Web界面:最简单的交互方式,适合快速测试
- 访问地址:http://localhost:7860
- API文档:查看所有可用API及其参数
- 访问地址:http://localhost:7860/docs
- 健康检查:确认服务是否正常运行
- 访问地址:http://localhost:7860/health
2.2 Web界面功能演示
打开Web界面后,你会看到一个简洁的操作面板:
- 上传音频:支持拖放或点击上传
- 语言选择:自动检测或手动指定语言
- 识别按钮:点击开始语音转文字
- 结果显示区:展示识别文本和附加信息
试着上传一个音频文件(支持wav、mp3等格式),选择语言后点击识别按钮,就能立即看到转写结果。
3. API调用实战教学
除了Web界面,API调用才是开发者最常用的方式。下面我们详细介绍如何通过代码调用这些API。
3.1 基础REST API调用
使用curl命令可以快速测试API功能:
curl -X POST "http://localhost:7860/api/transcribe" \ -F "file=@audio.wav" \ -F "language=auto" \ -F "use_itn=true"这个请求包含三个重要参数:
file:音频文件路径language:识别语言(auto为自动检测)use_itn:是否启用逆文本正则化(如"三"转"3")
3.2 Python SDK调用示例
如果你更喜欢用Python,这里有一个完整的调用示例:
from funasr_onnx import SenseVoiceSmall # 初始化模型(会自动使用缓存模型) model = SenseVoiceSmall( "/root/ai-models/danieldong/sensevoice-small-onnx-quant", batch_size=10, quantize=True ) # 识别单个音频文件 result = model(["audio.wav"], language="auto", use_itn=True) print("识别结果:", result[0]) # 批量识别多个文件 results = model(["audio1.wav", "audio2.wav", "audio3.wav"]) for i, res in enumerate(results): print(f"音频{i+1}结果:", res)3.3 高级参数配置
SenseVoice提供了多个可调参数来优化识别效果:
result = model( ["audio.wav"], language="zh", # 指定中文 use_itn=True, # 启用数字转换 hotwords=["专业术语1", "专业术语2"], # 重点识别词汇 beam_size=5 # 搜索宽度,影响识别质量 )4. 多语言支持与实用技巧
SenseVoice的强大之处在于它的多语言能力,下面我们详细看看如何使用这些功能。
4.1 支持的语言列表
| 语言代码 | 语言名称 | 备注 |
|---|---|---|
| auto | 自动检测 | 默认选项 |
| zh | 中文 | 普通话 |
| yue | 粤语 | 广东话 |
| en | 英语 | 支持多种口音 |
| ja | 日语 | |
| ko | 韩语 |
4.2 语言检测技巧
当使用自动检测(auto)时,模型会根据音频内容判断语言。对于混合语言的音频,可以尝试以下方法提高准确率:
- 设置主要语言倾向:
result = model(["audio.wav"], language="auto", lang_prompt="zh") - 对于中英混杂的场景,可以启用代码转换:
result = model(["audio.wav"], language="zh-en")
4.3 音频格式处理建议
虽然SenseVoice支持多种音频格式,但为了获得最佳效果,建议:
- 采样率:16000Hz
- 声道:单声道
- 格式:WAV或FLAC
- 时长:建议分段处理超过30秒的音频
如果需要转换格式,可以使用Python的soundfile库:
import soundfile as sf # 读取音频文件 data, samplerate = sf.read("input.mp3") # 转换为目标格式 sf.write("output.wav", data, samplerate, subtype='PCM_16')5. 常见问题解决方案
在实际使用中,你可能会遇到一些典型问题,这里提供解决方案。
5.1 模型加载问题
问题:首次运行时模型下载慢或失败
解决方案:
- 检查网络连接
- 手动下载模型到缓存目录:
mkdir -p /root/ai-models/danieldong/sensevoice-small-onnx-quant wget -P /root/ai-models/danieldong/sensevoice-small-onnx-quant https://example.com/model_quant.onnx
5.2 识别准确度问题
问题:特定领域术语识别不准
解决方案:
- 使用hotwords参数强调关键词:
result = model(["audio.wav"], hotwords=["COVID-19", "mRNA"]) - 对识别结果进行后处理
5.3 性能优化建议
对于大批量音频处理,可以采用以下优化策略:
- 批量处理:
# 一次处理多个文件比单独处理更高效 results = model(["file1.wav", "file2.wav", "file3.wav"]) - 启用量化:
model = SenseVoiceSmall(quantize=True) # 使用量化模型 - 内存管理:
# 处理完成后释放内存 del model
6. 总结与进阶学习
通过本教程,你已经掌握了SenseVoice语音识别服务从安装到API调用的完整流程。让我们回顾一下关键点:
- 快速部署:一行命令安装,一行命令启动
- 多语言支持:中文、粤语、英语等主流语言识别
- 高效API:RESTful接口和Python SDK两种调用方式
- 实用技巧:音频处理、语言选择、性能优化等方法
要进一步提升语音识别技能,建议:
- 阅读ONNX和语音识别相关文档
- 尝试处理不同场景的音频数据
- 探索模型的高级参数配置
- 考虑对特定领域数据进行微调
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
