保姆级教程:基于ONNX量化的SenseVoice语音识别环境搭建
本文介绍了如何在星图GPU平台上自动化部署sensevoice-small-语音识别-onnx模型(带量化后),实现高效的多语言语音识别。该镜像支持中英文等多种语言的实时语音转文字,可广泛应用于视频字幕生成、会议记录转写等场景,显著提升音频内容处理效率。
保姆级教程:基于ONNX量化的SenseVoice语音识别环境搭建
1. 引言
语音识别技术正在改变我们与设备交互的方式,从智能助手到实时字幕,应用场景越来越广泛。今天我要带大家搭建一个多语言语音识别环境,使用SenseVoice Small模型和ONNX量化技术,让你在普通电脑上也能享受高效的语音转文字服务。
这个环境有什么特别之处?它支持中文、粤语、英语、日语、韩语等多种语言,还能自动检测语言类型。最棒的是,经过ONNX量化后,模型体积大幅减小,推理速度却更快——10秒音频仅需70毫秒就能完成识别!
无论你是开发者想要集成语音识别功能,还是技术爱好者想要体验最新AI技术,这个教程都能帮你快速上手。我们从头开始,一步步搭建完整的语音识别服务。
2. 环境准备与安装
在开始之前,确保你的系统已经安装了Python 3.7或更高版本。建议使用虚拟环境来管理依赖,避免与其他项目冲突。
2.1 创建虚拟环境
# 创建新的虚拟环境
python -m venv sensevoice-env
# 激活虚拟环境
# Windows系统
sensevoice-env\Scripts\activate
# Linux/Mac系统
source sensevoice-env/bin/activate
2.2 安装必要依赖
# 安装核心依赖包
pip install funasr-onnx gradio fastapi uvicorn soundfile jieba
# 验证安装是否成功
python -c "import funasr_onnx; print('funasr-onnx安装成功')"
这些包各自有什么作用呢?
funasr-onnx:核心语音识别库,提供ONNX模型推理能力gradio:用于构建Web界面,方便测试和演示fastapi和uvicorn:用于创建REST API服务soundfile:处理音频文件读写jieba:中文分词,提升识别准确率
3. 快速启动语音识别服务
环境准备好后,我们只需要几行代码就能启动完整的语音识别服务。
3.1 创建启动脚本
新建一个名为app.py的文件,内容如下:
from funasr_onnx import SenseVoiceSmall
import gradio as gr
import os
# 模型路径配置
model_path = "/root/ai-models/danieldong/sensevoice-small-onnx-quant"
# 初始化模型
model = SenseVoiceSmall(
model_path,
batch_size=10,
quantize=True
)
def transcribe_audio(audio_file, language_type):
"""
语音识别函数
audio_file: 上传的音频文件
language_type: 语言类型
"""
try:
# 执行语音识别
results = model([audio_file], language=language_type, use_itn=True)
return results[0]["text"]
except Exception as e:
return f"识别失败: {str(e)}"
# 创建Gradio界面
interface = gr.Interface(
fn=transcribe_audio,
inputs=[
gr.Audio(type="filepath", label="上传音频文件"),
gr.Dropdown(
choices=["auto", "zh", "en", "yue", "ja", "ko"],
value="auto",
label="选择语言"
)
],
outputs=gr.Textbox(label="识别结果"),
title="SenseVoice 语音识别服务",
description="上传音频文件,选择语言类型(auto为自动检测),获取文字识别结果"
)
# 启动服务
if __name__ == "__main__":
interface.launch(server_name="0.0.0.0", server_port=7860)
3.2 启动服务
# 启动语音识别服务
python app.py --host 0.0.0.0 --port 7860
服务启动后,你会看到类似这样的输出:
Running on local URL: http://0.0.0.0:7860
现在打开浏览器访问 http://localhost:7860 就能看到语音识别界面了。
4. 使用语音识别服务
我们的服务提供了三种使用方式:Web界面、API调用和Python代码集成。
4.1 Web界面使用
Web界面是最简单的使用方式:
- 打开 http://localhost:7860
- 点击上传按钮选择音频文件
- 选择语言类型(建议使用auto自动检测)
- 点击提交按钮
- 查看识别结果
支持常见的音频格式:MP3、WAV、M4A、FLAC等。
4.2 API接口调用
如果你需要集成到其他系统中,可以使用REST API:
# 使用curl调用API
curl -X POST "http://localhost:7860/api/transcribe" \
-F "file=@your_audio.wav" \
-F "language=auto" \
-F "use_itn=true"
API会返回JSON格式的识别结果:
{
"text": "这是识别出的文字内容",
"language": "zh"
}
4.3 Python代码集成
你也可以直接在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]["text"])
# 识别多个文件
results = model(["audio1.wav", "audio2.mp3"], language="zh", use_itn=True)
for result in results:
print(f"识别结果: {result['text']}")
5. 高级功能与技巧
除了基本识别功能,SenseVoice还提供了一些高级特性。
5.1 多语言支持
模型支持50多种语言,常用的有:
| 语言代码 | 语言名称 | 使用示例 |
|---|---|---|
| auto | 自动检测 | language="auto" |
| zh | 中文 | language="zh" |
| en | 英语 | language="en" |
| yue | 粤语 | language="yue" |
| ja | 日语 | language="ja" |
| ko | 韩语 | language="ko" |
5.2 逆文本正则化(ITN)
ITN功能可以将口语化的表达转换为规范文本:
- "三点钟" → "3:00"
- "百分之二十" → "20%"
- "一千二百" → "1200"
启用方法:设置use_itn=True
5.3 批量处理
模型支持批量处理多个音频文件,大幅提升处理效率:
# 批量处理示例
audio_files = ["audio1.wav", "audio2.mp3", "audio3.m4a"]
results = model(audio_files, language="auto", use_itn=True)
for i, result in enumerate(results):
print(f"文件 {audio_files[i]} 的识别结果: {result['text']}")
6. 常见问题解答
在实际使用中可能会遇到一些问题,这里提供解决方案。
6.1 模型下载问题
如果模型没有自动下载,可以手动指定模型路径:
# 使用本地模型路径
model = SenseVoiceSmall(
"你的本地模型路径",
batch_size=10,
quantize=True
)
6.2 内存不足问题
如果遇到内存不足,可以减小batch_size:
# 使用较小的batch_size
model = SenseVoiceSmall(
model_path,
batch_size=2, # 减小批量大小
quantize=True
)
6.3 音频格式问题
确保音频格式是支持的格式,如果不确定可以转换格式:
# 使用ffmpeg转换音频格式
ffmpeg -i input.audio output.wav
6.4 识别准确率优化
提升识别准确率的方法:
- 确保音频质量良好,没有太多背景噪音
- 明确指定语言类型,而不是总是使用auto
- 对于专业领域术语,可以在识别后进行后处理校正
7. 总结
通过这个教程,我们成功搭建了一个功能强大的多语言语音识别环境。SenseVoice Small模型结合ONNX量化技术,让我们在普通硬件上也能获得优秀的语音识别体验。
关键要点回顾:
- 安装简单:只需几个pip命令就能完成环境准备
- 使用方便:提供Web界面、API和代码三种使用方式
- 功能强大:支持多语言识别、批量处理、ITN等高级功能
- 性能优异:经过量化优化,推理速度快且资源占用少
现在你可以开始探索语音识别的各种应用场景了,比如为视频添加字幕、开发语音助手、会议记录转写等等。如果你想要更深入地定制或优化,可以查阅官方文档了解更多高级功能。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
更多推荐
所有评论(0)