SenseVoice-small部署教程WSL2环境Windows下运行WebUI完整步骤1. 前言为什么要在Windows上部署本地语音识别如果你经常需要处理语音转文字的工作比如整理会议录音、给视频加字幕或者处理一些涉及隐私的音频文件你可能会发现在线语音识别服务存在几个痛点网络延迟、隐私担忧、还有按使用量收费的成本问题。今天我要分享的就是在你自己的Windows电脑上部署一个完全本地的语音识别工具——SenseVoice-small。它有几个特别吸引人的特点完全离线运行所有处理都在你的电脑上完成音频数据不出本地支持50多种语言中文、英文、日语、韩语、粤语都能识别轻量级模型经过ONNX量化对硬件要求不高Web界面操作通过浏览器就能使用像访问网站一样简单最棒的是我们可以在Windows系统上通过WSL2Windows Subsystem for Linux来运行它既享受Linux环境的便利又不用离开熟悉的Windows桌面。2. 环境准备安装WSL2和必要组件在开始部署之前我们需要先搭建好基础环境。别担心我会一步步带你操作即使你是第一次接触WSL2也能跟上。2.1 启用WSL2功能WSL2是Windows自带的Linux子系统让我们能在Windows上运行Linux环境。首先检查你的系统是否支持系统要求Windows 10版本2004或更高或者Windows 11确认CPU虚拟化在任务管理器的性能标签页查看虚拟化是否已启用如果还没安装WSL2打开PowerShell以管理员身份运行输入以下命令# 启用WSL功能 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart # 启用虚拟机平台功能 dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart # 重启电脑重启后继续在PowerShell中执行# 设置WSL2为默认版本 wsl --set-default-version 2 # 安装Ubuntu发行版推荐22.04 LTS wsl --install -d Ubuntu-22.04安装过程中会提示你设置Linux用户名和密码记住这个密码后续会用到。2.2 配置Ubuntu环境安装完成后在开始菜单找到Ubuntu并打开你会看到一个命令行界面。我们先做一些基础配置# 更新软件包列表 sudo apt update # 升级已安装的包 sudo apt upgrade -y # 安装必要的工具 sudo apt install -y wget curl git python3 python3-pip python3-venv # 检查Python版本需要3.8或更高 python3 --version2.3 安装Conda环境管理工具Conda能帮我们创建独立的Python环境避免包冲突。我推荐使用Miniconda它比Anaconda更轻量# 下载Miniconda安装脚本 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh # 运行安装脚本 bash Miniconda3-latest-Linux-x86_64.sh # 按照提示完成安装建议安装在默认位置 # 安装完成后关闭并重新打开终端重新打开终端后你应该能看到命令行前面有(base)字样这表示Conda基础环境已激活。3. 部署SenseVoice-small一步步搭建语音识别服务环境准备好了现在开始部署SenseVoice-small。我会带你从下载代码到启动服务的完整过程。3.1 下载项目代码和模型首先创建一个专门的工作目录然后下载所需的文件# 创建项目目录 mkdir -p ~/sensevoice-deploy cd ~/sensevoice-deploy # 克隆WebUI代码这里假设你有项目仓库地址 # 如果没有公开仓库可以手动下载并解压 wget [WebUI代码压缩包下载链接] -O webui.zip unzip webui.zip # 创建模型目录 mkdir -p ~/ai-models/danieldong # 下载SenseVoice-small ONNX量化模型 # 注意你需要有模型的下载权限或链接 wget [模型下载链接] -O sensevoice-small-onnx-quant.tar.gz tar -xzf sensevoice-small-onnx-quant.tar.gz -C ~/ai-models/danieldong/如果你没有直接的下载链接可能需要从Hugging Face或其他模型仓库手动下载然后放到指定目录。3.2 创建Python虚拟环境为了避免包冲突我们为SenseVoice创建一个独立的环境# 进入项目目录 cd ~/sensevoice-deploy/webui # 创建Conda环境命名为sensevoice-env conda create -n sensevoice-env python3.9 -y # 激活环境 conda activate sensevoice-env # 验证环境 python --version # 应该显示Python 3.9.x3.3 安装依赖包这是最关键的一步需要安装所有必要的Python包# 首先升级pip pip install --upgrade pip # 安装PyTorch根据你的系统选择合适版本 # 如果你有NVIDIA显卡并想用GPU加速 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 # 如果你只用CPU pip install torch torchvision torchaudio # 安装ONNX Runtime pip install onnxruntime # 如果要用GPU加速的ONNX Runtime pip install onnxruntime-gpu # 安装Web框架和音频处理库 pip install fastapi uvicorn gradio pip install soundfile librosa pydub pip install numpy pandas # 安装其他可能需要的工具 pip install supervisor # 用于进程管理如果安装过程中遇到网络问题可以尝试使用国内镜像源pip install -i https://pypi.tuna.tsinghua.edu.cn/simple [包名]3.4 配置项目文件现在需要修改一些配置文件让项目能正确运行# 进入项目配置目录 cd ~/sensevoice-deploy/webui/config # 编辑模型配置文件如果存在 # 如果没有配置文件可能需要创建 cat model_config.yaml EOF model: path: /home/你的用户名/ai-models/danieldong/sensevoice-small-onnx-quant type: onnx quantized: true audio: sample_rate: 16000 chunk_duration: 30 # 每次处理30秒音频 webui: host: 0.0.0.0 port: 7860 debug: false EOF # 注意将/home/你的用户名替换为你的实际主目录路径 # 可以用 pwd 命令查看当前完整路径4. 启动WebUI服务让语音识别跑起来配置完成后我们就可以启动服务了。我会介绍几种启动方式你可以选择最适合你的。4.1 直接启动开发模式最简单的启动方式适合测试和开发# 确保在项目目录下 cd ~/sensevoice-deploy/webui # 确保Conda环境已激活 conda activate sensevoice-env # 启动WebUI服务 python app.py # 或者如果主文件是其他名字比如 main.py # python main.py如果一切正常你会看到类似这样的输出Running on local URL: http://0.0.0.0:7860 Running on public URL: https://xxxx.gradio.live4.2 使用Supervisor管理服务生产环境对于长期运行的服务建议使用Supervisor来管理它能自动重启崩溃的服务# 安装Supervisor sudo apt install -y supervisor # 创建Supervisor配置文件 sudo tee /etc/supervisor/conf.d/sensevoice.conf EOF [program:sensevoice-webui] directory/home/你的用户名/sensevoice-deploy/webui command/home/你的用户名/miniconda3/envs/sensevoice-env/bin/python app.py autostarttrue autorestarttrue startretries3 user你的用户名 environmentHOME/home/你的用户名,USER你的用户名 stdout_logfile/home/你的用户名/sensevoice-deploy/logs/webui.log stderr_logfile/home/你的用户名/sensevoice-deploy/logs/webui_error.log EOF # 创建日志目录 mkdir -p ~/sensevoice-deploy/logs # 重新加载Supervisor配置 sudo supervisorctl reread sudo supervisorctl update # 启动服务 sudo supervisorctl start sensevoice-webui # 查看服务状态 sudo supervisorctl status4.3 配置开机自启动如果你希望每次打开WSL时自动启动服务# 编辑WSL启动脚本 echo sudo supervisorctl start sensevoice-webui ~/.bashrc # 或者创建专门的启动脚本 cat ~/start_sensevoice.sh EOF #!/bin/bash conda activate sensevoice-env cd ~/sensevoice-deploy/webui python app.py EOF chmod x ~/start_sensevoice.sh5. 访问和使用Web界面服务启动后我们就可以通过浏览器来使用这个语音识别工具了。5.1 在Windows中访问WSL服务这里有个小技巧需要知道WSL2中的服务需要通过特殊的地址来访问。首先获取WSL的IP地址# 在WSL终端中执行 hostname -I # 你会看到一个IP地址比如 172.25.123.45在Windows浏览器中访问打开Chrome、Edge或其他浏览器在地址栏输入http://172.25.123.45:7860将172.25.123.45替换为你实际的WSL IP地址如果上述方法不行可以尝试使用localhost:7860某些WSL2版本支持或者在WSL中运行curl ifconfig.me获取公网IP如果有的话5.2 Web界面功能详解打开网页后你会看到一个简洁的界面主要功能区域上传音频区域点击上传音频按钮选择电脑里的音频文件支持MP3、WAV、M4A、OGG等常见格式也可以直接拖拽文件到上传区域录音功能点击麦克风图标开始录音首次使用需要允许浏览器访问麦克风说完后再次点击图标停止录音语言设置auto自动检测语言推荐zh中文普通话en英语yue粤语ja日语ko韩语还有其他40多种语言可选逆文本标准化ITN这是一个很实用的功能开启后系统会把一百二十元自动转换成120元把两零二四年转换成2024年建议大多数情况下保持开启5.3 实际使用示例让我用一个真实例子展示如何使用准备一个会议录音文件比如meeting.mp3打开Web界面点击上传按钮选择这个文件语言选择如果知道是中文会议就选zh不确定就选auto开启ITN勾选启用逆文本标准化点击开始识别等待几秒到几十秒取决于音频长度查看结果识别出的文字会显示在下方同时显示检测到的语言、处理时间等信息如果是录音识别点击麦克风图标允许浏览器使用麦克风开始说话可以看到录音波形在跳动说完后再次点击麦克风停止点击开始识别按钮6. 常见问题与解决方案在部署和使用过程中你可能会遇到一些问题。这里我整理了一些常见问题和解决方法。6.1 部署阶段问题问题安装依赖时网络超时解决方案使用国内镜像源 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名问题内存不足导致安装失败解决方案增加WSL2的内存限制 在Windows用户目录创建 .wslconfig 文件内容 [wsl2] memory4GB # 根据你的电脑配置调整 processors2 然后重启WSLwsl --shutdown问题端口7860被占用解决方案修改服务端口 在启动命令中指定其他端口 python app.py --port 7861 然后在浏览器访问 http://WSL_IP:78616.2 运行阶段问题问题模型加载失败可能原因模型文件损坏或路径错误 解决方法 1. 检查模型文件是否存在ls -la ~/ai-models/danieldong/ 2. 确认配置文件中的路径是否正确 3. 重新下载模型文件问题识别速度很慢可能原因CPU性能不足或音频文件太大 解决方法 1. 尝试使用更短的音频文件建议不超过5分钟 2. 关闭其他占用CPU的程序 3. 如果支持GPU确保安装了onnxruntime-gpu问题识别准确率不高可能原因音频质量差或背景噪音大 解决方法 1. 使用清晰的录音减少背景噪音 2. 明确指定语言而不是用auto 3. 确保音频采样率为16kHz大多数录音都是6.3 访问问题问题在Windows浏览器中无法访问解决方法 1. 检查WSL2服务是否运行sudo supervisorctl status 2. 确认防火墙没有阻止端口sudo ufw allow 7860 3. 尝试在WSL中测试curl http://localhost:7860 4. 使用WSL的IP地址而不是localhost问题麦克风无法录音解决方法 1. 检查浏览器权限确保允许网站使用麦克风 2. 测试系统麦克风在Windows中录音测试 3. 尝试使用其他浏览器Chrome或Edge通常兼容性更好7. 进阶使用与优化建议如果你已经成功部署并想进一步提升使用体验这里有一些进阶建议。7.1 性能优化技巧批量处理音频文件如果你有多个音频文件需要转换可以编写一个简单的脚本import os from pathlib import Path # 假设你的音频文件都在这个目录 audio_dir Path(~/audio_files) output_dir Path(~/transcripts) # 创建输出目录 output_dir.mkdir(exist_okTrue) # 遍历所有音频文件 for audio_file in audio_dir.glob(*.mp3): # 这里调用SenseVoice的识别函数 # 实际代码需要根据你的API调整 transcript recognize_audio(str(audio_file)) # 保存结果 output_file output_dir / f{audio_file.stem}.txt output_file.write_text(transcript) print(f已处理: {audio_file.name})使用GPU加速如果你有NVIDIA显卡可以启用GPU加速# 首先确认显卡驱动和CUDA已安装 nvidia-smi # 应该显示显卡信息 # 安装GPU版本的ONNX Runtime pip uninstall onnxruntime pip install onnxruntime-gpu # 在代码中指定使用GPU import onnxruntime as ort providers [CUDAExecutionProvider, CPUExecutionProvider] session ort.InferenceSession(model.onnx, providersproviders)7.2 集成到其他应用SenseVoice-small不仅可以单独使用还可以集成到你的其他应用中。Python API调用示例import requests import json class SenseVoiceClient: def __init__(self, base_urlhttp://localhost:7860): self.base_url base_url def transcribe_file(self, audio_path, languageauto, itnTrue): 上传音频文件进行识别 with open(audio_path, rb) as f: files {file: f} data { language: language, itn: str(itn).lower() } response requests.post( f{self.base_url}/transcribe, filesfiles, datadata ) return response.json() def transcribe_bytes(self, audio_bytes, languageauto): 直接传入音频字节数据进行识别 # 这里需要根据实际API调整 pass # 使用示例 client SenseVoiceClient() result client.transcribe_file(meeting.mp3, languagezh) print(f识别结果: {result[text]}) print(f检测语言: {result[language]}) print(f处理时间: {result[time]}秒)7.3 监控和维护对于长期运行的服务建议设置一些监控查看服务日志# 实时查看日志 tail -f ~/sensevoice-deploy/logs/webui.log # 查看错误日志 tail -f ~/sensevoice-deploy/logs/webui_error.log # 查看最近100行日志 tail -n 100 ~/sensevoice-deploy/logs/webui.log检查资源使用情况# 查看CPU和内存使用 top -p $(pgrep -f python app.py) # 查看GPU使用如果有 nvidia-smi # 查看磁盘空间 df -h ~/定期清理# 清理Python缓存 find ~/sensevoice-deploy -name __pycache__ -type d -exec rm -rf {} # 清理日志文件保留最近7天 find ~/sensevoice-deploy/logs -name *.log -mtime 7 -delete8. 总结通过这篇教程我们完成了在Windows WSL2环境下部署SenseVoice-small语音识别服务的全过程。让我们回顾一下关键步骤部署流程回顾环境准备安装WSL2和Ubuntu搭建Linux基础环境安装依赖配置Conda环境安装Python包和模型文件服务配置调整配置文件确保路径和参数正确启动服务直接运行或用Supervisor管理长期服务访问使用通过浏览器访问Web界面上传音频或直接录音技术要点总结WSL2让我们在Windows上享受Linux开发环境的便利ONNX量化模型大幅减少了资源占用让轻量级设备也能运行Web界面提供了友好的操作方式无需命令行知识完全离线运行保障了数据隐私和安全实际应用价值这个本地部署的语音识别方案特别适合隐私敏感场景医疗记录、法律录音、企业内部会议离线环境使用没有网络或网络不稳定的场合成本控制需求避免按使用量付费的云服务定制化开发可以集成到自己的应用中下一步建议如果你对这个方案感兴趣可以尝试集成到你的办公自动化流程中开发批量处理脚本提高工作效率尝试调整模型参数优化识别效果探索其他语音AI模型构建更丰富的语音处理能力最重要的是现在你拥有了一个完全由自己控制的语音识别工具不用担心数据泄露不用考虑使用成本随时可用。这种自主掌控的感觉是不是很棒获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。