在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

核心目标:让你的 IndexTTS2 能像 Demo 展示的那样,通过三种方式精准控制情绪表达——情感参考音频、情感向量、情感描述文本——并且权重连续可调,音色稳定不飘。


第一部分:理解"情绪可控"到底意味着什么

1.1 你给的 Demo 已经告诉你答案了

看你的 IndexTTS Demo 文件,里面最关键的信息是:同一个音色参考音频(voice_01.wav)下,可以通过三种完全不同的方式让输出带上情绪

方式一:情感参考音频驱动

  • voice_07.wav:用 emo_sad.wav 作为情感参考,权重 0.65,文本"酒楼丧尽天良…"
  • voice_08.wav:用 emo_hate.wav 作为情感参考,权重 0.65,文本"你看看你,对我还有没有…"

方式二:情感向量驱动

  • voice_09.wav:文本"对不起嘛!…",在"喜"和"哀"维度上各给 0.8
  • voice_10.wav:文本"哇塞!这个爆率…",在"喜"和"惊喜"维度上各给 0.8 和 1

方式三:情感描述文本驱动

  • voice_11.wav:权重 1,描述"极度悲伤"
  • voice_12.wav:权重 1,描述"You scared me to death! What are you, a ghost?"

这三种方式背后的逻辑完全不同:

  • 参考音频:让模型"模仿这段音频的说话方式"
  • 情感向量:让模型"按照这 8 个维度的配比来表达"
  • 描述文本:让模型"理解这段话的情绪意图"

你的微调目标就是:让模型在这三种输入下都能稳定、连续、可控地输出对应情绪,而且音色不能变


1.2 情绪控制的三大难点(也是你微调要解决的)

难点一:情绪强度要连续可调

  • Demo 里权重有 0.65、0.8、1.0 这些值
  • 你推理时如果把权重从 0.3 调到 1.0,输出应该是"逐渐变强",而不是"突然跳变"或"完全没差别"

难点二:音色不能因为情绪变化而飘

  • 同一个音色参考音频(voice_01.wav),无论加什么情绪,听起来都应该是"同一个人在用不同情绪说话"
  • 而不是"换了情绪就像换了人"

难点三:三种控制方式要互不打架

  • 你不能训练完发现:用情感参考音频很准,但情感向量完全不生效
  • 或者:情感描述文本很强,但一用情感向量就崩

第二部分:数据准备——情绪控制的"燃料"怎么造

2.1 数据的基础要求:音频质量决定情绪表达上限

音频清洗标准(Audio cleaning criteria)

  1. 采样率统一(Sample rate consistency)

    • 建议全部转成 22.05kHz 或 24kHz
    • 不要混用 16kHz、44.1kHz、48kHz,会让模型学到"采样率=风格"的错误映射
  2. 去除底噪与爆音(Noise and clipping removal)

    • 情绪表达很依赖"能量变化"(Energy dynamics),底噪会让模型把噪声当情绪
    • 爆音(削波)会让模型学到"愤怒=削波",推理时即便平静也可能削波
  3. 音频长度分布合理(Duration distribution)

    • 建议单条 2~15 秒
    • 太短(<1 秒)学不到韵律(Prosody)
    • 太长(>20 秒)容易断句混乱
  4. 文本与音频严格对齐(Text-audio alignment)

    • 不要把"两句话的音频"标成"一句话的文本"
    • 标点要准确:逗号、句号、问号、感叹号直接影响韵律建模

为什么这些"老生常谈"对情绪控制特别关键?
因为情绪表达本质是"韵律+能量+音高"的组合变化。如果你的音频质量乱,模型会把噪声、削波、断句错误当作"情绪特征"学进去,导致推理时:

  • 想要"平静"却带底噪
  • 想要"惊喜"却削波
  • 想要"悲伤"却断句乱跑

2.2 情感参考音频库(Emotion reference bank):你的第一套"情绪燃料"

目标:建立一个"情绪典型样本库",每种情绪挑最纯粹、最稳定的音频作为参考。

实操步骤

步骤 1:确定你要支持的情绪类别

  • Demo 里出现了 8 种:喜/怒/哀/惧/厌恶/低落/惊喜/平静
  • 你可以先从最常用的 4~6 种开始:平静、惊喜、悲伤、愤怒、厌恶

步骤 2:从你的语料里筛选"情绪最典型"的音频

  • 每种情绪挑 50~200 条短句(2~5 秒)
  • 标准:听起来"一听就是这个情绪,没有歧义"
  • 例如:
    • 悲伤:语速慢、能量低、尾音下沉、停顿多
    • 惊喜:语速快、能量高、尾音上扬、音高跳跃大
    • 愤怒:能量高、咬字重、停顿短促

步骤 3:给每条参考音频命名并归档

emo_ref/
├── sad/
│   ├── sad_001.wav
│   ├── sad_002.wav
│   └── ...
├── surprise/
│   ├── surprise_001.wav
│   └── ...
├── anger/
│   ├── anger_001.wav
│   └── ...
└── calm/
    ├── calm_001.wav
    └── ...

步骤 4:制作"参考音频→情绪标签"的映射表
你需要一个清单(可以是 Excel 或 CSV),记录:

  • 参考音频路径
  • 对应的情绪类别
  • 典型程度(可选,用于后续筛选)

2.3 情感向量标注(Emotion vector annotation):你的第二套"情绪燃料"

目标:为每条训练音频标注一个 8 维向量,表示它在"喜/怒/哀/惧/厌恶/低落/惊喜/平静"上的强度分布。

标注路线(从易到难)

路线一:单一主情绪标注(One-hot labeling)

  • 最简单:每条音频只标一个主情绪,该维度=1,其余=0
  • 例如:
    • “哇塞!这个爆率也太高了!” → 惊喜=1,其余=0
    • “这些年的时光终究是错付了…” → 哀=1,其余=0

路线二:强度分级标注(Intensity grading)

  • 允许 0.3 / 0.5 / 0.8 / 1.0 这种强度
  • 例如:
    • “还不错啦” → 喜=0.5,平静=0.5
    • “太棒了!!!” → 喜=1.0,惊喜=0.8

路线三:混合情绪标注(Mixed emotion)

  • Demo 里 voice_09.wav 就是混合:喜=0.8,哀=0.8
  • 适合复杂情绪:苦笑、惊恐、愤怒中带委屈等

标注工具建议

  • 用 Excel 或 Google Sheets,列出 8 个情绪维度
  • 每条音频听一遍,填数字
  • 如果你有团队,建议 2~3 人交叉标注,取平均值

最常见的标注错误

  • 错误 1:按文本语义标注,而不是按音频实际表达
    • 文本:“我很开心”,但说话人语气平淡 → 应该标"平静"而不是"喜"
  • 错误 2:把"能量高"当"愤怒"
    • 惊喜和愤怒都能量高,但音高曲线、停顿模式完全不同
  • 错误 3:混合情绪标注过于随意
    • 不要每条都标成"8 个维度都有一点",会让模型学不到清晰边界

2.4 情感描述文本(Emotion description text):你的第三套"情绪燃料"

目标:为每条音频写一个"情绪描述短句",让模型学会"从自然语言理解情绪意图"。

实操建议

建议 1:描述要短、明确、可复用

  • 好的例子:
    • “极度悲伤”
    • “惊喜又兴奋,语速快”
    • “压抑、低落、说话很慢”
    • “愤怒,咬牙切齿”
  • 不好的例子:
    • “这个人可能经历了一些事情所以有点难过但又不是特别难过” ← 太模糊

建议 2:同一种情绪可以有多种描述(数据增强 Data augmentation)

  • 同一条"悲伤"音频,可以标注为:
    • “极度悲伤”
    • “非常难过,声音压抑”
    • “像刚经历重大失落”
  • 这样模型会学到"不同表述指向同一风格"

建议 3:支持中英文(Demo 已展示)

  • voice_12.wav 的描述是英文:“You scared me to death! What are you, a ghost?”
  • 如果你的业务需要中英文混用,训练集也要覆盖

建议 4:描述可以包含"韵律细节"

  • 不只是情绪类别,还可以加:
    • “语速快”
    • “尾音上扬”
    • “停顿多”
    • “咬字重”
  • 这会让控制更细粒度

2.5 数据清单模板(Manifest template):把三种控制方式统一管理

你需要一个"训练样本清单",每一行是一条训练样本,字段要能表达 Demo 的三种控制方式。

推荐字段(可用 Excel 或 CSV 管理)

字段名说明示例
utt_id样本唯一 ID000001
wav_path音频路径data/wavs/000001.wav
text文本转写Translate for me, what is a surprise!
spk_ref_wav音色参考音频data/spk_ref/voice_01.wav
emo_mode情绪控制方式none / ref_audio / vector / desc_text
emo_ref_wav情感参考音频路径data/emo_ref/sad/sad_001.wav
emo_weight情感权重0.65
emo_vec情感向量(8 维)[0,0,0.8,0,0,0,0.8,0]
emo_desc情感描述文本极度悲伤

示例清单(对应 Demo 的几条样例)

utt_id,wav_path,text,spk_ref_wav,emo_mode,emo_ref_wav,emo_weight,emo_vec,emo_desc
000001,data/wavs/000001.wav,Translate for me what is a surprise!,data/spk_ref/voice_01.wav,none,,,,"[0,0,0,0,0,0,0,0]",""
000007,data/wavs/000007.wav,酒楼丧尽天良开始借机竞拍房间哎一群蠢货,data/spk_ref/voice_01.wav,ref_audio,data/emo_ref/sad/emo_sad.wav,0.65,"[0,0,0,0,0,0,0,0]",""
000009,data/wavs/000009.wav,对不起嘛我的记性真的不太好但是和你在一起的事情我都会努力记住的,data/spk_ref/voice_01.wav,vector,,0.8,"[0.8,0,0.8,0,0,0,0,0]",""
000011,data/wavs/000011.wav,这些年的时光终究是错付了,data/spk_ref/voice_01.wav,desc_text,,1.0,"[0,0,0,0,0,0,0,0]","极度悲伤"

关键点

  • emo_mode 用来区分训练时用哪种控制方式
  • 即便某个字段不用,也保留为空,方便统一处理
  • spk_ref_wavemo_ref_wav 是两个不同"通道",别混

第三部分:训练策略——如何让"情绪"和"音色"不打架

3.1 两阶段训练法(Two-stage fine-tuning):先稳后控

为什么要分两阶段?
如果你一上来就喂大量"极度悲伤"“愤怒咆哮”,模型很容易把"情绪的能量变化"学成"发音错误、断句错位、音色飘移"。

阶段 1:稳定性训练(Stabilization)

  • 目标:输出清晰、可懂、音色稳定、断句自然
  • 数据选择
    • 以"平静"或"中性情绪"为主
    • 语速正常、发音标准、情绪不极端
  • 情绪控制设置
    • 全部设为"平静=1"或不加情绪条件
    • 或者:情绪权重全部设为 0.3 以下(弱控制)
  • 训练时长
    • 单说话人:1000~3000 步
    • 多说话人:5000~10000 步
  • 验证标准
    • 听起来"像这个人在正常说话"
    • 没有明显的发音错误、断句错位、音色飘移

阶段 2:情绪可控性训练(Controllability)

  • 目标:三种控制方式都生效,权重连续可调,音色不飘
  • 数据选择
    • 混合三种情绪控制方式
    • 覆盖你要支持的所有情绪类别
    • 同一说话人要有多种情绪的样本
  • 情绪控制设置
    • 方式一(情感参考音频):随机抽取情绪参考音频,权重从 0.4~1.0 随机采样
    • 方式二(情感向量):按标注的向量输入,权重从 0.5~1.0 随机采样
    • 方式三(情感描述文本):按标注的描述文本输入,权重从 0.6~1.0 随机采样
  • 训练时长
    • 在阶段 1 基础上继续训练 2000~5000 步
  • 验证标准
    • 同一文本+音色,改变情绪控制,输出应该明显不同
    • 权重从 0.3→1.0,情绪强度应该连续变化
    • 音色应该保持稳定(不能"换情绪就换人")

3.2 多条件混合训练(Multi-conditioning training):让三种控制方式都生效

核心思想:训练时随机选择一种控制方式,让模型学会"对三种输入都敏感"。

实操方法

方法 1:按比例混合

  • 30% 样本用情感参考音频
  • 30% 样本用情感向量
  • 30% 样本用情感描述文本
  • 10% 样本不加情绪控制(保持平静)

方法 2:同一样本多次使用不同控制方式(数据增强)

  • 同一条音频,可以:
    • 第一遍:用情感参考音频
    • 第二遍:用情感向量
    • 第三遍:用情感描述文本
  • 这样模型会学到"三种输入指向同一输出"

方法 3:控制方式可以叠加(高级用法)

  • 例如:同时给情感向量和情感描述文本
  • 但要注意:叠加时权重总和不要超过 1.5,否则容易过强导致音色飘

3.3 权重随机化(Weight sampling):让权重连续可调

为什么要随机化权重?
如果训练时权重总是固定(比如总是 1.0),模型不会学到"权重变化→情绪强度变化"的映射。推理时你把权重调到 0.5,可能完全没效果。

实操方法

方法 1:从区间随机采样

  • 情感参考音频:权重从 [0.4, 1.0] 均匀采样
  • 情感向量:权重从 [0.5, 1.0] 均匀采样
  • 情感描述文本:权重从 [0.6, 1.0] 均匀采样

方法 2:分档采样(离散化)

  • 权重只取:0.3 / 0.5 / 0.65 / 0.8 / 1.0
  • 好处:模型在这些"锚点"上会学得更稳定
  • 坏处:中间值(如 0.7)可能不够平滑

方法 3:动态权重(高级)

  • 训练前期:权重偏小(0.3~0.6),让模型先学会"弱控制"
  • 训练后期:权重偏大(0.6~1.0),让模型学会"强控制"

3.4 音色保持约束(Speaker preservation):防止"换情绪就换人"

最常见的问题

  • 平静时听起来是 A
  • 加上"愤怒"后听起来像 B
  • 加上"悲伤"后听起来像 C

原因分析

  • 数据偏差:某种情绪的样本几乎都来自某个说话人
    • 例如:"愤怒"样本 80% 是男声,"悲伤"样本 80% 是女声
    • 模型会学到"愤怒=男声"“悲伤=女声”
  • 情绪条件过强:情绪信号压过了说话人信号

解决方法

方法 1:数据层面——同一说话人覆盖多情绪

  • 确保每个说话人至少有 4~6 种情绪的样本
  • 每种情绪至少 20~50 条
  • 不要让"某情绪=某说话人"

方法 2:训练层面——情绪权重不要过高

  • 阶段 2 训练时,权重上限设为 0.8~1.0
  • 不要让权重超过 1.2(除非你确实需要极端风格)

方法 3:验证层面——固定音色参考,扫描情绪

  • 推理时:固定 spk_ref_wav,只改情绪控制
  • 听所有输出,确认"听起来是同一个人"

第四部分:推理与评估——如何验证"情绪控制"真的生效了

4.1 推理配置管理(Inference configuration):像 Generation strategies 那样管理

你给的第二个文件 Generation strategies 讲的是文本生成的解码策略(贪心、采样、束搜索),虽然 TTS 不直接用这些策略,但它给你一个重要启发:

把推理参数当作"生成配置"统一管理,区分"生产稳定"和"创作多样"两种模式。

模式一:生产播报模式(Production narration)

  • 目标:每次生成结果完全一样,可复现
  • 配置
    • 固定随机种子(Random seed)
    • 固定音色参考音频
    • 固定情绪控制参数
    • 固定文本规范化规则
  • 适用场景
    • 新闻播报
    • 客服语音
    • 导航提示

模式二:创作配音模式(Creative dubbing)

  • 目标:生成多条候选,挑最好的
  • 配置
    • 允许随机性(不固定种子)
    • 同一文本生成 N 条(N=3~10)
    • 情绪权重可以在小范围内扰动(如 0.65±0.1)
  • 适用场景
    • 有声书配音
    • 游戏角色对话
    • 短剧/漫剧配音

推荐做法

  • 在你的推理脚本里,设置一个"配置文件"或"配置对象"
  • 把所有推理参数写进去:音色参考、情绪控制方式、权重、随机种子等
  • 线上线下用同一套配置,避免"本地好用,上线就崩"

4.2 情绪控制评估(Emotion control evaluation):三套对照实验

对应 Demo 的三种控制方式,你要做三组评估,确认"控制真的生效了"。

评估 1:情感参考音频评估(Emotion reference audio eval)

实验设计

  • 固定:文本、音色参考音频
  • 变量:情感参考音频(sad / anger / surprise / calm)
  • 扫描:权重 0.3 / 0.5 / 0.65 / 0.8 / 1.0

听点

  • 不同情感参考音频,输出应该明显不同
  • 权重提高,情绪应该"更像参考音频"(而不是更吵/更快这种粗暴变化)
  • 音色应该保持稳定

示例测试用例

文本:"今天天气真不错"
音色参考:voice_01.wav
情感参考:emo_sad.wav,权重 0.3 / 0.5 / 0.65 / 0.8 / 1.0
情感参考:emo_surprise.wav,权重 0.3 / 0.5 / 0.65 / 0.8 / 1.0

评估 2:情感向量评估(Emotion vector eval)

实验设计

  • 固定:文本、音色参考音频
  • 变量:情感向量的某一维,从 0→1 扫描

听点

  • 单维控制应该干净(不要"惊喜"一加就变"怒")
  • 混合应该合理(喜+惊喜 vs 喜+平静应该差异明显)

示例测试用例

文本:"这个结果真是出乎意料"
音色参考:voice_01.wav
情感向量:
  - [1, 0, 0, 0, 0, 0, 0, 0]  # 纯喜
  - [0, 0, 0, 0, 0, 0, 1, 0]  # 纯惊喜
  - [0.5, 0, 0, 0, 0, 0, 0.5, 0]  # 喜+惊喜
  - [0, 0, 1, 0, 0, 0, 0, 0]  # 纯哀

评估 3:情感描述文本评估(Emotion description text eval)

实验设计

  • 固定:文本、音色参考音频
  • 变量:情感描述文本(同义改写)

听点

  • 同义改写应该输出相似(鲁棒性 Robustness)
  • 中英文描述都应该生效(Demo 已展示)

示例测试用例

文本:"我不想再继续了"
音色参考:voice_01.wav
情感描述:
  - "极度悲伤"
  - "非常难过,声音压抑"
  - "像刚经历重大失落"
  - "Extremely sad and depressed"

4.3 回归测试(Regression testing):每次更新模型都要跑

目标:确保新版本模型不会"退步"。

实操方法

步骤 1:建立"黄金测试集"(Golden test set)

  • 挑选 20~50 条代表性样本
  • 覆盖:
    • 不同文本长度(短句、中句、长句)
    • 不同情绪类别
    • 不同控制方式
    • 不同权重

步骤 2:每次训练新模型,都用黄金测试集推理

  • 固定所有推理参数(随机种子、配置)
  • 生成音频

步骤 3:对比新旧版本

  • 听觉对比:A/B 测试,盲听哪个更好
  • 客观指标(可选):
    • MOS(Mean Opinion Score,平均意见分)
    • 音色相似度(Speaker similarity)
    • 情绪分类准确率(Emotion classification accuracy)

第五部分:常见问题与排障(Troubleshooting)

5.1 问题 1:情绪一加就"变声"(Speaker drift)

症状

  • 平静时听起来是 A
  • 加上"愤怒"后听起来像 B

原因

  • 数据偏差:某情绪样本几乎都来自某个说话人
  • 情绪条件过强,压过了说话人条件

解决方法

  • 数据层面:确保同一说话人覆盖多情绪
  • 训练层面:降低情绪权重上限(如 0.8)
  • 验证层面:固定音色参考,扫描情绪,确认"听起来是同一个人"

5.2 问题 2:权重不敏感——0.3 到 1.0 听起来差不多

症状

  • 权重从 0.3 调到 1.0,输出几乎没变化

原因

  • 训练时权重几乎固定(比如总是 1.0),模型没学过插值

解决方法

  • 训练层面:权重从区间随机采样(如 [0.4, 1.0])
  • 验证层面:推理时扫描权重,画"权重-情绪强度"曲线,确认连续性

5.3 问题 3:情绪向量"串台"——给惊喜却听起来像愤怒

症状

  • 情感向量设为"惊喜=1",但输出听起来像"愤怒"

原因

  • 向量标注噪声大:同样标"惊喜"的音频表达差异巨大
  • 文本语义强烈影响:某些文本本身更像"怒骂"

解决方法

  • 数据层面:先用"强一致性"数据训练(惊喜就选真正兴奋上扬的录音)
  • 训练层面:做"同文本多情绪"配对数据,提升控制信号可辨识度
  • 验证层面:用"中性文本"(如"今天天气真不错")测试,排除文本语义干扰

5.4 问题 4:情绪描述文本不生效

症状

  • 给了情感描述文本"极度悲伤",但输出很平淡

原因

  • 描述文本在训练集中覆盖太少
  • 描述写法不一致:同一种情绪被写成很多含糊句子

解决方法

  • 数据层面:先收敛到一套"小词表"的描述模板(每种情绪 5~20 个短描述)
  • 训练层面:覆盖足够多样本(每种描述至少 50 条)
  • 验证层面:用"同义改写"测试,确认鲁棒性

5.5 问题 5:长文本情绪不稳定——前半段悲伤,后半段突然变平静

症状

  • 短句(<10 字)情绪控制很准
  • 长句(>50 字)情绪会"飘"

原因

  • 训练数据以短句为主,模型没见过"长时间保持情绪"
  • 情绪条件的作用范围有限(只影响前几个字)

解决方法

  • 数据层面:增加长句样本(10~20 秒),确保全程情绪一致
  • 训练层面:使用"全局情绪条件"(而不是只在开头注入)
  • 推理层面:长文本拆成短句,每句单独控制情绪,再拼接

第六部分:上线前的最后检查清单(Pre-launch checklist)

6.1 数据质量检查

  • 音频采样率统一
  • 无明显底噪、爆音、削波
  • 文本与音频严格对齐
  • 标点准确(逗号、句号、问号、感叹号)
  • 情感参考音频库已建立(每种情绪 50+ 条)
  • 情感向量标注完成(至少 80% 样本)
  • 情感描述文本标注完成(至少 50% 样本)

6.2 训练质量检查

  • 阶段 1(稳定性)训练完成,输出清晰、音色稳定
  • 阶段 2(可控性)训练完成,三种控制方式都生效
  • 权重随机化已实施,权重连续可调
  • 同一说话人覆盖多情绪,音色不飘
  • 验证集 MOS 达标(建议 ≥3.5/5.0)

6.3 推理质量检查

  • 推理配置已统一管理(线上线下一致)
  • 情感参考音频评估通过(不同情绪明显不同)
  • 情感向量评估通过(单维控制干净)
  • 情感描述文本评估通过(同义改写鲁棒)
  • 回归测试通过(新版本不退步)
  • 长文本测试通过(情绪不飘)

6.4 业务场景检查

  • 生产播报模式配置完成(固定种子、可复现)
  • 创作配音模式配置完成(多候选、可挑选)
  • 失败率可控(<5%)
  • 推理速度达标(实时率 Real-time factor ≤1.0)
  • 成本可控(GPU/CPU 资源消耗在预算内)

第七部分:进阶优化方向(Advanced optimization)

如果你已经完成上面所有步骤,情绪控制基本稳定,可以考虑以下进阶优化:

7.1 细粒度情绪控制(Fine-grained emotion control)

目标:不只是"喜怒哀乐",还要控制:

  • 语速(Speaking rate)
  • 音高(Pitch)
  • 能量(Energy)
  • 停顿(Pause)

实操

  • 在情感向量基础上,增加"韵律维度"
  • 例如:[喜, 怒, 哀, 惧, 厌恶, 低落, 惊喜, 平静, 语速, 音高, 能量]

7.2 跨说话人情绪迁移(Cross-speaker emotion transfer)

目标

  • 用说话人 A 的音色
  • 加上说话人 B 的情绪表达方式

实操

  • 训练时,情感参考音频可以跨说话人
  • 例如:音色参考是 A,情感参考是 B 的"愤怒"音频

7.3 情绪强度自动预测(Emotion intensity auto-prediction)

目标

  • 不用手动设权重,模型根据文本自动预测情绪强度

实操

  • 训练一个"文本→情绪强度"的预测模型
  • 推理时:文本 → 预测情绪强度 → 自动设置权重

7.4 情绪一致性约束(Emotion consistency constraint)

目标

  • 同一段对话/段落,情绪应该连贯
  • 不要"上一句悲伤,下一句突然惊喜"

实操

  • 推理时,用"情绪平滑"(Emotion smoothing)
  • 例如:当前句情绪 = 0.7 × 上一句情绪 + 0.3 × 当前句预测情绪

第八部分:总结——你的微调路线图(Roadmap)

阶段 0:准备(1~2 周)

  • 整理数据:音频 + 文本转写
  • 建立情感参考音频库
  • 标注情感向量和情感描述文本
  • 制作训练清单(manifest)

阶段 1:稳定性训练(1~2 周)

  • 训练目标:输出清晰、音色稳定
  • 数据:以平静/中性情绪为主
  • 验证:MOS ≥3.5,音色不飘

阶段 2:可控性训练(2~3 周)

  • 训练目标:三种控制方式都生效,权重连续可调
  • 数据:混合三种控制方式,权重随机化
  • 验证:三套评估通过

阶段 3:上线准备(1 周)

  • 推理配置管理
  • 回归测试
  • 业务场景测试

阶段 4:持续优化(长期)

  • 收集线上反馈
  • 迭代数据与模型
  • 探索进阶优化方向

最后的话

你给的 IndexTTS Demo 已经非常清楚地展示了"情绪控制"的三种方式和效果。你的微调目标就是:让你的模型也能做到 Demo 展示的那样——三种方式都生效、权重连续可调、音色稳定不飘

这份攻略给你的是"方法论"和"实操路线",不涉及具体代码,你可以把它当作"需求文档"或"验收标准",指导你的微调工程。

如果你在实际操作中遇到具体问题(比如"情绪一加就变声"“权重不敏感”),可以直接对照"第五部分:常见问题与排障",找到对应的解决方法。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐