本地部署 TTS 引擎实测:显存、速度、中文表现和音色克隆
本地跑 TTS 这事,我一开始是嫌麻烦的,直到有一次要配一百多条绘本音频,云端按字数算下来不便宜,而且声音没法固定。装完之后就回不去了。下面是我这边实测的情况,配置不同会有出入,数字当参考。
一、为什么值得本地跑
- 成本:一次性硬件投入,之后按量不花钱。批量配音场景回本很快。
- 稳定:声音固定不变,云端模型一升级,你上个月的音色可能就没了。
- 隐私:文本不用上传,做儿童内容、内部材料时这点重要。
- 可控:能改参数、能加词表、能批量脚本化。
二、硬件与显存要求
主流开源方案(GPT-SoVITS、CosyVoice、IndexTTS、F5-TTS、Fish-Speech 这一类)大致分两档:
- 推理:6GB 显存基本够跑大部分模型,8GB 比较舒服。纯 CPU 也能跑,但慢到没法做批量,一条 30 秒的音频可能要等几十秒到几分钟。
- 训练/微调:建议 12GB 以上,微调一个音色通常要十几到几十分钟。
我自己用的是一张 8GB 的消费卡,16GB 内存,NVMe 固态。实测下来推理完全够,微调要小心 batch size,超了直接 OOM。
几个容易忽略的点:
- 显存不够时,先看有没有 FP16 / INT8 的推理选项,开下来能省不少。
- 模型权重动辄几个 GB,硬盘留 30GB 以上。
- 一定要有固态,模型加载速度差很多。
三、部署步骤要点
以常见的开源项目为例,流程基本是这三步(具体命令看各项目 README,版本差异大)。
# 1. 拉代码
git clone <项目地址>
cd <项目目录>
# 2. 建独立环境,Python 版本按项目要求,通常 3.10 或 3.11
conda create -n tts python=3.10 -y
conda activate tts
pip install -r requirements.txt
# 3. 下权重,启动
python webui.py # 有界面的
# 或者
python api.py # 只开接口,批量跑用这个
踩过的几个坑:
- Python 版本不对是所有报错里最常见的原因,先确认再装。
- 国内网络下权重,经常下到一半断,建议提前备好镜像或者手动下载放对目录。
- 装完先跑项目自带的最简单示例,确认整条链路通了再做别的,别一上来就折腾微调。
- 批量生产建议只开 API,别用 WebUI,WebUI 有状态,脚本跑起来容易乱。
四、推理速度
用实时率 RTF(生成 1 秒音频需要多少秒)衡量,我这边 8GB 卡的大致水平:
- RTF 大约在 0.1 到 0.5 之间,也就是 10 秒的音频,1 到 5 秒出结果。
- 2000 字的小说,纯生成时间大概几分钟到十几分钟,取决于模型。
- 开 FP16、批量合并请求,还能再快一截。
- CPU 模式直接慢一个数量级,只建议用来验证环境。
对比一下:云端 API 单条通常几百毫秒返回,胜在不用维护;本地胜在量大之后几乎零边际成本。
五、中文表现
现在的开源中文 TTS,普通文本的自然度已经相当不错,日常听不出来是合成的。但有三个地方还是容易露馅:
- 多音字:重、行、了、着。各家都有词表机制,把你要读的词提前写进词表里,效果立竿见影。
- 数字和英文:“2025 年 3 月"“3.5 英寸"“iOS 18”。建议直接在文本里改成中文写法,最省事。
- 长句的停顿:长句会一口气读完。解决办法是切句,靠标点控制节奏,句号给长停、逗号给短停。
六、音色克隆效果
- 零样本克隆:给 5 到 10 秒干净参考音频,直接就能出,音色相似度大概七八成。
- 微调:给 10 到 30 分钟干净语料,相似度能到九成以上,语气和习惯也会学到,但训练要花时间,而且语料质量差会直接反映到成品上。
我的经验是,日常使用零样本就够,只有要长期固定某个角色音(比如绘本里的主人公)才值得微调。
七、适合什么人
适合:
- 需要批量配音的(绘本、有声书、课程)
- 要固定角色音、做系列的
- 在意数据不出本地的
- 愿意花半天折腾环境、会看报错日志的
不适合:
- 偶尔配一条两条,云端 API 更省心
- 手上只有核显笔记本,或者不想碰命令行
- 追求"开箱即用、永不报错”
一句总结:如果你一个月的配音量超过几千字,本地部署大概率划算;如果只是偶尔玩玩,先别折腾。