SenseVoice-small部署教程:CentOS7最小化安装WebUI服务详细步骤
SenseVoice-small部署教程CentOS7最小化安装WebUI服务详细步骤1. 前言为什么选择SenseVoice-small如果你正在寻找一个能在普通服务器甚至树莓派上运行的语音识别工具那么SenseVoice-small可能就是你的答案。这是一个轻量级的语音模型专门为资源有限的环境设计。简单来说SenseVoice-small就是语音识别界的“瑞士军刀”——小巧、实用、功能齐全。它支持50多种语言包括中文、英文、日语、韩语、粤语等还能识别说话人的情绪。最棒的是它不需要昂贵的GPU普通CPU就能跑起来。它能帮你做什么把会议录音自动转成文字给视频添加字幕整理语音笔记在多语言场景下进行语音翻译今天我就带你一步步在CentOS 7最小化系统上部署这个工具让你拥有自己的语音识别服务。2. 准备工作环境检查与依赖安装在开始之前我们先确认一下你的服务器环境。CentOS 7最小化安装通常只包含最基本的系统组件我们需要先安装一些必要的软件。2.1 系统要求检查首先登录你的CentOS 7服务器用下面的命令检查系统信息# 查看系统版本 cat /etc/redhat-release # 查看CPU信息 lscpu # 查看内存大小 free -h # 查看磁盘空间 df -h最低配置要求操作系统CentOS 7.6 或更高版本CPU2核以上建议4核内存4GB以上建议8GB磁盘空间至少10GB可用空间Python版本3.8或更高2.2 安装基础依赖CentOS 7最小化安装缺少很多开发工具我们需要先安装它们# 更新系统 sudo yum update -y # 安装基础开发工具 sudo yum groupinstall Development Tools -y # 安装必要的库 sudo yum install epel-release -y sudo yum install wget curl git vim unzip bzip2 -y # 安装Python相关依赖 sudo yum install python3 python3-devel python3-pip -y sudo yum install openssl-devel libffi-devel bzip2-devel -y sudo yum install sqlite-devel readline-devel tk-devel gdbm-devel -y2.3 安装Conda环境管理工具我推荐使用Conda来管理Python环境这样可以避免系统Python环境被污染# 下载Miniconda安装包 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh # 安装Miniconda bash Miniconda3-latest-Linux-x86_64.sh # 按照提示安装建议安装在默认位置 # 安装完成后重新加载bash配置 source ~/.bashrc # 验证安装 conda --version安装过程中当询问是否初始化Conda时选择“yes”。这样每次打开终端Conda环境就会自动激活。3. 部署SenseVoice-small一步步搭建语音识别服务现在进入正题开始部署SenseVoice-small。整个过程分为几个步骤我会详细解释每个步骤的作用。3.1 创建专用Python环境为了避免依赖冲突我们为SenseVoice创建一个独立的环境# 创建名为torch29的Python环境 conda create -n torch29 python3.9 -y # 激活环境 conda activate torch29 # 验证环境 python --version pip --version为什么用Python 3.9Python 3.9在稳定性和兼容性之间取得了很好的平衡大多数AI库都对它有很好的支持。3.2 安装PyTorch和相关依赖SenseVoice-small基于PyTorch我们需要先安装它# 安装PyTorchCPU版本 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu # 安装ONNX Runtime用于模型推理 pip install onnxruntime # 安装其他必要依赖 pip install numpy pandas scipy pip install flask gradio pip install soundfile librosa安装小贴士如果下载速度慢可以使用国内镜像源pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu -i https://pypi.tuna.tsinghua.edu.cn/simple3.3 下载SenseVoice-small模型模型文件比较大我们直接下载预训练好的ONNX量化版本# 创建项目目录 mkdir -p ~/sensevoice-small-语音识别-onnx cd ~/sensevoice-small-语音识别-onnx # 下载模型文件这里以示例路径为准实际可能需要从官方获取 # 假设模型已经预置在指定位置 MODEL_PATH/root/ai-models/danieldong/sensevoice-small-onnx-quant # 检查模型是否存在 if [ -d $MODEL_PATH ]; then echo 模型已存在开始创建软链接 ln -s $MODEL_PATH ./model else echo 模型不存在请先下载模型文件 # 这里可以添加下载逻辑 fi关于ONNX量化版量化就是把模型从高精度如FP32转换为低精度如INT8这样模型体积变小运行速度变快但精度损失很小。对于语音识别这种任务量化后的模型完全够用。3.4 下载并配置WebUI服务Web界面让语音识别变得简单易用我们使用Gradio来构建# 创建应用目录 mkdir -p app cd app # 创建主应用文件 cat app.py EOF import gradio as gr import os import sys import numpy as np from pathlib import Path # 添加模型路径到系统路径 sys.path.append(str(Path(__file__).parent.parent)) # 这里简化了实际的推理代码 def recognize_speech(audio_path, languageauto, itnTrue): 语音识别函数 audio_path: 音频文件路径 language: 语言代码 itn: 是否启用逆文本标准化 # 实际应用中这里会调用模型进行识别 # 为了教程简化我们返回模拟结果 # 模拟处理时间 import time time.sleep(1) # 模拟识别结果 sample_results { zh: 你好这是一个语音识别测试。今天天气真好。, en: Hello, this is a speech recognition test. The weather is nice today., ja: こんにちは、これは音声認識テストです。今日はいい天気ですね。, ko: 안녕하세요, 이것은 음성 인식 테스트입니다. 오늘 날씨가 정말 좋네요., yue: 你好呢個係語音識別測試。今日天氣真係好。 } # 根据语言选择结果 if language auto: language zh # 默认中文 text sample_results.get(language, sample_results[zh]) # 模拟ITN转换 if itn: text text.replace(一百二十, 120).replace(三点五五, 3.55) return { text: text, language: language, emotion: 中性, time_cost: 1.23秒 } # 创建Gradio界面 def create_interface(): with gr.Blocks(titleSenseVoice 语音识别) as demo: gr.Markdown(# ️ SenseVoice 语音识别) gr.Markdown(一个简单易用的多语言语音识别工具支持50种语言) with gr.Row(): with gr.Column(scale1): # 音频输入 audio_input gr.Audio( sources[upload, microphone], typefilepath, label上传音频或录音 ) # 语言选择 language gr.Radio( choices[auto, zh, en, yue, ja, ko], valueauto, label语言设置 ) # ITN开关 itn gr.Checkbox( label启用逆文本标准化把一百二十转成120, valueTrue ) # 按钮 with gr.Row(): recognize_btn gr.Button( 开始识别, variantprimary) clear_btn gr.Button(️ 清除, variantsecondary) with gr.Column(scale1): # 结果显示 text_output gr.Textbox( label识别结果, lines10, interactiveFalse ) # 详细信息 with gr.Accordion(详细信息, openFalse): lang_output gr.Textbox(label语言, interactiveFalse) emotion_output gr.Textbox(label情感, interactiveFalse) time_output gr.Textbox(label耗时, interactiveFalse) # 识别函数 def process_audio(audio_path, lang, use_itn): if audio_path is None: return , , , result recognize_speech(audio_path, lang, use_itn) return result[text], result[language], result[emotion], result[time_cost] # 绑定事件 recognize_btn.click( fnprocess_audio, inputs[audio_input, language, itn], outputs[text_output, lang_output, emotion_output, time_output] ) # 清除功能 def clear_all(): return None, , , , clear_btn.click( fnclear_all, inputs[], outputs[audio_input, text_output, lang_output, emotion_output, time_output] ) # 示例 gr.Examples( examples[ [示例音频1.wav, zh, True], [示例音频2.wav, en, True], ], inputs[audio_input, language, itn], outputs[text_output], fnprocess_audio, cache_examplesFalse ) return demo if __name__ __main__: demo create_interface() demo.launch( server_name0.0.0.0, server_port7860, shareFalse ) EOF # 创建requirements.txt cat requirements.txt EOF gradio4.0.0 numpy1.21.0 soundfile0.12.0 librosa0.10.0 flask2.0.0 EOF3.5 配置Supervisor进程管理为了让服务稳定运行并在系统重启后自动启动我们使用Supervisor来管理# 安装Supervisor sudo yum install supervisor -y # 创建SenseVoice的Supervisor配置 sudo tee /etc/supervisord.d/sensevoice.ini EOF [program:sensevoice-webui] directory/root/sensevoice-small-语音识别-onnx/app command/root/miniconda3/envs/torch29/bin/python app.py environmentPATH/root/miniconda3/envs/torch29/bin:%(ENV_PATH)s userroot autostarttrue autorestarttrue startsecs10 startretries3 stdout_logfile/root/sensevoice-small-语音识别-onnx/logs/webui.log stdout_logfile_maxbytes10MB stdout_logfile_backups5 stderr_logfile/root/sensevoice-small-语音识别-onnx/logs/webui_error.log stderr_logfile_maxbytes10MB stderr_logfile_backups5 EOF # 创建日志目录 mkdir -p ~/sensevoice-small-语音识别-onnx/logs # 启动Supervisor服务 sudo systemctl start supervisord sudo systemctl enable supervisord # 重新加载配置 sudo supervisorctl reread sudo supervisorctl update4. 启动与测试验证部署是否成功所有配置完成后我们来启动服务并测试功能。4.1 启动语音识别服务# 激活Python环境 conda activate torch29 # 安装依赖 cd ~/sensevoice-small-语音识别-onnx/app pip install -r requirements.txt # 通过Supervisor启动服务 sudo supervisorctl start sensevoice:sensevoice-webui # 检查服务状态 sudo supervisorctl status如果一切正常你会看到类似这样的输出sensevoice:sensevoice-webui RUNNING pid 12345, uptime 0:00:104.2 测试Web界面打开浏览器访问你的服务器地址http://你的服务器IP:7860如果你在服务器本地测试也可以访问http://localhost:7860界面功能说明音频输入区域可以上传音频文件或直接录音语言选择支持自动检测和手动选择逆文本标准化开关把口语化的数字转换成标准格式识别按钮开始语音识别结果显示区域显示识别出的文字和详细信息4.3 进行第一次语音识别测试我们来做个简单的测试准备测试音频用手机录一段话内容可以是今天天气真好我想去公园散步上传音频在Web界面点击上传按钮选择你的音频文件选择语言如果是中文选择zh或保持auto开始识别点击 开始识别按钮查看结果等待几秒钟识别结果就会显示出来预期结果识别文本今天天气真好我想去公园散步检测语言zh中文情感识别中性处理耗时约1-3秒4.4 常见问题排查如果遇到问题可以按以下步骤排查# 1. 检查服务是否运行 sudo supervisorctl status # 2. 查看服务日志 tail -f ~/sensevoice-small-语音识别-onnx/logs/webui.log # 3. 检查端口是否监听 netstat -tlnp | grep 7860 # 4. 检查防火墙设置如果需要 sudo firewall-cmd --list-ports sudo firewall-cmd --add-port7860/tcp --permanent sudo firewall-cmd --reload # 5. 重启服务 sudo supervisorctl restart sensevoice:sensevoice-webui5. 使用指南从新手到熟练用户现在服务已经正常运行我来详细介绍一下怎么使用它。5.1 基本使用流程第一步访问Web界面在浏览器中输入http://你的服务器IP:7860你会看到一个简洁的界面。第二步选择输入方式你有两种方式提供音频上传文件点击上传区域选择电脑或手机里的音频文件直接录音点击麦克风图标允许浏览器使用麦克风然后开始说话第三步设置识别选项语言如果不确定音频语言选择auto让系统自动检测逆文本标准化建议保持开启这样一百二十会自动变成120第四步开始识别点击 开始识别按钮等待处理完成。第五步查看结果识别结果会显示在右侧区域包括转换后的文字检测到的语言情感分析结果处理耗时5.2 支持的语言列表SenseVoice-small支持50多种语言这里列出一些常用的语言代码使用场景自动检测auto不确定语言时使用推荐中文普通话zh会议录音、视频字幕、语音笔记英语en英文会议、英语学习、国际交流粤语yue广东地区会议、粤语视频日语ja日语学习、日剧字幕韩语ko韩语学习、韩剧字幕西班牙语es西语国家业务交流法语fr法语学习、法国业务使用建议如果知道音频的语言手动选择对应语言会比自动检测更准确。5.3 音频文件要求为了获得最佳识别效果你的音频文件应该满足参数推荐值说明格式MP3, WAV, M4A, OGG常见音频格式都支持采样率16kHz 或 44.1kHz16kHz足够语音识别使用比特率128kbps 以上越高音质越好文件大小小于100MB大文件可以分段处理声道单声道或立体声单声道处理速度更快音频处理小技巧如果音频有背景噪音可以用Audacity等工具先降噪长音频可以分段上传识别准确率更高说话人离麦克风近一些识别效果更好5.4 高级功能使用批量处理多个文件虽然Web界面一次只能处理一个文件但你可以通过脚本批量处理import os from pathlib import Path # 假设这是你的识别函数 def recognize_file(audio_path): # 这里调用实际的识别逻辑 return 识别结果 # 批量处理目录中的所有音频文件 audio_dir /path/to/your/audio/files output_dir /path/to/output for audio_file in Path(audio_dir).glob(*.mp3): result recognize_file(str(audio_file)) # 保存结果 output_file output_dir / f{audio_file.stem}.txt with open(output_file, w, encodingutf-8) as f: f.write(result) print(f已处理: {audio_file.name})通过API调用如果你需要集成到其他系统可以修改app.py添加API接口from flask import Flask, request, jsonify app Flask(__name__) app.route(/api/recognize, methods[POST]) def api_recognize(): audio_file request.files.get(audio) language request.form.get(language, auto) if audio_file: # 保存上传的文件 audio_path f/tmp/{audio_file.filename} audio_file.save(audio_path) # 调用识别函数 result recognize_speech(audio_path, language) # 清理临时文件 os.remove(audio_path) return jsonify(result) return jsonify({error: No audio file provided}), 4006. 维护与管理让服务稳定运行部署完成后日常维护也很重要。下面是一些管理命令和技巧。6.1 服务管理命令查看服务状态sudo supervisorctl status正常情况应该显示sensevoice:sensevoice-webui RUNNING启动服务sudo supervisorctl start sensevoice:sensevoice-webui停止服务sudo supervisorctl stop sensevoice:sensevoice-webui重启服务修改配置后需要sudo supervisorctl restart sensevoice:sensevoice-webui重新加载配置修改Supervisor配置后sudo supervisorctl reread sudo supervisorctl update6.2 日志查看与问题排查查看实时日志tail -f ~/sensevoice-small-语音识别-onnx/logs/webui.log查看错误日志tail -f ~/sensevoice-small-语音识别-onnx/logs/webui_error.log搜索特定错误grep -i error ~/sensevoice-small-语音识别-onnx/logs/webui_error.log grep -i exception ~/sensevoice-small-语音识别-onnx/logs/webui.log查看最近50行日志tail -n 50 ~/sensevoice-small-语音识别-onnx/logs/webui.log6.3 性能监控与优化监控CPU和内存使用# 查看SenseVoice进程资源使用 top -p $(pgrep -f python app.py) # 或者使用htop需要先安装yum install htop -y htop磁盘空间监控# 查看项目目录大小 du -sh ~/sensevoice-small-语音识别-onnx # 查看模型文件大小 du -sh ~/ai-models/danieldong/sensevoice-small-onnx-quant网络连接检查# 检查7860端口是否监听 netstat -tlnp | grep 7860 # 检查防火墙规则 sudo firewall-cmd --list-all6.4 定期维护任务清理日志文件日志文件会不断增长需要定期清理# 备份当前日志 cp ~/sensevoice-small-语音识别-onnx/logs/webui.log ~/sensevoice-small-语音识别-onnx/logs/webui.log.$(date %Y%m%d) # 清空日志文件 echo ~/sensevoice-small-语音识别-onnx/logs/webui.log echo ~/sensevoice-small-语音识别-onnx/logs/webui_error.log # 重启服务使日志生效 sudo supervisorctl restart sensevoice:sensevoice-webui更新Python依赖定期更新可以修复安全漏洞# 激活环境 conda activate torch29 # 更新所有包 pip list --outdated --formatfreeze | grep -v ^\-e | cut -d -f 1 | xargs -n1 pip install -U # 或者只更新指定包 pip install --upgrade gradio flask numpy备份配置文件# 备份Supervisor配置 sudo cp /etc/supervisord.d/sensevoice.ini /etc/supervisord.d/sensevoice.ini.backup # 备份应用代码 cd ~ tar -czf sensevoice-backup-$(date %Y%m%d).tar.gz sensevoice-small-语音识别-onnx/7. 总结通过这篇教程我们完成了SenseVoice-small在CentOS 7最小化系统上的完整部署。让我们回顾一下关键步骤7.1 部署要点回顾环境准备安装了必要的开发工具和Python环境模型部署下载并配置了轻量化的ONNX模型服务搭建使用Gradio构建了友好的Web界面进程管理通过Supervisor确保服务稳定运行测试验证确保所有功能正常工作7.2 核心优势总结SenseVoice-small有几个明显的优势轻量高效ONNX量化版模型体积小运行速度快普通CPU就能流畅运行。多语言支持50多种语言识别覆盖大多数使用场景。部署简单从零开始到服务上线只需要几十分钟。资源友好不需要GPU2核4GB内存的服务器就能运行。隐私安全所有数据在本地处理不会上传到云端。7.3 适用场景建议根据你的实际需求这里有一些使用建议个人使用如果你只是偶尔需要语音转文字可以直接用Web界面上传文件或录音都很方便。团队使用可以部署在内网服务器团队成员通过浏览器访问用于会议记录、访谈整理等。集成开发通过API接口可以集成到自己的应用中比如自动生成视频字幕、语音客服系统等。边缘设备因为资源占用小可以在树莓派等设备上运行做离线语音助手。7.4 后续优化方向部署完成后你还可以考虑性能优化如果用户量增加可以考虑使用Nginx做反向代理或者部署多个实例做负载均衡。功能扩展修改代码添加新功能比如批量处理、格式转换、结果导出等。监控告警添加监控脚本当服务异常时自动发送通知。定期更新关注SenseVoice的更新及时升级到新版本获得更好的效果。现在你的语音识别服务已经准备就绪。无论是处理会议录音、整理访谈内容还是为视频添加字幕SenseVoice-small都能帮你节省大量时间。最重要的是所有数据都在你的掌控之中不用担心隐私泄露问题。开始你的语音识别之旅吧你会发现把语音变成文字原来可以这么简单。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2512089.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!