📌 隶属于架构蓝图: 企业级 AI Agent 与本地 GPU 算力自动化 → L3: 本地 GPU 算力底座与语音/视觉推理

从云端转本地:在 12GB 显卡与群晖 N8N 上搭建中英混读高保真 TTS 语音栈

· 7 分钟 · 工程案例 ttsain8ngpucosyvoiceself-hosting

在过去两年中,我们的内部业务自动化管线、Telegram 智能机器人以及视频知识库转写系统,一直依赖云端 Text-to-Speech(文本转语音)服务。起初,社区封装的 Microsoft Edge-TTS 提供了一个零成本的过渡方案;但依赖公网未公开接口的爬虫调用本质上极其脆弱——微软端点频繁变更签名、国内与海外网络抖动、以及跨国链路的偶发限流,经常导致自动化链路在半夜静默失败。而转用商业级 Azure Speech 或 Google Cloud TTS,在面对大批量长文本合成时,按字符计费的月度账单又显得不合算。

随着我们在 Unraid 服务器上为 Windows 11 虚拟机配置了直通的 NVIDIA RTX 3060 12GB 独立显卡,我们决定将整套语音合成系统完全收敛到本地局域网。

本文记录我们如何选型阿里巴巴开源的 CosyVoice 2,将其接入群晖 NAS 的 n8n 自动化集群,实现显存按需管理与开机常驻,并构建覆盖女童、正太、青年解说与纯正中英双语的零样本语音栈。


1. 核心需求与设计指标

在开工搭建之前,我们确立了四个关键要求:

  1. 丝滑的中英混读(Code-switching)能力:在马来西亚与东南亚的业务沟通场景中,日常对话几乎都是中英双语交织(例如:“请确认这个 webhook 已经 trigger,并检查 logs”)。传统的 TTS 模型在遇到英文字词时往往会生硬卡顿、甚至读错音素,引擎必须能够自然过渡。
  2. 零样本(Zero-shot)多音色快速切换:需要支持多种人设音色——讲故事需要的活泼童声、科技资讯需要的沉稳播音男声、以及客服交互需要的自然女声,且无需耗时数小时重新微调。
  3. 显存共存与无痛调度:12GB 显存是宝贵资产,这台工作机平时还要承载 LM Studio 的 Qwen 大模型推理以及 ComfyUI 生图生视频任务。TTS 引擎要么显存占用极小,要么能够随时一键启停释放显存。
  4. 无缝替换群晖 n8n 旧节点:自动化调度中心跑在群晖 DSM 的 n8n 实例(n8n.internal:5678)上,本地新接口必须兼容通用 HTTP Webhook,无需重构现有工作流业务逻辑。

2. 模型选型:为什么是 CosyVoice 2?

针对中文、英文以及核心的中英混读场景,我横向对比了目前主流的本地开源方案:

模型方案优势不足选型结论
Edge-TTS / Piper超轻量、纯 CPU 即可跑音质机械感明显、无法自主克隆彻底淘汰
ChatTTS拟人化笑声与叹气细节好经常胡言乱语、英文发音偏弱、长句难控不满足生产要求
GPT-SoVITS (v2)特定人物音色克隆还原度极高语种切换边界容易卡顿顿挫、中英混读较硬备选 / 按需冷启
CosyVoice 2 (0.5B)中英混读极度自然、首包延迟仅 300ms常驻需要约 3.2GB 显存生产主力首选

阿里开源的 CosyVoice 2(0.5B 自回归语言模型 + 流匹配 Flow Matching 解码器)在多语种混排上展现出了目前开源界的最佳水准。英文单词直接嵌入在中文句子中读出时,发音地道、重音准确,完全没有传统音素拼接的违和感。


3. 局域网网络与硬件拓扑

整套系统的部署拓扑如下:

[ 外部调用 / 终端应用 ]
           │
           ▼
[ 群晖 DSM 私有存储节点 ]
  ├── 反向代理网关 (Traefik / Nginx)
  └── n8n 自动化调度集群
           │  局域网 HTTP POST / GET (/webhook/ltts)
           ▼ (千兆内网无公网延迟)
[ Unraid 宿主机 ]
  └── Windows 11 虚拟机 (GPU 直通)
       ├── NVIDIA GeForce RTX 3060 12GB
       └── CosyVoice 2 FastAPI 服务 (127.0.0.1:50000)

通过在 CosyVoice 的服务脚本中直接挂载 FastAPI 路由,我在 Windows 本地 50000 端口暴露出 /tts 端点,内网其他服务只需向 http://gpu-node.internal:50000/tts 发送请求即可在 2 秒内拿回二进制 WAV 音频。


4. 显存治理:常驻守护与一键开关

12GB 显存如果任由各个 AI 工具同时加载,瞬间就会爆显存(OOM)。我采取了“分级常驻 + 幂等开关”策略:

  1. 低显存常驻(日常状态):CosyVoice 2 推理仅占用 3.2 GB 显存,剩余近 9 GB 显存完全足以同时运行日常的系统桌面和轻量任务。我将其写入 Windows 开机启动项(shell:startup\CosyVoice 2.lnk),开机静默常驻后台。
  2. 一键切换脚本(高负载避让):当需要运行 ComfyUI 渲染整首 MV 或加载 14B 大语言模型时,桌面上放有一个免人工干预的批处理快捷方式 CosyVoice 2 (开·关).bat:
@echo off
title CosyVoice 2 Toggle
for /f "tokens=5" %%a in ('netstat -aon ^| findstr :50000') do (
    taskkill /F /PID %%a >nul 2>&1
    echo STOPPED. GPU 显存已完全释放。
    exit /b
)
:: 若未运行,拉起后台推理服务
start /b python webui.py --port 50000 --model_dir pretrained_models/CosyVoice2-0.5B
echo ONLINE - CosyVoice 2 已加载至显卡,服务就绪。

双击一次即刻杀掉进程、半秒内退还 3.2GB 显存;渲染完毕后再双击一次,25 秒内重新完成模型加载。


5. 群晖 N8N 联动接入

我在群晖 n8n 上配置了名为 Local TTS API (CosyVoice) 的独立工作流,绑定路径为 /webhook/ltts:

在工作流内部,我使用 JavaScript Code 节点对传入文本做字符解码与清洗,再通过 HTTP Request 节点转发给本地 50000 端口(http://gpu-node.internal:50000/tts),最终以 firstEntryBinary 模式直接将音频流送还客户端。


6. 音色库扩展:零样本克隆实践

得益于 CosyVoice 2 的 Zero-shot 能力,只需提供 3~5 秒无杂音的人声样音,模型即可实时复刻其声线特征。我在服务内部预制了常用音色表:

音色代号声音风格样音来源与特色
child / girl活泼女童声纯净 4 秒学前童声对话,清脆甜美
boy清脆男童声(正太音)5 秒少儿动漫旁白
male / yunxi阳光青年男声5 秒科技解说,中英专业词汇混读极佳
news沉稳新闻男声5 秒纪录片解说样本
female温暖知性女声5 秒电台散文朗诵
default旗舰高保真女声CosyVoice 官方基准母声

调用时只需指定 voice 参数,无需重启后端或切换模型权重,即可实现毫秒级换人合成。


7. 运行成效

在本地 RTX 3060 上运行实测:

自托管高品质 AI 语音不再是大型服务器集群的专利。借助新一代自回归+扩散语音架构与消费级显卡,一套完全受控、零月租且音质超越商业云服务的全天候语音栈,已经完全可以在自托管生产环境中稳定运转。


想为你的业务搭建私有化 AI 语音与自动化管线?

如果你的客服机器人、内容生产流水线或内部系统正在为高昂的云端语音 API 账单买单,或者需要地道的中英混读与专属音色克隆,我可以帮你把整套高保真 TTS 与 n8n 自动化工作流私有化部署到你自己的硬件上。

Lee Teong Hoe

Lee Teong Hoe · Mr Hoelee

Full-stack developer & DevOps engineer based in Malaysia. I run my own production infrastructure and build web systems for small businesses — this blog is the living record.

Hiring? Profile & stack · Malaysian SME? Website design & development ↗ · All posts