在Ubuntu 20.04服务器上部署与调用SenseVoice-Small语音识别服务 📅 发布时间:2026/7/9 20:29:05 👁️ 浏览次数: 在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星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。
判断一个图是否有回路的方法 1.并查集法对于每一个未加入连通图的点,它的祖宗一定是它自己。如果两个点之前没有连接在一起,那么他们的祖宗一定不同;如果已经连接在一起了,祖宗相同。在加入一条路段的时候,如果之前没连接在一起,那么此… 2026/7/4 9:59:34
基于GWO-CNN-LSTM-Attention超前24步多变量回归预测模型 多特征输入,单输... 基于GWO-CNN-LSTM-Attention超前24步多变量回归预测模型 多特征输入,单输出 运行平台:MATLAB 要求2023及以上版本。 1、多特征输入,单序列变量输出的超前24步预测。 2、优化参数:学习率、卷积核大小、神经元个数3个关键参数&#… 2026/7/5 21:04:57
基于Python协同过滤的智能音乐推荐系统(含完整源码与万字技术文档) 温馨提示:文末有联系方式系统核心架构解析 本推荐系统采用经典的协同过滤思想,深度融合Python生态工具链,构建高可用、易部署的智能音乐推荐引擎。歌曲特征建模与物品相似度矩阵构建 系统深度解析歌曲元数据(如流派、年代、节奏、… 2026/7/4 14:58:41
Unity泛型动画RootMotion武器脱手问题:原理剖析与解决方案 1. 项目概述:当泛型动画遇上RootMotion,武器为何“脱手”?在Unity中开发动作游戏,尤其是涉及角色装备切换(比如不同武器)时,很多开发者都会选择使用泛型动画(Generic Rig)… 2026/7/9 20:28:40
FPGA 数码管动态扫描 Verilog 实战:4位数码管 1000Hz 扫描,资源占用仅 35 LE FPGA 数码管动态扫描 Verilog 实战:4位数码管 1000Hz 扫描与资源优化在嵌入式系统和数字逻辑设计中,数码管显示是最基础也是最实用的输出方式之一。本文将深入探讨如何使用Verilog在FPGA上实现一个高效的4位数码管动态扫描驱动电路,重点解决扫… 2026/7/9 20:26:39
C++项目现代化实战:从C++98到C++23的渐进式迁移与重构指南 1. 项目概述:一场跨越二十余年的代码“考古”与“现代化”手术接手一个历史悠久的C项目,就像走进一座尘封多年的老宅。代码库里那些C98甚至更早的“古董”代码,就是日积月累的“技术债”。它们或许还能运行,但维护成本高、安全隐患… 2026/7/9 20:24:39
A100 vs A800 vs H100:3款数据中心GPU在PyTorch 2.0下的性能与配置差异解析 A100 vs A800 vs H100:3款数据中心GPU在PyTorch 2.0下的性能与配置差异解析当深度学习模型规模呈指数级增长时,GPU的选择直接决定了训练效率和成本。本文将通过实测数据对比NVIDIA三款旗舰级数据中心GPU——A100、A800和H100在PyTorch 2.0环境下的性能表… 2026/7/9 20:22:38
MATLAB fft 函数与自编蝶形算法对比:3种信号场景下的精度与速度分析 MATLAB fft 函数与自编蝶形算法对比:3种信号场景下的精度与速度分析在数字信号处理领域,快速傅里叶变换(FFT)作为离散傅里叶变换(DFT)的高效实现算法,已成为频谱分析、滤波设计和信号解调等任务… 2026/7/9 20:22:38
八大网盘直链下载终极指南:告别限速,开启高速下载新时代 八大网盘直链下载终极指南:告别限速,开启高速下载新时代 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移… 2026/7/9 20:20:38
机器视觉与PLC集成:轮毂缺陷检测与字符识别误差控制在0.2mm内 机器视觉与PLC集成:轮毂缺陷检测与字符识别误差控制在0.2mm内的技术实现轮毂作为汽车关键零部件,其表面质量直接影响行车安全与美观。传统人工检测效率低且易漏检,而采用机器视觉与PLC集成方案可实现微米级精度检测。本文将深入解析高精度视觉… 2026/7/9 0:01:04
GBase 8a vs MySQL 8.0:ALTER TABLE语法与限制的5点关键差异对比 GBase 8a与MySQL 8.0:ALTER TABLE语法差异深度解析与实战指南1. 两种数据库的ALTER TABLE能力全景对比在数据库架构设计和运维过程中,表结构变更(DDL操作)是不可避免的需求。GBase 8a作为国产分析型数据库代表,与开源M… 2026/7/9 0:03:06
【大数据毕业设计】基于多源旅游数据的景区热度分析与推荐系统的设计与实现 基于 Django 的旅游偏好挖掘与景区推荐系统(源码+文档+远程调试,全bao定制等) 博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am… 2026/7/9 0:05:09
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/7 11:26:57
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/8 20:15:17
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/8 14:25:08