统信UOS也能本地跑AI语音合成!MOSS-TTS-Nano部署实测全流程
原文连接统信UOS也能本地跑AI语音合成MOSS-TTS-Nano部署实测全流程hello大家好呀这两年AI语音合成越来越火。很多朋友平时接触得更多的可能是云端TTS接口、在线配音平台或者各种接入现成API的方案。但如果你想要的是下面这种场景本地部署、自己可控、不依赖公网接口、能在统信UOS上直接运行还能提供Web页面给自己或团队使用那就不是简单找个在线服务能解决的了。这次就结合实测过程和大家分享一个比较有意思的项目MOSS-TTS-Nano。它可以在统信UOS上完成本地语音合成测试还能启动Web页面支持上传参考语音、配置语速并且进一步做成systemd服务长期运行。如果你正在关注信创系统上的AI应用部署、本地语音生成、轻量级TTS服务、UOS上的Python/Conda/Web服务落地这篇内容应该会对你有帮助。项目地址https://github.com/OpenMOSS/MOSS-TTS-Nano/tree/main一、这次要做的事情其实很明确先用一句话概括这次部署目标在统信UOS上把MOSS-TTS-Nano跑起来既能命令行生成语音也能通过本地Web页面使用最后还能配置成开机自启动服务。也就是说它不是“只跑个demo看看”而是包括了环境准备、项目部署、推理测试、Web化访问、服务化运行。二、先看测试环境这次部署是在统信桌面操作系统UOS Desktop专业版上完成的。这一步其实很重要因为很多人做AI项目部署时最担心的就是系统兼容性、Python环境依赖、本地音频库是否齐全、项目在信创桌面上能不能顺利跑通而从这次实测来看统信UOS完全可以承担这类本地AI语音项目的部署任务。pdsywpdsyw1024:~/Desktop$ cat /etc/os-version pdsywpdsyw1024:~/Desktop$ uname -a三、第一步先把系统依赖装好在正式部署MOSS-TTS-Nano之前先安装系统依赖。这里面几个包特别关键git拉取源码build-essential编译类依赖ffmpeg音频处理常见依赖libsndfile1音频读写相关libgomp1一些计算依赖会用到这一步本质上就是先把语音项目运行所需的系统层基础环境补齐。pdsywpdsyw1024:~/Desktop$ sudo apt update pdsywpdsyw1024:~/Desktop$ sudo apt install -y \ git wget curl ca-certificates bzip2 \ build-essential \ ffmpeg \ libsndfile1 \ libgomp1四、第二步用Miniforge/Conda管理Python环境对于这类AI项目我一直都比较建议不要直接往系统Python里装依赖而是单独建环境。先下载安装Miniforge然后创建独立Conda环境。这次部署采用的是Conda独立环境Python3.12这种方式的好处非常明显不污染系统环境、项目依赖更容易管理、出问题也更容易回滚或重建尤其是对统信UOS这类桌面系统来说这种做法会更稳。1.下载Miniforgepdsywpdsyw1024:~/Desktop$ cd ~/Downloads pdsywpdsyw1024:~/Downloads$ wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh2.安装Miniforgepdsywpdsyw1024:~/Downloads$ bash Miniforge3-Linux-x86_64.sh3.创建项目环境pdsywpdsyw1024:~/Downloads$ source ~/.bashrc (base) pdsywpdsyw1024:~/Downloads$ conda create -n moss-tts-nano python3.12 -y (base) pdsywpdsyw1024:~/Downloads$ conda activate moss-tts-nano五、第三步下载项目源码环境准备好之后就可以正式拉取项目了这个项目已经提供了命令行推理脚本、Web启动脚本、ONNX推理能力所以整体是比较适合直接落地测试的。(moss-tts-nano) pdsywpdsyw1024:~/Downloads$ mkdir -p ~/projects (moss-tts-nano) pdsywpdsyw1024:~/Downloads$ cd ~/projects (moss-tts-nano) pdsywpdsyw1024:~/projects$ git clone https://github.com/OpenMOSS/MOSS-TTS-Nano.git (moss-tts-nano) pdsywpdsyw1024:~/projects$ cd MOSS-TTS-Nano六、第四步安装Python依赖从这组依赖可以看出来MOSS-TTS-Nano不只是简单“读文本出音频”它背后还涉及文本预处理、音频推理、项目级安装等步骤。不过好在整个流程已经比较标准按顺序装下来即可。1.安装pynini(moss-tts-nano) pdsywpdsyw1024:~/projects/MOSS-TTS-Nano$ conda install -c conda-forge pynini2.1.6.post1 -y2.升级基础打包工具(moss-tts-nano) pdsywpdsyw1024:~/projects/MOSS-TTS-Nano$ pip install -U pip setuptools wheel3.安装文本处理依赖(moss-tts-nano) pdsywpdsyw1024:~/projects/MOSS-TTS-Nano$ pip install githttps://github.com/WhizZest/WeTextProcessing.git4.安装项目requirements(moss-tts-nano) pdsywpdsyw1024:~/projects/MOSS-TTS-Nano$ pip install -r requirements.txt5.以editable方式安装项目自身(moss-tts-nano) pdsywpdsyw1024:~/projects/MOSS-TTS-Nano$ pip install -e .七、第五步先用命令行测试语音生成项目部署好之后最重要的事情不是马上开Web而是先确认命令行推理能不能正常跑通。这一步的逻辑很清楚指定一个参考语音zh_1.wav输入一段测试文本输出生成音频到generated_audio/test_uos.wav如果这一步成功就说明项目依赖是通的、ONNX推理是通的、本地音频生成链路是通的这是整个部署是否成功的第一个关键验证点。(moss-tts-nano) pdsywpdsyw1024:~/projects/MOSS-TTS-Nano$ python infer_onnx.py \ --prompt-audio-path assets/audio/zh_1.wav \ --text 这是一段在统信UOS上生成的测试语音。 \ --output-audio-path generated_audio/test_uos.wav八、第六步启动本地Web页面命令行跑通之后接下来就可以把它变成更直观的本地服务了。启动完成后在浏览器中访问http://127.0.0.1:18083/这样就能打开本地Web页面。这一步非常关键因为它意味着项目不再只是开发者自己在终端里跑而是开始变成一个可视化、本地可访问的语音服务。1.启动本地Web页面(moss-tts-nano) pdsywpdsyw1024:~/projects/MOSS-TTS-Nano$ python app_onnx.py2.浏览器打开http://127.0.0.1:18083/九、Web页面里能做什么简单来说这已经不是一个“只能跑通”的内部demo而是一个可以比较正常用起来的本地语音页面。1.语音选择2.支持上传语音文件3.配置4.支持下载5.支持语速配置十、第七步把它做成systemd服务如果只是临时测试到这里其实已经够用了。但如果你想让它变成一个长期可运行的本地服务那最好的方式就是把它注册为systemd服务。这份配置有几个点很值得注意明确指定运行用户避免直接跑root属于更合理的做法。WorkingDirectory指向项目目录保证服务从正确目录启动。PATH指向Conda环境这一步非常关键否则systemd环境下往往找不到你Conda里的Python和依赖。--host 0.0.0.0表示不仅本机能访问也可以让局域网内其他设备访问这个服务。1.配置成systemd服务(moss-tts-nano) pdsywpdsyw1024:~/projects/MOSS-TTS-Nano$ sudo vim /etc/systemd/system/moss-tts-nano.service (moss-tts-nano) pdsywpdsyw1024:~/projects/MOSS-TTS-Nano$ cat /etc/systemd/system/moss-tts-nano.service [Unit] DescriptionMOSS-TTS-Nano ONNX Web Service Afternetwork.target [Service] Typesimple Userpdsyw WorkingDirectory/home/pdsyw/projects/MOSS-TTS-Nano EnvironmentPATH/home/pdsyw/miniforge3/envs/moss-tts-nano/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin ExecStart/home/pdsyw/miniforge3/envs/moss-tts-nano/bin/python app_onnx.py --host 0.0.0.0 --port 18083 Restartalways RestartSec5 [Install] WantedBymulti-user.target2.启动服务(moss-tts-nano) pdsywpdsyw1024:~/projects/MOSS-TTS-Nano$ sudo systemctl daemon-reload (moss-tts-nano) pdsywpdsyw1024:~/projects/MOSS-TTS-Nano$ sudo systemctl enable --now moss-tts-nano.service (moss-tts-nano) pdsywpdsyw1024:~/projects/MOSS-TTS-Nano$ sudo systemctl status moss-tts-nano.service十一、重启之后还能正常用吗重启测试使用正常这一步很重要因为它证明服务化配置不是“理论可行”而是重启之后仍然能正常工作。也就是说这套部署不是一次性的临时环境而是真正可以长期运行的。1.重启测试2.使用正常十二、这套方案适合什么场景如果你问我这种在统信UOS上本地部署MOSS-TTS-Nano最适合哪些场景我觉得至少包括下面这些本地AI语音测试不依赖公网接口适合自己做试验。信创环境中的语音合成服务很多环境不方便直接调用外部在线API本地部署就很有意义。内网工具化部署启动成Web服务后可以作为一个内部小工具使用。后续二次开发如果后面要做页面集成、API对接、桌面化封装这种部署方式是很好的起点。