在 RTX 3050(4GB)上同时做游戏日文对白和中文 UP 主口播时,我们把两条引擎拆开用:GPT-SoVITS 负责「演准」,IndexTTS(尤其 v1.5)负责「量产」。下面按选型、项目分工、心得和决策表整理,方便直接对照。
一、先看结论
| GPT-SoVITS | IndexTTS | |
|---|---|---|
| 最不擅长 | 4GB 上连续批量(易 OOM)、短梗词乱语种 | 日语梗原汁原味、强情绪细控(v1.5) |
| 我们的默认 | 游戏日文句、需要「像某个 CV」的中文跨语种 | UP 主口播整段、轻量重跑 |
一句话:要角色、要跨语种、要参考音精细控 → GPT-SoVITS;要中文解说量产、要省显存 → IndexTTS v1.5。
二、各自在项目里干什么
GPT-SoVITS:游戏日文 + 中文「定调」
在 lunwen 里,日文轨走同语种推理:旁白用 yuki、角色用 ema / hiro / meruru 等包。情绪不靠括号标签,靠三件套:
- 参考音频(4~8 秒干声,情绪接近)
- 参考文本(与参考音一字不差)
emo_tag→ speed / top_k / temperature 等参数表
在 oc 里,丛雨(Murasame)做中文跨语种:日语参考 + 中文正文,或中文锚点 + 中文正文。咖啡豆解说的「音色锚点」就是这样定下来的——开场一句定全片气质。
IndexTTS:中文口播的轻量主线
IndexTTS 吃的是「参考 wav + 中文正文」。我们用 GPT-SoVITS 定稿的中文句当 audio_prompt,做中→中克隆,比日→中跨语种更稳、更像「同一个人在讲」。
咖啡豆、Cursor 双池口播,默认都走 v1.5:约 2.3GB 显存、几秒一条,同进程批量也不容易炸。
三、选型对照(按场景)
| 场景 | 更合适 | 原因 |
|---|---|---|
| 游戏角色日文对白 | GPT-SoVITS | 角色包 + emo 参数成熟 |
| 中文 UP 主解说(长文案) | IndexTTS v1.5 | 快、稳、中文自然 |
| 要「像丛雨」的中文跨语种 | GPT-SoVITS | 权重与参考链路现成 |
| 短梗(Ciallo / チアロ) | 看目标 | 日语感 → GSV 日参考;要贴旁白音色 → IndexTTS + 谐音 |
| 强情绪、难关句 | IndexTTS2 或 GSV 换参考重抽 | v2 更重更慢;GSV 换参考往往更划算 |
| 3050 整版重跑 | IndexTTS v1.5,或 GSV 逐条新进程 | 同进程连跑 GSV 易 OOM |
四、GPT-SoVITS 心得
1. 引擎只吃三样东西
参考音、参考文本、推理参数。
停连秒数、退麦、引号换声线——写进「配音指导」可以给真人用,喂给 AI 等于白写。AI 侧只维护 manifest:正文、speed、合并 / 拆段例外。
2. 锚点比参数更致命
中文解说里,v002 起若以 v001 为参考,重跑 v001 = 整片音色重洗。我们踩过:整版默认重合成开场,后面全糊一层。
正确做法:
- 开场定稿后冻结到 skill/refs,不要用可被覆盖的 output 分轨当锚点
- 整版重跑默认跳过 v001;只有刻意换开场才
-IncludeV001并写回冻结文件 prompt与参考音必须一字不差
3. 参考音有硬门槛
社区 / 整合包常见要求参考大约 3~10 秒。1 秒梗音(如 cia.wav)直接喂会报错,需要垫静音或换引擎。IndexTTS 对短参考更宽容。
4. 3050 上的生存法则
- FP16、限制分配器、少碰「共享 GPU 内存」当常态方案
- 一条一进程批量,比同进程连跑稳
parallel_infer: false、batch_size: 1- aux 参考全片统一(我们用
yuki_a),乱换容易「贴话筒」突变
5. 长句与拆段
超长句可能异常拉长(曾出现应十几秒却四十多秒)。对策:按冒号 / 句号拆段推理再拼接,段间留很短静音;拆段间隔可配置,别靠堆标点。
语种也要对:罗马字 Ciallo 容易走英文前端;日梗用片假名 チアロ~ 更干净。
6. 后处理是「成片感」的一半
高通、中频清晰、削齿音、压缩、loudnorm——同一条 raw,后期差一档听感就差一档。参数可以冻结进 preset,避免每次手调。
五、IndexTTS 心得
1. v1.5 与 v2:先分场景
| v1.5 | v2 | |
|---|---|---|
| 显存(约) | ~2.3GB | 加载就接近 4GB,推理易挤共享显存 |
| 速度 | 约数秒 / 条 | 情绪路径可到几十秒 / 条 |
| 用途 | 陈述旁白、批量口播 | 情绪关键句(真需要时) |
3050 上:日常默认 v1.5。v2 要改懒加载情感模块、必要时把大模型放 CPU,否则很容易 OOM。
2. 参考音质量决定上限
用「已经听着顺耳的中文成品」当 prompt,比用日语参考硬跨语种,口播统一感好很多。我们的习惯是:GSV 定一版开场 → 冻结 → IndexTTS 整片克隆。
3. 想「快、上扬」别砍生成长度
曾为了加快,把 max_mel_tokens 压得很低,结果后面音节没发完就停。
正确顺序是:
- 让模型把字说完(token 上限够用)
- 再用
atempo/ 轻微提 pitch 做「快、亮、上扬」
另外,当前环境下 length_penalty 可能被 transformers 忽略,别当加速开关。
4. 中文谐音是「音色统一」的妥协
梗词若必须贴旁白音色,用「切啊咯」这类谐音,IndexTTS 能读稳;但那是汉字节奏,不是棚機式日语拖腔。要梗感,仍优先日语正文 + 合适参考。
5. 环境坑(装一次就记住)
- 钉
transformers==4.52.1(太新 / 太旧都会炸) - 用 Windows 原生 Python 3.12 venv,别用 msys2、也别指望 GSV 自带 3.9 runtime 装 IndexTTS
- 国内下模型:ModelScope 往往比 HuggingFace 直连靠谱
六、产线怎么搭更省事
两边最后都收敛成同一套文档习惯:
文案
→ 配音指导(给人:提词器、听检)
→ manifest(给引擎:id / 正文 / 例外)
→ 合成脚本 JOBS 与表同步
→ 分轨听检
→ 段间 gap 拼整轨(或游戏内挂 voice + 更新时长表)
段间停顿不要等距。 问句后多留一点、换题再松一点、包袱落地再松一点、收尾几乎不留——听感会像聊天,而不是念稿机。
听检只抓三条就够:
- 像跟人说话,不像课文
- 专名咬字清楚(模型名、价格、产品词)
- 无长静音尾、无尾音截断
不满意:改 speed / 换参考 / 重抽;不要在正文里堆省略号「演戏」。
七、一张决策表(可直接贴墙上)
| 你想要的 | 做 |
|---|---|
| 整片中文解说,3050 今晚要出片 | IndexTTS v1.5 + 定稿中文参考 |
| 要固定「这个人」的跨语种中文 | GPT-SoVITS + 冻结锚点,勿乱重跑开场 |
| 游戏多角色日文 | GPT-SoVITS + 角色包 + emo_tag 表 |
| 短梗又要像旁白 | IndexTTS + 谐音试听网格 |
| 短梗又要像原梗日语 | GPT-SoVITS,text_lang=ja,正文用假名 |
| 批量重跑 | IndexTTS 可同进程;GSV 必须逐条进程 |
| 听着闷、糊、贴麦 | 先查锚点是否被换、aux 是否乱换、后期 EQ,再谈调参 |
八、还没完美解决的
- IndexTTS v1.5 的「演戏感」仍弱于精挑参考的 GPT-SoVITS
- 谐音梗无法等价还原日语元音与拖腔
- 4GB 上 IndexTTS2 始终是「能用但别当默认」
- 自动选参考音(按情绪检索)还没产品化,目前仍靠人工冻结 + 试听网格
这些不妨碍出片,但决定了:默认管线要保守,难关句才上重武器。
九、收束
GPT-SoVITS 像「配音棚」:参考、角色、跨语种、参数表,适合把声音演准。
IndexTTS(尤其 v1.5)像「口播流水线」:中文稳、显存省,适合把解说量产。
我们真正赚到时间的,不是又调高了哪个 temperature,而是三件事:
- 锚点冻结,避免一次误重跑毁掉整片
- 文档分层,别让 AI 去读只有人用得上的导演备注
- 按显存选引擎,3050 上默认走轻的,难关再上重的
如果你也在 4GB 笔记本上做中文解说 + 偶尔角色声:先用 IndexTTS v1.5 跑通整轨,再用 GPT-SoVITS 定一两句「音色锚点」——这条路径,我们反复验证过,最省心。
文中路径与脚本以 oc / lunwen 当前产线为准;硬件结论针对 RTX 3050 4GB,更大显存可放宽「逐条进程」「禁用 v2 默认」等约束。