在Ubuntu 20.04服务器上部署与调用SenseVoice-Small语音识别服务

📅 发布时间:2026/7/9 20:29:05 👁️ 浏览次数:
在Ubuntu 20.04服务器上部署与调用SenseVoice-Small语音识别服务
在Ubuntu 20.04服务器上部署与调用SenseVoice-Small语音识别服务语音识别技术正变得越来越普及从会议记录到智能客服再到视频字幕生成它的应用场景无处不在。对于开发者来说如果能快速在自有服务器上部署一个高质量的语音识别服务无疑能为自己的项目增添强大的能力。今天我们就来手把手教你如何在Ubuntu 20.04系统的服务器上部署并调用SenseVoice-Small语音识别模型。SenseVoice-Small是一个轻量级但效果出色的语音识别模型特别适合在资源有限的服务器上运行。整个过程不复杂只要你跟着步骤走一个多小时就能搞定。1. 准备工作理清思路与环境检查在开始动手之前我们先花几分钟了解一下整个流程并检查一下你的服务器环境。这能帮你避免很多中途卡壳的问题。整个部署过程可以分成几个清晰的步骤环境准备确保你的Ubuntu 20.04系统已经安装了必要的依赖比如Python、Docker如果需要的话和一些系统库。获取模型我们将通过一个便捷的平台获取预打包好的SenseVoice-Small模型服务镜像。启动服务把模型服务跑起来并确保它能正常响应。调用测试最后我们会用简单的命令行工具和Python脚本实际测试一下语音识别的效果。环境要求操作系统Ubuntu 20.04 LTS其他版本可能略有不同但20.04最稳妥。硬件建议至少有4GB以上内存。如果使用GPU加速需要NVIDIA GPU和对应的驱动。网络服务器需要能正常访问互联网以下载必要的软件包和模型。首先打开你的服务器终端用下面这个命令检查一下系统版本确认我们是基于Ubuntu 20.04来操作。lsb_release -a你应该能看到类似Description: Ubuntu 20.04.x LTS的输出。确认无误后我们就可以进入下一步了。2. 搭建基础运行环境模型服务最终要在你的系统里运行所以我们需要先给它准备好一个“家”。这一步主要是安装一些基础的软件和库。2.1 更新系统与安装核心工具首先更新一下系统的软件包列表并升级已有的软件到最新版本这是一个好习惯。sudo apt update sudo apt upgrade -y接着安装一些后续步骤可能会用到的工具比如用于管理软件源的software-properties-common以及网络工具curl和wget。sudo apt install -y software-properties-common curl wget2.2 安装Python和Pip我们的调用客户端主要是用Python来写所以需要安装Python3和包管理工具pip。Ubuntu 20.04默认应该已经安装了Python 3.8我们确认一下并安装pip。# 检查Python3版本 python3 --version # 安装pip3 sudo apt install -y python3-pip安装完成后把pip升级到最新版本并安装一个常用的虚拟环境管理工具virtualenv。使用虚拟环境可以避免项目间的Python包冲突非常推荐。pip3 install --upgrade pip pip3 install virtualenv2.3 关于Docker的说明我们这次部署的SenseVoice-Small模型是以一个封装好的服务镜像形式提供的。这意味着你有两种方式来运行它使用Docker推荐这是最简单、最干净的方式。Docker会把模型运行所需的所有依赖包括特定版本的Python库、系统库等打包在一起与你主机系统的环境隔离开。你只需要安装Docker然后一条命令就能启动服务完全不用担心环境冲突。直接运行如果你对服务器环境管理很有信心也可以选择直接下载模型文件和相关代码在主机上配置Python环境来运行。这种方式更灵活但配置步骤会多一些容易遇到依赖问题。对于大多数朋友尤其是希望快速部署、避免麻烦的我强烈建议使用Docker方式。因此下面的教程会以Docker为主线。如果你还没有安装Docker可以运行以下命令来安装# 安装Docker的官方GPG密钥和仓库 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo deb [arch$(dpkg --print-architecture) signed-by/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null # 安装Docker引擎 sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io # 将当前用户加入docker组避免每次都要用sudo操作后需要退出终端重新登录生效 sudo usermod -aG docker $USER安装完成后运行docker --version检查一下是否安装成功。3. 获取并启动SenseVoice-Small服务环境准备好了现在我们来把主角——语音识别服务——给请上场。3.1 获取模型服务镜像SenseVoice-Small模型已经被预先打包成了一个Docker镜像里面包含了模型本身、推理代码和HTTP服务接口。我们只需要把这个镜像拉取到本地。假设这个镜像的名字叫做sensevoice-small-onnx:latest具体镜像名请以你获取的实际信息为准。拉取镜像的命令很简单docker pull sensevoice-small-onnx:latest这个过程需要一些时间因为要下载模型文件体积可能有几个GB。耐心等待它完成。下载完成后你可以用docker images命令查看本地已有的镜像列表确认它已经存在。3.2 启动模型服务容器镜像拉取成功后我们就可以基于它创建一个容器并运行起来了。这里我们需要做两件重要的事映射端口将容器内部的服务端口比如8000映射到宿主机的某个端口我们也用8000这样我们才能从外面访问到这个服务。挂载数据卷可选但推荐如果你想在服务器硬盘上永久保存一些识别后的文本结果或者有固定的音频输入目录可以把主机上的一个目录挂载到容器内部。运行以下命令来启动服务docker run -d \ --name sensevoice-service \ -p 8000:8000 \ -v /path/to/your/local/data:/app/data \ sensevoice-small-onnx:latest我来解释一下这个命令-d让容器在后台运行。--name sensevoice-service给容器起个名字方便后续管理。-p 8000:8000端口映射左边是主机端口右边是容器端口。-v /path/to/your/local/data:/app/data把主机上的/path/to/your/local/data目录挂载到容器内的/app/data。请把/path/to/your/local/data替换成你服务器上真实的、有写入权限的目录路径。最后一行是镜像名。运行后使用docker ps命令你应该能看到一个名为sensevoice-service的容器正在运行。3.3 验证服务是否正常服务启动后我们第一时间要确认它是不是真的在正常工作。最直接的办法就是访问它的健康检查接口或者根路径。打开另一个终端或者就在当前终端使用curl命令测试一下curl http://localhost:8000/health或者curl http://localhost:8000/如果服务正常你应该会收到一个JSON格式的响应比如{status: ok}或者一些欢迎信息。如果看到Connection refused之类的错误可能是服务还没完全启动好稍等几秒再试或者用docker logs sensevoice-service查看容器的日志输出排查问题。4. 调用服务让模型开口“听写”服务跑起来了现在到了最有成就感的环节调用它把一段音频变成文字。我们分别用最直接的命令行方式和更灵活的Python方式来测试。4.1 使用curl进行快速测试curl是一个强大的命令行工具非常适合做快速的HTTP API测试。假设我们的语音识别服务提供了一个/transcribe接口它接受一个音频文件。首先你需要准备一个测试用的音频文件比如test_audio.wav并把它放在当前目录或者你知道的路径下。然后运行curl -X POST http://localhost:8000/transcribe \ -F audio./test_audio.wav \ -H accept: application/json这个命令的意思是-X POST使用POST方法发送请求。-F audio./test_audio.wav以表单形式上传一个文件字段名是audio文件是./test_audio.wav。-H accept: application/json告诉服务器我们希望接收JSON格式的响应。如果一切顺利服务器会返回一个JSON对象里面包含识别出来的文本可能长这样{ text: 你好欢迎使用语音识别服务。, language: zh, duration: 2.5 }恭喜你这说明你的语音识别服务已经成功部署并可以工作了4.2 编写Python客户端进行集成在实际项目中我们更多是通过编程的方式来调用服务。下面是一个简单的Python客户端示例它使用requests库来发送音频文件并获取识别结果。首先确保你在之前创建的虚拟环境里或者直接在你的项目目录下安装requests库pip install requests然后创建一个名为asr_client.py的文件写入以下代码import requests import json # 语音识别服务的地址 SERVER_URL http://localhost:8000/transcribe # 请根据实际接口地址修改 # 要识别的音频文件路径 AUDIO_FILE_PATH ./test_audio.wav def transcribe_audio(audio_path): 发送音频文件到语音识别服务并返回结果 try: # 以二进制形式打开音频文件 with open(audio_path, rb) as audio_file: # 构建文件上传的请求数据 files {audio: audio_file} # 发送POST请求 response requests.post(SERVER_URL, filesfiles) # 检查请求是否成功 response.raise_for_status() # 解析JSON响应 result response.json() return result except FileNotFoundError: print(f错误找不到音频文件 {audio_path}) return None except requests.exceptions.RequestException as e: print(f请求服务时出错{e}) return None except json.JSONDecodeError: print(错误无法解析服务器的响应) return None if __name__ __main__: # 执行识别 print(f正在识别音频文件: {AUDIO_FILE_PATH}) recognition_result transcribe_audio(AUDIO_FILE_PATH) if recognition_result: print(识别成功) print(f识别文本{recognition_result.get(text, N/A)}) print(f识别语言{recognition_result.get(language, N/A)}) print(f音频时长{recognition_result.get(duration, N/A)} 秒) else: print(识别失败。)保存文件后在终端运行它python3 asr_client.py如果看到输出了识别出的文字那么你的Python客户端也调通了。这个脚本虽然简单但已经包含了错误处理的基本框架你可以根据实际服务的API响应格式进一步调整和扩展它比如处理更复杂的返回结果、支持批量识别等。5. 总结走完上面这些步骤你应该已经在Ubuntu 20.04服务器上成功搭建起了一个可用的SenseVoice-Small语音识别服务。我们来简单回顾一下关键点整个过程其实挺清晰的就是准备环境、拉取服务、启动容器、最后测试调用。Docker的用法大大简化了部署的复杂度让你不用去纠结各种Python包版本和系统依赖的冲突问题。在实际使用中你可能还会遇到一些情况比如想修改服务的端口号、调整模型的参数比如是否启用GPU、或者处理更长的音频文件。这些通常可以通过给docker run命令传递额外的环境变量参数来实现具体可以查阅这个模型镜像的使用说明。另外对于生产环境你可能还需要考虑一些额外的事情比如如何让服务在服务器重启后自动启动可以研究一下Docker的--restart参数如何用Nginx做反向代理和负载均衡以及如何监控服务的运行状态和日志。不过那都是后话了先把服务跑起来解决从无到有的问题总是最重要的第一步。希望这篇教程能帮你顺利趟过部署的坑。语音识别是个很有意思的方向有了这个本地化服务你可以尝试做很多有趣的应用比如自动给视频加字幕、分析会议录音、甚至做一个你自己的语音助手原型。动手试试吧遇到问题多查查日志和文档大部分都能解决。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。