马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 pdtgY6 于 2026-5-3 10:00 编辑
本地跑过不少模型,无一例外都对设备性能要求不低,甚至一度想过入手128G内存的Mac Studio...
直到一天看到了这个omnivoice小模型真是眼前一亮的感觉。相比大语言模型Qwen3.6-35B-A3B-4bit(19.03 GB),Qwen3.6-35B-A3B-4bit(19.03 GB),GLM-4.7-Flash-4bit(15.71 GB),gemma-4-26b-a4b-it-4bit(14.57 GB),gemma-4-31b-it-4bit(17.18 GB),都需要20G+的显存才能跑的动,这个小模型用8G显存的RTX 4060也可以运行的起来。
近期在给我的agent搭建skill,顺便想能不能把这个tts model放到服务器上做api调用,就有了下面这个小项目。
先放demo:[MP3](https://videotourl.com/audio/177 ... bf-b90391b38b25.wav)、[MP3](https://videotourl.com/audio/177 ... c1-2e4331669375.wav)、[MP3](https://videotourl.com/audio/177 ... cf-81a70cc473dd.wav)
(什么年代了,不能插入视频和音频?)
本项目基于OMNIVOICE https://github.com/k2-fsa/OmniVoice
本项目仓库:https://github.com/asm0x1/omnivoice
环境介绍:本项目源码是针对绿联NAS DXP4800Plus 16G RAM版本的docker容器写的,因为模型用到的硬件不同(Device: cpu, cuda:0, mps.macos:mps,nvidia:cuda:0,intel:cpu),所以需要的依赖也是不一样的,其他设备需要根据自己硬件改一下参数。
我写了3种调用方式:1.基于本地的CLI调用,适合给本地agent或者自己临时使用的需求,重度本地调用agent可以在重写参数逻辑。2.基于Web API,适合给agent不在同一台主机需要远程调用需求的情况。3.基于web服务,适合小白新手的网页版操作界面。
nas设备做到运行这个项目没有问题,但是离好用还差很长的距离。如果想要好用还是要在nas旁边放上一台低功耗的mac mini做小型运算设备,nas只用来做外挂硬盘。
正好我说一下为什么要自己部署模型。现在的大模型已经蒸馏的很小了,马上就可以做到部署家用服务器数据中枢了,这个agent智能体就可以以视觉模型为输入,配合ASR模型来语音转文字,再配合一个比如今天做的omnivoice的TTS模型来做声音的实时输出就可以做到钢铁侠中的家庭顾问贾维斯了,这个东西人人都可以自己来搭建,数据都是在自己这边。
测试图片:
web ui
web ui
web ui
web ui
web ui
web ui
详细介绍下面我直接把 readme.md 贴到下面。(也可以上项目源地址查看)
OmniVoice TTS API
部署方式
Docker Compose(推荐)
启动后: 手动运行
需要本地安装依赖并下载模型: macOS (Apple Silicon): - pip install -r requirements-macos.txt
复制代码Linux (Docker/NAS): 测试NAS为 绿联DXP4800Plus 16G Ram版本 - pip install -r requirements-api.txt
复制代码启动 API(端口 1218)和 Web UI(端口 1219): # 终端 1: 启动 API
- python api.py --port 1218 --device auto
复制代码 # 终端 2: 启动 Web UI(内部自动调用 omnivoice-demo)启动后: 使用模式
| 模式 | 端口 | 说明 | | REST API | 1218 | 程序调用,批量生成 | | Web UI | 1219 | 浏览器交互界面 | | CLI | - | 命令行交互模式 |
CLI 模式
- python app.py --device auto
复制代码流程:扫描 voice_sample → 选择声音 → 输入文字 → 生成音频 → 循环
REST API- # 健康检查
- curl http://localhost:1218/health
- # 查看可用声音列表
- curl http://localhost:1218/voice_sample
- # 生成语音
- curl -X POST http://localhost:1218/generate \
- -H "Content-Type: application/json" \
- -d '{"text": "你好世界", "voice_sample": "xxx声音样本"}' -o output.wav
- # 批量生成
- curl -X POST http://localhost:1218/generate_batch \
- -H "Content-Type: application/json" \
- -d '{"texts": ["第一段文本", "第二段文本"], "voice_sample": "xxx声音样本"}' \
- -o batch_output.wav
复制代码
API 参数说明: | 参数 | 类型 | 必填 | 说明 | | text | string | 是 | 要合成的文本(generate接口) | | texts | string[] | 是 | 要合成的文本数组(generate_batch接口) | | voice_sample | string | 否 | 声音文件夹名,自动匹配音频和文本 | | ref_audio | string | 否 | 参考音频路径(voice_sample 未指定时必填) | | ref_text | string | 否 | 参考文本或文本文件路径 | | language | string | 否 | 语言(如 "Chinese", "English") | | speed | float | 否 | 语速(1.0 = 默认) |
输出格式: 全部返回 24kHz mono WAV
目录结构
.
├── app.py # CLI 交互模式
├── api.py # FastAPI REST 服务(端口 1218)
├── web.py # Web UI 启动器(直接启动 omnivoice-demo,端口 1219)
├── start.sh # Docker 启动脚本
├── Dockerfile
├── docker-compose.yaml
├── requirements-api.txt # Linux/Docker 依赖(API 服务)
├── requirements-macos.txt # macOS 本地依赖
├── voice_sample/ # 声音样本目录
│ └── <voice_name>/
│ ├── *.mp3 / *.wav / *.flac
│ └── *.txt (可选)
└── outputs/ # 生成的音频输出目录
声音样本格式
每个声音文件夹下需要包含:
环境变量
注意事项
模型首次启动需要下载(约 1GB),请耐心等待 CPU 模式下生成速度较慢 参考音频建议 3~10 秒,效果更好
部署方式
1.在项目主页点击 绿色code->Download Zip。
2.下载到本地的压缩包解压的文件夹移动到自己nas docker文件夹中。你需要在项目目录新建“voice_sample”和“outputs”文件夹,其中“voice_sample”文件夹中每个文件夹都是一个声音样本,声音样本文件夹中放入想要克隆的声音片段(3~10s),再放入存放这段声音的txt文档,CLI模式即可自动读取。
3.docker->项目->新建,填写 项目名称 omnivoice,compose填入文件夹内的docker-compose.yaml文件内容 -> 立即部署。
dockerfile和compose我都写了国内代理,大概几分钟可以部署完成,使用方式查看readme.md,我应该写的很清楚。
再次提示一下,用nas跑模型真的挺慢的,10s样本音频生成4个字用了6分钟的样子。对比mac生成一大段文字只需要10s+。(其实部署在mac上是个很好的选择)
|