SenseVoice语音识别快速上手:一键部署多语言转写Web界面

SenseVoice语音识别快速上手:一键部署多语言转写Web界面

1. 开篇:为什么选择SenseVoice语音识别?

想象一下这样的场景:你刚参加完一场国际会议,录音里有中文、英文和日语的混合内容;或者你有一堆粤语播客想转成文字;又或者你需要为外语视频自动生成字幕。传统语音识别工具要么语言支持有限,要么部署复杂,要么识别效果不佳。

SenseVoice-small-onnx语音识别服务完美解决了这些问题。这个基于ONNX量化的模型支持50+种语言自动检测,特别优化了中文、粤语、英语、日语和韩语识别。最棒的是,它提供了开箱即用的Web界面和API接口,10秒音频仅需70毫秒就能完成转写,还包含情感识别和音频事件检测等高级功能。

无论你是开发者想要集成语音识别功能,还是普通用户需要快速转写多语言音频,这篇文章都能帮你10分钟内完成部署并开始使用。下面我们就从环境准备开始,一步步带你体验这个强大的语音识别工具。

2. 环境准备与一键部署

2.1 系统要求与依赖安装

SenseVoice-small-onnx语音识别服务可以在大多数现代操作系统上运行:

  • 操作系统:Linux/Windows/macOS
  • Python版本:3.8或更高
  • 内存:建议至少4GB空闲内存
  • 磁盘空间:500MB以上空闲空间

打开终端,执行以下命令安装所需依赖:

# 创建项目目录(可选) mkdir sensevoice-demo cd sensevoice-demo # 安装核心依赖 pip install funasr-onnx gradio fastapi uvicorn soundfile jieba

这些包各自的作用:

  • funasr-onnx:语音识别核心推理库
  • gradio:构建Web交互界面
  • fastapiuvicorn:提供REST API服务
  • soundfile:处理音频文件
  • jieba:中文分词工具

如果安装速度慢,可以使用国内镜像源加速:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple funasr-onnx gradio fastapi uvicorn soundfile jieba

2.2 一键启动服务

服务提供者通常会给出完整的app.py启动脚本。如果没有,你可以使用以下简化版代码:

# app.py 简化示例 from funasr_onnx import SenseVoiceSmall import gradio as gr from fastapi import FastAPI import uvicorn # 初始化模型(自动使用缓存模型) model_path = "/root/ai-models/danieldong/sensevoice-small-onnx-quant" model = SenseVoiceSmall(model_path, batch_size=10, quantize=True) app = FastAPI() # 这里添加API路由和Gradio界面代码... # 实际使用时请使用完整的app.py文件 if __name__ == "__main__": uvicorn.run(app, host="0.0.0.0", port=7860)

保存后直接运行:

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:7860

3. Web界面快速体验

3.1 访问Web界面

服务启动后,打开浏览器访问:

  • Web界面http://localhost:7860
  • API文档http://localhost:7860/docs
  • 健康检查http://localhost:7860/health

Web界面通常包含以下功能区域:

  1. 音频上传区:支持拖放或点击选择文件
  2. 语言选择:auto(自动检测)/zh(中文)/en(英语)/yue(粤语)/ja(日语)/ko(韩语)
  3. 功能选项:是否启用逆文本正则化(ITN)
  4. 转写按钮:开始处理音频
  5. 结果显示区:显示识别文本

3.2 实际转写示例

我们来测试一段包含中英文混合的音频:

  1. 点击"选择文件"上传mixed_audio.wav
  2. 语言选择"auto"
  3. 勾选"启用ITN"
  4. 点击"转写"按钮

稍等片刻,你可能会看到类似结果:

今天天气真好,let's go to the park。记得带上你的dog。

对于清晰的音频,混合语言识别准确率通常能达到90%以上。ITN功能会自动将"百分之二十"转为"20%","三点五"转为"3.5"等,使结果更规范。

4. API接口调用指南

4.1 REST API基础调用

除了Web界面,服务还提供了REST API接口。用curl测试转写功能:

curl -X POST "http://localhost:7860/api/transcribe" \ -F "file=@audio.wav" \ -F "language=auto" \ -F "use_itn=true"

返回的JSON结果示例:

{ "text": "本次会议主要讨论Q2产品发布计划", "language": "zh", "duration": 5.2, "segments": [ { "start": 0.0, "end": 5.2, "text": "本次会议主要讨论Q2产品发布计划" } ] }

4.2 Python代码调用

对于开发者,可以直接使用Python调用:

from funasr_onnx import SenseVoiceSmall # 初始化模型(自动使用缓存) model = SenseVoiceSmall( "/root/ai-models/danieldong/sensevoice-small-onnx-quant", batch_size=5, quantize=True ) # 批量转写 results = model(["meeting.wav", "podcast.mp3"], language="auto", use_itn=True) for result in results: print(f"转写结果:{result['text']}") print(f"检测语言:{result.get('language', '未知')}")

5. 进阶功能与技巧

5.1 流式上传与实时转写

对于大文件或实时场景,可以使用流式上传:

import aiohttp import asyncio async def stream_transcribe(audio_path): async with aiohttp.ClientSession() as session: data = aiohttp.FormData() data.add_field('language', 'auto') data.add_field('use_itn', 'true') with open(audio_path, 'rb') as f: data.add_field('file', f, filename="audio.wav") async with session.post( 'http://localhost:7860/api/transcribe_stream', data=data ) as response: async for chunk in response.content: print(f"实时结果:{chunk.decode()}")

5.2 批量处理优化

处理大量音频时,合理设置batch_size能显著提升效率:

# 最佳batch_size取决于你的硬件配置 batch_sizes = [1, 5, 10] for size in batch_sizes: model = SenseVoiceSmall(model_path, batch_size=size, quantize=True) start = time.time() model(audio_files, language="auto") print(f"batch_size={size}, 耗时:{time.time()-start:.2f}s")

6. 总结与下一步

6.1 核心优势回顾

SenseVoice-small-onnx语音识别服务具有以下特点:

  • 多语言支持:自动检测50+语言,特别优化中/英/日/韩/粤语
  • 高效快速:10秒音频仅需70毫秒处理
  • 开箱即用:提供Web界面和API,无需复杂配置
  • 高级功能:包含情感识别、音频事件检测等

6.2 实际应用建议

根据使用经验,推荐:

  1. 清晰音频获取更好效果
  2. 已知语言时直接指定语言代码
  3. 启用ITN使数字、日期更规范
  4. 批量处理时调整batch_size优化性能

6.3 扩展探索方向

掌握了基础用法后,你可以进一步:

  1. 部署到云服务器提供在线服务
  2. 结合翻译API实现实时翻译
  3. 开发会议记录自动化工具
  4. 为视频平台自动生成字幕

现在就开始你的语音识别之旅吧!准备好你的音频文件,打开浏览器访问http://localhost:7860,体验高效的多语言转写服务。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。