SenseVoice-small-onnx语音识别保姆级教程:从pip安装到API调用完整链路
本文介绍了如何在星图GPU平台上自动化部署sensevoice-small-语音识别-onnx模型(带量化后),快速搭建多语言语音识别服务。该模型支持实时语音转文字,可应用于会议记录、语音笔记等场景,仅需70毫秒即可处理10秒音频,显著提升语音处理效率。
SenseVoice-small-onnx语音识别保姆级教程:从pip安装到API调用完整链路
本文面向零基础用户,手把手教你搭建多语言语音识别服务,无需深度学习背景,跟着做就能用
1. 前言:为什么选择SenseVoice-small-onnx
如果你正在寻找一个简单好用的语音识别工具,SenseVoice-small-onnx是个不错的选择。这个模型最大的特点就是"轻量高效"——它经过了ONNX量化处理,体积小巧但功能强大。
简单来说,这个工具能帮你:
- 把语音转换成文字(支持中文、英文、日语、韩语、粤语等50多种语言)
- 自动识别说话人的情感和音频中的特殊事件
- 通过简单的API接口快速集成到你的项目中
最让人惊喜的是它的速度:处理10秒的音频只需要70毫秒,几乎实时就能出结果。无论是做语音笔记、会议记录,还是开发语音交互应用,这个工具都能帮上忙。
2. 环境准备与安装
2.1 系统要求
在开始之前,确保你的电脑满足以下要求:
- 操作系统:Windows 10/11, macOS 10.14+, 或 Linux (Ubuntu 18.04+推荐)
- Python版本:3.8 或更高版本
- 内存:至少4GB RAM
- 存储空间:至少1GB可用空间(用于存放模型和依赖包)
2.2 一键安装依赖
打开你的命令行工具(Windows用CMD或PowerShell,Mac/Linux用Terminal),输入以下命令:
pip install funasr-onnx gradio fastapi uvicorn soundfile jieba
这个命令会安装所有需要的软件包:
funasr-onnx:核心语音识别库gradio和fastapi:用于创建Web界面和APIuvicorn:运行Web服务的工具soundfile:处理音频文件jieba:中文分词工具
安装过程可能需要几分钟,取决于你的网络速度。如果遇到网络问题,可以尝试使用国内的镜像源:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple funasr-onnx gradio fastapi uvicorn soundfile jieba
3. 快速启动语音识别服务
3.1 创建启动脚本
首先创建一个名为app.py的文件,内容如下:
from funasr_onnx import SenseVoiceSmall
from fastapi import FastAPI, File, UploadFile
from fastapi.responses import JSONResponse
import uvicorn
import os
# 初始化模型
model_path = "/root/ai-models/danieldong/sensevoice-small-onnx-quant"
model = SenseVoiceSmall(model_path, batch_size=10, quantize=True)
# 创建FastAPI应用
app = FastAPI(title="SenseVoice语音识别服务")
@app.post("/api/transcribe")
async def transcribe_audio(
file: UploadFile = File(...),
language: str = "auto",
use_itn: bool = True
):
"""语音转写API接口"""
# 保存上传的音频文件
audio_content = await file.read()
with open("temp_audio", "wb") as f:
f.write(audio_content)
# 进行语音识别
result = model(["temp_audio"], language=language, use_itn=use_itn)
# 清理临时文件
os.remove("temp_audio")
return JSONResponse({
"text": result[0],
"language": language,
"status": "success"
})
@app.get("/health")
async def health_check():
"""健康检查接口"""
return {"status": "healthy", "model": "sensevoice-small-onnx"}
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=7860)
3.2 启动服务
在命令行中运行:
python app.py
看到类似下面的输出,说明服务启动成功:
INFO: Started server process [12345]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:7860
4. 使用语音识别服务
4.1 通过Web界面使用
打开浏览器,访问 http://localhost:7860,你会看到一个简单的上传界面:
- 点击"选择文件"按钮,上传你的音频文件(支持mp3、wav、m4a、flac等格式)
- 选择识别语言(默认auto自动检测)
- 点击"上传"按钮
- 几秒钟后就能看到识别结果
4.2 通过API接口调用
如果你更喜欢用代码调用,可以使用以下方式:
import requests
# 准备音频文件
files = {"file": open("你的音频文件.wav", "rb")}
data = {"language": "auto", "use_itn": "true"}
# 发送请求
response = requests.post(
"http://localhost:7860/api/transcribe",
files=files,
data=data
)
# 获取结果
result = response.json()
print(result["text"])
或者使用curl命令测试:
curl -X POST "http://localhost:7860/api/transcribe" \
-F "file=@audio.wav" \
-F "language=auto" \
-F "use_itn=true"
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="zh", use_itn=True)
print("识别结果:", result[0])
# 批量识别多个文件
results = model(["audio1.wav", "audio2.mp3", "audio3.m4a"], language="auto")
for i, result in enumerate(results):
print(f"文件{i+1}识别结果:", result)
5. 实用技巧和最佳实践
5.1 如何获得更好的识别效果
根据我的使用经验,这些技巧能显著提升识别准确率:
- 音频质量很重要:尽量使用清晰的录音,避免背景噪音
- 选择正确的语言:如果你知道录音的语言,直接指定而不是用auto
- 使用ITN功能:逆文本正则化能让数字、日期等格式更规范
- 适当的音频长度:虽然支持长音频,但3-5分钟的片段识别效果最好
5.2 常见语言代码参考
| 语言 | 代码 | 使用场景 |
|---|---|---|
| 自动检测 | auto | 不确定语言时使用 |
| 中文 | zh | 普通话录音 |
| 英语 | en | 英文内容 |
| 粤语 | yue | 广东话录音 |
| 日语 | ja | 日语内容 |
| 韩语 | ko | 韩语内容 |
5.3 处理大量音频文件
如果你需要处理很多音频文件,可以使用批处理模式:
import os
from funasr_onnx import SenseVoiceSmall
model = SenseVoiceSmall("/root/ai-models/danieldong/sensevoice-small-onnx-quant")
# 处理整个文件夹的音频文件
audio_folder = "你的音频文件夹"
audio_files = [os.path.join(audio_folder, f) for f in os.listdir(audio_folder)
if f.endswith(('.wav', '.mp3', '.m4a'))]
# 分批处理,避免内存不足
batch_size = 5
for i in range(0, len(audio_files), batch_size):
batch = audio_files[i:i+batch_size]
results = model(batch, language="auto")
for file_path, text in zip(batch, results):
print(f"{file_path}: {text}")
# 这里可以保存结果到文件或数据库
6. 常见问题解答
问题1:模型文件在哪里下载? 答:服务会自动下载和管理模型文件,你不需要手动下载。模型会保存在/root/ai-models/danieldong/sensevoice-small-onnx-quant目录下。
问题2:支持哪些音频格式? 答:支持常见的音频格式,包括wav、mp3、m4a、flac等。建议使用wav格式获得最佳效果。
问题3:ITN功能有什么用? 答:ITN(逆文本正则化)能把口语化的表达转换成规范的文本格式。比如把"三点钟"转换成"3:00","百分之二十"转换成"20%"。建议保持开启。
问题4:服务启动失败怎么办? 答:检查以下几点:
- Python版本是否是3.8+
- 所有依赖包是否安装成功
- 7860端口是否被其他程序占用(可以换其他端口试试)
问题5:识别速度慢怎么办? 答:确保使用的是量化模型(quantize=True),这是速度最快的版本。另外,音频文件不要太大,过长的音频可以分段处理。
7. 总结
通过这个教程,你应该已经成功搭建了自己的语音识别服务。SenseVoice-small-onnx最大的优势就是简单易用——不需要复杂的配置,不需要深度学习知识,只需要几行命令就能获得专业级的语音识别能力。
这个工具特别适合:
- 个人用户做语音笔记和记录整理
- 开发者快速为应用添加语音输入功能
- 小团队处理会议录音和访谈内容
- 学习研究多语言语音识别技术
最重要的是,整个服务都是离线的,你的音频数据不会上传到任何服务器,保证了隐私和安全。
现在你可以开始尝试处理自己的音频文件了。从简单的短录音开始,逐步尝试更复杂的场景。遇到问题可以回头查看对应的章节,或者多试试不同的参数设置。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
更多推荐
所有评论(0)