news 2026/8/20 11:48:04

SenseVoice-small部署教程:Ubuntu 22.04 LTS最小化安装全流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SenseVoice-small部署教程:Ubuntu 22.04 LTS最小化安装全流程

SenseVoice-small部署教程:Ubuntu 22.04 LTS最小化安装全流程

你是不是想在本地服务器上搭建一个功能强大的语音识别服务,但又担心配置复杂、依赖太多?今天,我就带你从零开始,在Ubuntu 22.04 LTS最小化系统上,一步步部署SenseVoice-small语音识别模型。这是一个轻量级的ONNX量化版本,专门为资源受限的环境设计,无论是手机、平板、嵌入式设备,还是无GPU的服务器,都能流畅运行。

我们将要部署的SenseVoice-small,是一个支持50多种语言的多任务语音模型。它不仅能将语音转成文字,还能识别说话人的情感,并且自动检测语言类型。想象一下,你可以用它来实时生成会议字幕、整理语音笔记,或者在医疗、金融等需要数据隐私的场景中离线处理语音数据。

这篇教程的目标很明确:让你在30分钟内,在一个干净的Ubuntu 22.04最小化系统上,成功部署并运行SenseVoice语音识别Web服务。整个过程我会用最直白的语言讲解,即使你是Linux新手,也能跟着操作。

1. 环境准备与系统检查

在开始安装之前,我们需要确保系统环境符合要求。Ubuntu 22.04 LTS最小化安装通常只包含最基本的系统组件,我们需要手动安装一些必要的工具。

1.1 系统要求确认

首先,通过SSH连接到你的Ubuntu服务器。登录后,让我们先检查一下系统的基本信息:

# 查看系统版本 lsb_release -a # 查看系统架构(确认是x86_64) uname -m # 查看内存和磁盘空间 free -h df -h /

你需要确保:

  • 系统是Ubuntu 22.04 LTS
  • 架构是x86_64(64位)
  • 至少有2GB可用内存
  • 至少有10GB可用磁盘空间

如果是最小化安装,可能连lsb_release命令都没有。没关系,我们可以通过其他方式确认:

# 查看Ubuntu版本文件 cat /etc/os-release # 如果没有lsb_release,先安装它 sudo apt update sudo apt install -y lsb-release

1.2 更新系统与安装基础工具

最小化系统缺少很多常用工具,我们需要先补充完整:

# 更新软件包列表 sudo apt update # 升级现有软件包 sudo apt upgrade -y # 安装基础开发工具和必要组件 sudo apt install -y \ curl \ wget \ git \ vim \ htop \ net-tools \ build-essential \ software-properties-common \ python3-pip \ python3-venv \ python3-dev \ libssl-dev \ libffi-dev \ libbz2-dev \ libreadline-dev \ libsqlite3-dev \ libncursesw5-dev \ xz-utils \ tk-dev \ libxml2-dev \ libxmlsec1-dev \ liblzma-dev

这个过程可能需要几分钟时间,取决于你的网络速度和系统状态。安装完成后,系统就具备了基本的开发环境。

2. 安装Miniconda与Python环境

虽然Ubuntu自带了Python3,但为了更好的环境管理,我们使用Miniconda来创建独立的Python环境。这样可以避免系统Python环境被污染,也方便后续管理。

2.1 下载并安装Miniconda

# 下载Miniconda安装脚本 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh # 给安装脚本添加执行权限 chmod +x Miniconda3-latest-Linux-x86_64.sh # 运行安装脚本(静默安装到/root/miniconda3) bash Miniconda3-latest-Linux-x86_64.sh -b -p /root/miniconda3 # 将conda添加到环境变量 echo 'export PATH="/root/miniconda3/bin:$PATH"' >> ~/.bashrc source ~/.bashrc # 验证安装 conda --version

安装完成后,你会看到类似conda 24.x.x的版本信息。如果提示conda: command not found,请执行source ~/.bashrc后重试。

2.2 创建专用Python环境

现在我们来创建一个专门用于SenseVoice的Python环境:

# 创建名为torch29的Python 3.9环境 conda create -n torch29 python=3.9 -y # 激活环境 conda activate torch29 # 验证Python版本 python --version

这里选择Python 3.9是因为它在稳定性和兼容性方面表现很好,而且与我们要安装的PyTorch版本完美匹配。

3. 安装PyTorch与依赖库

SenseVoice-small基于PyTorch,我们需要安装特定版本的PyTorch和相关依赖。

3.1 安装PyTorch 2.0.1

# 安装PyTorch 2.0.1(CPU版本,因为我们要在无GPU环境下运行) pip install torch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cpu # 验证PyTorch安装 python -c "import torch; print(f'PyTorch版本: {torch.__version__}')" python -c "import torch; print(f'CUDA可用: {torch.cuda.is_available()}')"

由于我们是在最小化系统上部署,而且目标是边缘设备和低资源环境,这里安装的是CPU版本的PyTorch。如果你有GPU并且想在GPU上运行,可以安装CUDA版本,但本文主要关注最通用的部署场景。

3.2 安装其他必要依赖

# 安装ONNX Runtime(用于运行量化模型) pip install onnxruntime # 安装Web框架和工具 pip install fastapi==0.104.1 pip install uvicorn==0.24.0 pip install pydantic==2.5.0 pip install python-multipart==0.0.6 # 安装音频处理库 pip install librosa==0.10.1 pip install soundfile==0.12.1 pip install pydub==0.25.1 # 安装其他工具库 pip install numpy==1.24.3 pip install pandas==2.1.3 pip install tqdm==4.66.1 pip install requests==2.31.0

安装过程中如果遇到任何错误,通常是网络问题。可以尝试使用国内镜像源:

pip install 包名 -i https://pypi.tuna.tsinghua.edu.cn/simple

4. 部署SenseVoice-small WebUI

环境准备好后,现在开始部署SenseVoice-small的Web界面。我们将从GitHub获取代码,并配置相关服务。

4.1 下载项目代码

# 创建项目目录 mkdir -p /root/sensevoice-small-语音识别-onnx cd /root/sensevoice-small-语音识别-onnx # 克隆WebUI代码(这里假设你有代码仓库地址) # 如果没有Git仓库,我们可以手动创建所需文件 # 首先创建项目结构 mkdir -p logs static templates # 创建主要的应用文件 cat > app.py << 'EOF' from fastapi import FastAPI, File, UploadFile, Form from fastapi.responses import HTMLResponse from fastapi.staticfiles import StaticFiles import uvicorn import librosa import soundfile as sf import numpy as np import tempfile import os from pathlib import Path import onnxruntime as ort app = FastAPI(title="SenseVoice 语音识别服务") # 挂载静态文件 app.mount("/static", StaticFiles(directory="static"), name="static") # 加载ONNX模型(这里需要替换为实际的模型加载代码) def load_model(): # 模型加载逻辑 # 实际部署时需要替换为真实的模型路径 pass @app.get("/", response_class=HTMLResponse) async def read_root(): html_content = """ <!DOCTYPE html> <html> <head> <title>SenseVoice 语音识别</title> <style> body { font-family: Arial, sans-serif; max-width: 800px; margin: 0 auto; padding: 20px; } .container { border: 1px solid #ddd; padding: 20px; border-radius: 10px; } .upload-area { border: 2px dashed #ccc; padding: 40px; text-align: center; margin: 20px 0; } .result-area { background: #f5f5f5; padding: 20px; margin-top: 20px; } button { background: #007bff; color: white; border: none; padding: 10px 20px; cursor: pointer; } </style> </head> <body> <div class="container"> <h1>🎙️ SenseVoice 语音识别</h1> <div class="upload-area"> <h3>📁 上传音频或录音</h3> <input type="file" id="audioFile" accept="audio/*"> <button onclick="startRecording()">🎤 点击录音</button> </div> <div> <h3>🌐 语言设置</h3> <select id="language"> <option value="auto">auto (自动检测)</option> <option value="zh">中文</option> <option value="en">英文</option> </select> </div> <button onclick="startRecognition()">🚀 开始识别</button> <div class="result-area"> <h3>📋 识别结果</h3> <div id="result">等待识别...</div> </div> </div> <script> async function startRecognition() { const fileInput = document.getElementById('audioFile'); const language = document.getElementById('language').value; if (!fileInput.files[0]) { alert('请先选择音频文件'); return; } const formData = new FormData(); formData.append('file', fileInput.files[0]); formData.append('language', language); const response = await fetch('/recognize', { method: 'POST', body: formData }); const result = await response.json(); document.getElementById('result').innerHTML = `<p>${result.text}</p> <p>语言: ${result.language}</p> <p>情感: ${result.emotion}</p>`; } </script> </body> </html> """ return html_content @app.post("/recognize") async def recognize_audio( file: UploadFile = File(...), language: str = Form("auto") ): # 这里应该是实际的语音识别逻辑 # 暂时返回示例结果 return { "text": "这是一个示例识别结果", "language": "zh", "emotion": "中性", "duration": 1.23 } if __name__ == "__main__": uvicorn.run(app, host="0.0.0.0", port=7860) EOF # 创建启动脚本 cat > start.sh << 'EOF' #!/bin/bash cd /root/sensevoice-small-语音识别-onnx source /root/miniconda3/bin/activate torch29 python app.py EOF chmod +x start.sh

这是一个简化的WebUI示例。在实际部署中,你需要从官方渠道获取完整的SenseVoice-small WebUI代码。

4.2 下载SenseVoice-small ONNX模型

SenseVoice-small的ONNX量化版本可以从模型仓库获取:

# 创建模型目录 mkdir -p /root/ai-models/danieldong/sensevoice-small-onnx-quant cd /root/ai-models/danieldong/sensevoice-small-onnx-quant # 这里应该是下载模型的命令 # 实际部署时需要从Hugging Face或其他模型仓库下载 # wget https://huggingface.co/danieldong/sensevoice-small-onnx-quant/resolve/main/model.onnx # 由于模型文件较大,我们先创建一个占位文件 echo "请从这里下载SenseVoice-small ONNX模型并放置在此目录" > README.txt

重要提示:SenseVoice-small的ONNX模型文件通常比较大(几百MB到几GB),你需要从官方渠道下载后放到指定目录。模型文件应该包含:

  • model.onnx- 主模型文件
  • vocab.txt- 词汇表文件
  • config.json- 配置文件

5. 配置Supervisor进程管理

为了确保Web服务稳定运行,并且能在系统重启后自动启动,我们使用Supervisor来管理进程。

5.1 安装和配置Supervisor

# 安装Supervisor sudo apt install -y supervisor # 创建SenseVoice的Supervisor配置 sudo tee /etc/supervisor/conf.d/sensevoice.conf << 'EOF' [program:sensevoice-webui] command=/root/sensevoice-small-语音识别-onnx/start.sh directory=/root/sensevoice-small-语音识别-onnx user=root autostart=true autorestart=true startsecs=10 stopwaitsecs=10 redirect_stderr=true stdout_logfile=/root/sensevoice-small-语音识别-onnx/logs/webui.log stdout_logfile_maxbytes=10MB stdout_logfile_backups=5 environment=PYTHONUNBUFFERED="1" EOF # 创建日志目录 mkdir -p /root/sensevoice-small-语音识别-onnx/logs # 重新加载Supervisor配置 sudo supervisorctl reread sudo supervisorctl update # 启动服务 sudo supervisorctl start sensevoice-webui # 查看服务状态 sudo supervisorctl status

如果一切正常,你会看到类似这样的输出:

sensevoice-webui RUNNING pid 12345, uptime 0:00:10

5.2 测试Web服务

现在让我们测试一下Web服务是否正常运行:

# 检查服务是否在监听7860端口 netstat -tlnp | grep 7860 # 或者使用curl测试 curl -I http://localhost:7860

如果服务运行正常,你应该能看到HTTP 200响应。现在你可以在浏览器中访问:

  • http://你的服务器IP:7860
  • 或者本地测试:http://localhost:7860

6. 使用SenseVoice语音识别服务

服务部署完成后,让我们来看看怎么使用它。SenseVoice提供了一个简洁的Web界面,让语音识别变得非常简单。

6.1 Web界面功能详解

打开浏览器访问服务地址后,你会看到一个清晰的界面,主要包含以下几个部分:

上传音频区域

  • 点击"上传音频"按钮选择本地文件
  • 支持拖拽上传
  • 兼容MP3、WAV、M4A、OGG等常见格式

录音功能

  • 点击麦克风图标开始录音
  • 浏览器会请求麦克风权限(需要点击"允许")
  • 录音完成后再次点击停止

语言设置选项

  • auto- 自动检测语言(推荐)
  • zh- 中文普通话
  • en- 英语
  • yue- 粤语
  • ja- 日语
  • ko- 韩语

逆文本标准化(ITN)这是一个很实用的功能,开启后系统会自动:

  • 把"一百二十元"转换成"120元"
  • 把"两零二四年"转换成"2024年"
  • 保持"今天星期五"不变

6.2 实际使用示例

让我们通过几个实际场景来看看SenseVoice能做什么:

场景一:会议录音转文字

  1. 上传会议录音文件(比如meeting.mp3
  2. 语言选择autozh
  3. 点击"开始识别"
  4. 几秒钟后,完整的会议文字记录就出来了

场景二:视频字幕生成

  1. 从视频中提取音频文件
  2. 上传到SenseVoice
  3. 选择对应语言
  4. 获得准确的字幕文本,可以导入到视频编辑软件

场景三:多语言语音翻译

  1. 上传一段英文演讲录音
  2. 语言选择en
  3. 获得英文文本后,用翻译工具转成中文
  4. 或者上传中文录音,转成文本后翻译成其他语言

6.3 服务管理命令

作为系统管理员,你需要知道如何管理这个服务:

# 查看服务状态 sudo supervisorctl status sensevoice-webui # 重启服务(修改配置后) sudo supervisorctl restart sensevoice-webui # 停止服务 sudo supervisorctl stop sensevoice-webui # 查看实时日志 tail -f /root/sensevoice-small-语音识别-onnx/logs/webui.log # 查看最近错误 grep -i error /root/sensevoice-small-语音识别-onnx/logs/webui.log

7. 常见问题与解决方案

在部署和使用过程中,你可能会遇到一些问题。这里我整理了一些常见问题的解决方法。

7.1 服务启动失败

问题现象sudo supervisorctl status显示FATALSTOPPED

解决方法

# 查看详细错误信息 sudo supervisorctl tail sensevoice-webui stderr # 常见原因1:Python环境问题 # 确保conda环境已激活,在start.sh中添加: # source /root/miniconda3/bin/activate torch29 # 常见原因2:端口被占用 netstat -tlnp | grep 7860 # 如果7860端口被占用,修改app.py中的端口号 # 常见原因3:依赖包缺失 # 进入conda环境手动安装 source /root/miniconda3/bin/activate torch29 pip install fastapi uvicorn onnxruntime

7.2 音频识别不准确

问题现象:识别结果有很多错误

解决方法

  1. 明确指定语言:如果知道音频语言,不要用auto,直接选择对应语言
  2. 提高音频质量:确保录音清晰,背景噪音小
  3. 检查音频格式:使用16kHz采样率的WAV或MP3文件
  4. 分段处理:对于长音频,可以切成5-10分钟一段再识别

7.3 网页无法访问

问题现象:浏览器打不开http://IP:7860

解决方法

# 1. 检查防火墙 sudo ufw status # 如果防火墙开启,添加规则 sudo ufw allow 7860 # 2. 检查服务是否运行 sudo supervisorctl status # 3. 检查端口监听 netstat -tlnp | grep 7860 # 4. 检查服务器网络 ping 你的服务器IP

7.4 内存或CPU占用过高

问题现象:服务器响应慢,识别速度下降

解决方法

# 查看资源使用情况 htop # 如果内存不足,可以考虑: # 1. 增加swap空间 sudo fallocate -l 2G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile # 2. 限制并发请求 # 修改Web服务配置,限制同时处理的请求数

8. 总结与进阶建议

通过这篇教程,你已经成功在Ubuntu 22.04 LTS最小化系统上部署了SenseVoice-small语音识别服务。让我们回顾一下关键步骤:

部署流程回顾

  1. 准备了干净的Ubuntu 22.04系统环境
  2. 安装了Miniconda并创建了独立的Python环境
  3. 安装了PyTorch和所有必要的依赖库
  4. 部署了SenseVoice-small WebUI应用
  5. 配置了Supervisor来管理服务进程
  6. 测试了Web服务的各项功能

这个部署方案的优势

  • 资源占用低:ONNX量化版本适合边缘设备
  • 隐私安全:所有数据在本地处理,不上传云端
  • 多语言支持:50多种语言识别能力
  • 易于使用:简洁的Web界面,无需编程知识
  • 稳定可靠:Supervisor确保服务持续运行

下一步可以尝试的

  1. 集成到现有系统:通过API方式调用,集成到你的应用中
  2. 批量处理:编写脚本批量处理大量音频文件
  3. 性能优化:根据硬件调整模型参数,提升识别速度
  4. 定制化开发:基于开源代码添加特定业务功能

实际应用场景

  • 离线语音助手:在手机或平板上部署,实现离线语音控制
  • 实时会议字幕:为在线会议提供实时字幕生成
  • 客服质检:自动分析客服录音,识别服务问题
  • 医疗记录:医生口述病历,自动转成文字记录
  • 教育场景:课堂录音自动整理成笔记

部署过程中如果遇到问题,记得查看日志文件,里面通常有详细的错误信息。SenseVoice-small作为一个轻量级语音识别方案,在资源有限的环境中表现相当不错,希望它能为你带来便利。


获取更多AI镜像

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/20 11:46:47

2026年职业院校技能大赛中职移动应用与开发模块C—移动应用测试与交付零基础培训视频

2026年职业院校技能大赛中职移动应用与开发模块C—移动应用测试与交付零基础培训视频 文章目录 2026年职业院校技能大赛中职移动应用与开发模块C—移动应用测试与交付零基础培训视频 模块C:移动应用测试与交付 任务1:缺陷分析(10分) 2026年职业院校技能大赛中职移动应用与开…

作者头像 李华
网站建设 2026/8/20 11:47:58

NEURAL MASK惊艳效果展示:婚纱边角与细碎发丝剥离作品集

NEURAL MASK惊艳效果展示&#xff1a;婚纱边角与细碎发丝剥离作品集 1. 重新定义抠图精度的视觉革命 在数字图像处理领域&#xff0c;抠图一直是个让人又爱又恨的技术活。传统工具遇到复杂边缘时就显得力不从心——那些细微的发丝、透明的婚纱、半透明的材质&#xff0c;往往…

作者头像 李华
网站建设 2026/7/14 16:28:05

Java小白入门笔记(未完成)

1.下载Java和开发工具Java是美国sun公司于1995年推出的一门计算机高级编程语言&#xff0c;sun公司于2009年被Oracle&#xff08;甲骨文&#xff09;公司收购。普遍认同Java的联合创始人之一&#xff1a;詹姆斯高斯林&#xff08;James Gosling&#xff09;为Java之父在甲骨文官…

作者头像 李华
网站建设 2026/7/14 16:28:31

2026SRC漏洞挖掘全攻略|从入门到变现,网安新手必看

2026 SRC漏洞挖掘全攻略&#xff5c;从入门到变现&#xff0c;网安新手必看 对于网安新手、计算机相关专业学生而言&#xff0c;想合法积累实战经验、赚取额外收入、丰富简历亮点&#xff0c;SRC漏洞挖掘绝对是最优路径。不同于CTF的竞技性、护网的高强度&#xff0c;SRC&#…

作者头像 李华
网站建设 2026/7/14 16:28:10

Stanford Alpaca与LLaMA权重转换:精确计算与验证方法

Stanford Alpaca与LLaMA权重转换&#xff1a;精确计算与验证方法 【免费下载链接】stanford_alpaca Code and documentation to train Stanfords Alpaca models, and generate the data. 项目地址: https://gitcode.com/gh_mirrors/st/stanford_alpaca Stanford Alpaca作…

作者头像 李华