
5分钟搞定用SenseVoice-Small ONNX模型搭建REST API语音识别服务1. 引言为什么你需要一个自己的语音识别API想象一下这个场景你手头有一堆会议录音需要整理成文字或者你的应用需要实时将用户语音转为指令。手动处理效率太低。调用昂贵的商业API成本吃不消。自己从零训练模型门槛太高。今天我要分享一个“鱼与熊掌可以兼得”的方案用SenseVoice-Small ONNX模型在5分钟内搭建一个属于你自己的、免费且高效的REST API语音识别服务。这个方案有几个让你无法拒绝的优点完全免费模型开源部署在自己的环境里没有按次调用费用。轻量高效模型经过量化体积小约230MB推理速度快10秒音频仅需约70毫秒。开箱即用我们使用一个预置好的Docker镜像省去了繁琐的环境配置和模型下载步骤。功能全面支持中文、粤语、英语、日语、韩语等多语言识别还能自动检测语言。无论你是开发者想为应用增加语音能力还是普通用户想有个私人的转录工具这篇文章都能带你轻松实现。接下来我们就从零开始一步步搭建这个服务。2. 准备工作一分钟完成环境部署搭建服务的第一步是准备运行环境。为了极致简化我们直接使用一个已经封装好的Docker镜像。你只需要确保你的机器上安装了Docker即可。2.1 核心前提安装Docker如果你还没有安装Docker可以参照以下步骤以Ubuntu系统为例# 更新软件包索引 sudo apt-get update # 安装必要的依赖 sudo apt-get install apt-transport-https ca-certificates curl software-properties-common # 添加Docker官方GPG密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - # 添加Docker仓库 sudo add-apt-repository deb [archamd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable # 再次更新并安装Docker sudo apt-get update sudo apt-get install docker-ce # 验证安装可能需要sudo sudo docker run hello-world看到“Hello from Docker!”的输出说明Docker安装成功。对于Windows或macOS用户请前往Docker官网下载并安装Docker Desktop。2.2 获取并运行镜像环境就绪后获取我们今天的“主角”镜像。这个镜像已经包含了SenseVoice-Small ONNX量化模型、推理引擎和完整的REST API服务。# 拉取预置的SenseVoice-Small语音识别镜像 # 请将 [你的镜像仓库地址]/sensevoice-small-语音识别-onnx模型(带量化后):latest 替换为实际的镜像名称 docker pull [你的镜像仓库地址]/sensevoice-small-语音识别-onnx模型(带量化后):latest # 运行容器将容器的7860端口映射到本机的7860端口 docker run -d -p 7860:7860 --name sensevoice-api [你的镜像仓库地址]/sensevoice-small-语音识别-onnx模型(带量化后):latest执行完这两条命令你的语音识别服务就已经在后台运行起来了是不是比想象中简单3. 服务初体验通过Web界面快速试用服务启动后我们先通过一个友好的Web界面来直观感受它的能力。打开你的浏览器访问以下地址http://localhost:7860你会看到一个简洁的Gradio交互界面。这个界面提供了最直接的测试方式上传音频点击上传按钮选择一个本地音频文件支持wav, mp3, m4a, flac等格式。选择语言在下拉框中你可以指定语言如zh中文或选择auto让模型自动检测。点击提交稍等片刻识别结果就会显示在下方文本框中。试试看你可以找一段包含中英文混合的录音上传选择auto模式看看模型能否准确区分并转写。界面还会显示推理耗时让你直观感受它的速度。这个Web界面非常适合快速测试和演示。但对我们开发者来说更强大的功能在于其背后的REST API。4. 核心使用通过REST API集成语音识别REST API才是将这个语音识别能力集成到你自有应用中的关键。服务启动后自动提供了完整的API文档。4.1 查看API文档访问http://localhost:7860/docs你会看到一个清晰的Swagger UI界面。这里列出了所有可用的接口及其详细参数说明是开发时最好的参考。4.2 调用转录接口核心的转录接口是/api/transcribe它支持POST请求。你可以使用任何熟悉的工具来调用比如curl、Postman或者在你的Python/JavaScript代码中调用。使用curl命令测试准备一个名为test_audio.wav的音频文件然后在终端执行curl -X POST http://localhost:7860/api/transcribe \ -F filetest_audio.wav \ -F languageauto \ -F use_itntrue参数解释file: 需要上传的音频文件。language: 识别语言。可选zh(中文)、en(英文)、yue(粤语)、ja(日语)、ko(韩语) 或auto(自动检测)。use_itn: 是否启用逆文本正则化。建议设为true它会把“三点五”转换成“3.5”把“百分之二十”转换成“20%”让结果更规范。成功的响应示例{ text: 大家好欢迎参加今天的技术分享会。Today we will talk about ONNX and AI deployment., language: zh, segments: [ { start: 0.0, end: 3.5, text: 大家好欢迎参加今天的技术分享会。 }, { start: 3.5, end: 7.0, text: Today we will talk about ONNX and AI deployment. } ] }响应里不仅包含完整的转写文本还有检测到的语言以及带时间戳的分段信息非常实用。4.3 在Python代码中集成在实际项目中我们更常用编程方式来调用。下面是一个Python示例import requests api_url http://localhost:7860/api/transcribe audio_file_path meeting_recording.mp3 # 准备请求数据 files {file: open(audio_file_path, rb)} data {language: auto, use_itn: true} # 发送POST请求 response requests.post(api_url, filesfiles, datadata) if response.status_code 200: result response.json() print(f识别语言: {result[language]}) print(f转写文本: {result[text]}) # 如果需要可以处理分段信息 for seg in result.get(segments, []): print(f[{seg[start]:.1f}s - {seg[end]:.1f}s]: {seg[text]}) else: print(f请求失败状态码: {response.status_code}) print(response.text)5. 进阶技巧与配置详解掌握了基本调用后我们来看看如何更好地驾驭这个服务。5.1 理解模型与配置这个服务使用的是SenseVoice-Small模型的ONNX量化版本。简单来说SenseVoice-Small一个在精度和速度间取得很好平衡的轻量级语音识别模型。ONNX一个开放的模型格式标准能让模型在不同框架和硬件上高效运行。量化一种压缩技术能显著减小模型体积、提升推理速度同时只损失极少精度。服务启动后模型文件位于容器的/root/ai-models/danieldong/sensevoice-small-onnx-quant路径下。你无需手动处理服务会自动加载。5.2 直接使用Python库高级除了HTTP API镜像内也包含了原始的Python库funasr-onnx。如果你需要在同一个Python环境中进行更复杂的批量处理或集成可以直接使用from funasr_onnx import SenseVoiceSmall # 指定模型路径容器内路径 model_dir /root/ai-models/danieldong/sensevoice-small-onnx-quant # 初始化模型 model SenseVoiceSmall(model_dir, batch_size10, quantizeTrue) # 进行推理支持文件路径列表 audio_files [audio1.wav, audio2.mp3] results model(audio_files, languagezh, use_itnTrue) for i, result in enumerate(results): print(f文件 {audio_files[i]} 的识别结果) print(result)5.3 健康检查与监控服务提供了一个健康检查端点方便你监控服务状态 访问http://localhost:7860/health如果返回{status:healthy}说明服务运行正常。你可以将此端点集成到你的监控系统中实现服务可用性探测。6. 总结你的专属语音识别服务已就绪回顾一下我们只用了短短几分钟就完成了几件事拉取并运行了一个包含完整语音识别服务的Docker镜像。通过Web界面快速测试了识别效果。学会了通过REST API用代码调用服务这是集成的关键。了解了服务背后的模型原理和一些进阶用法。这个基于SenseVoice-Small ONNX模型搭建的服务为你提供了一个私有化、高性能、零成本的语音识别解决方案。无论是用于开发调试、内部工具自动化还是作为轻量级生产服务它都能胜任。它的优势在于简单直接和资源友好特别适合初创项目、个人开发者或对成本敏感的场景。现在你可以放心地将语音识别功能添加到你的下一个创意中了。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。