语音合成之二TTS模型损失函数进化史
TTS模型损失函数进化史
- 引言
- 基于概率TTS问题建模
- TTS中常用的损失函数
- 流行的开源TTS模型及其损失函数分析
- TTS模型中损失函数选择的未来趋势和潜在方向
引言
损失函数在机器学习模型的开发和优化中扮演着至关重要的角色 。它如同模型优化目标的“指南针”,量化了模型预测输出与真实观测数据之间的差异,并以数值形式表示了“误差”或“损失” 。通过反向传播和正则化等过程,损失函数深刻地影响着模型的学习轨迹,引导模型参数向着更准确、更可靠的方向演进 。从本质上讲,最小化损失函数是机器学习模型训练的根本目标 。
由于TTS是具有时间依赖性的序列数据,因此在选择合适的损失函数时需要进行细致的考量。与图像识别等任务不同,其要求损失函数不仅要衡量预测的准确性,还要能够捕捉到序列数据中的时间依赖关系和整体结构 。此外,人类对语音的感知具有高度的主观性,理想的损失函数应该能够尽可能地与人类的听觉感知对齐,从而生成更自然、更符合人类偏好的结果 ,即从“数值逼近”向“听觉逼近”,对应的基于“数值逼近”策略的loss也应该慎重选择。
在深度学习技术广泛应用于TTS之前,主流的方法是统计参数语音合成(SPSS)和基于连接(Concatenative)的TTS 。在统计参数语音合成中,模型主要关注预测声学参数的精度 。这类系统通常使用隐马尔可夫模型(HMM)进行声学建模 。损失函数的设计主要基于衡量预测的声学参数(如梅尔频谱、基频等)与真实的声学参数之间的差距,常用的损失函数包括均方误差(MSE)等 。
基于连接的TTS方法则侧重于从预先录制的语音数据库中选择和拼接合适的语音单元(如音素、音节等)来合成语音 。在这种方法中,损失函数的设计通常包含两个主要部分:目标成本和拼接成本 。目标成本衡量所选择的语音单元的特征与目标单元的特征之间的差异,确保所选单元在发音和韵律上与上下文尽可能匹配。拼接成本则衡量相邻语音单元之间的平滑度和自然度,避免出现不自然的断裂或跳跃。
基于概率TTS问题建模
对一段时域信号的语音采样后,音频序列可以表示为离散点,其记为 x 0 , x 1 , ⋯ , x T x_0, x_1, \cdots, x_T x0,x1,⋯,xT,由于人的发声机理(肺、声道)等决定了采样点是存在短时相关性、长时相关性以及随机性,将这一过程可以建模为时间维度上的联合分布 p ( x 0 , x 1 , ⋯ , x T ) p(x_0, x_1, \cdots, x_T) p(x0,x1,⋯,xT)。对前一个采样点的依赖可以用 p ( x ( t ) ∣ x ( t − 1 ) ) p(x_{(t)}|x_{(t-1)}) p(x(t)∣x(t−1))表示,在模型结构上可通过残差网络,即 F ( x ) + x \mathcal F(x)+x F(x)+x来实现长时间依赖。
从概率上讲残差网络是给模型增加随机性(日常生活中,由于外界噪声存在以及发声人生理波动,语音信号本质上是一种带约束的随机信号,约束指的是发音的基频等),正如基于高斯去噪建模的Diffusion模型生成图片时在每一次迭代的时候都是要加噪声的。
在生成TTS的时候,给定一段文本和对应的音频 x 0 , x 1 , ⋯ , x T x_0, x_1, \cdots, x_T x0,x1,⋯,xT,即模型的输入是文本(或其特征表示),最后出也是 x ^ 0 , x ^ 1 , ⋯ , x ^ T \hat x_0, \hat x_1, \cdots, \hat x_T x^0,x^1,⋯,x^T,一个比较直观的想法是像素级的逼近,但是实际上模型预测的结果是 x ^ 0 = x 0 \hat x_0 = x_0 x^0=x0, x ^ 1 = x 1 \hat x_1 = x_1 x^1=x1,这样就可以得到一个比较直观的想法就是L1或者L2 loss,早期的模型就是在时域波形上采用像素loss的。
但是这样训练的模型逼真度仍然较差,其主要的原因是引言里提到的“数值逼近”而非“听觉逼近”,而且L1/L2的“数值逼近”逼近的统计数值,而不是具有随机性的真实分布的数值。
以掷骰子为例,一个六面体的骰子,从统计意义上来说,只要采样数量足够多,那么六个面的数字[1,2,3,4,5,6]应该是均匀分布的,如果采用L1或者L2的loss,让模型预测足够次数掷骰子的点数,那么为了是预测统计误差是最小,模型倾向于预测3或者4,可以看出来两端的极值被模型忽略了,模型输出对齐的是统计值偏好。这种语言这种场景会存在很大的问题,如果模型预测丢失了随机性,那么高频的细节会丢失,人声会沉闷,机械,残差网络的作用之一是将随机性一直贯穿模型,当然从工程角度残差网络也可以缓解梯度消失,是的深层模型训练更为稳定,提升深层网络表达能力,另外残差网络使得模型可以捕获长距离的依赖关系。
总的来说,语音具有以下特殊性:
人耳对语音的感知并非基于逐点信号差异,而是频域特征(如共振峰、基频),两段波形在L2损失上相近,但可能因相位偏移或频带能量分布不同导致听觉差异巨大。
音频波形的相位信息对听觉至关重要,两个相位不同的正弦波可能具有相同的频谱幅度(L2损失低),但听觉上完全不同。
波形是高频振荡信号,局部微小误差累积会导致长时听感不连贯。但波形上的微小扰动(如数值噪声)可能对听觉影响微乎其微。
TTS中常用的损失函数
随着深度学习技术的飞速发展,基于深度学习的TTS模型,特别是端到端模型,逐渐成为主流 。现代TTS系统通常包含两个主要组成部分:声学特征生成器和神经声码器 。声学特征生成器负责将文本转换为中间的声学表示(如梅尔频谱),而神经声码器则将这些声学表示合成为最终的语音波形。
在声学特征生成器中,早期深度学习TTS模型(如Tacotron)常使用L1损失(平均绝对误差,MAE)和L2损失(均方误差,MSE)作为损失函数 。这些损失函数假设输出的声学特征分布为高斯或拉普拉斯分布 。然而,研究表明,这些简单的损失函数未能充分反映人类听觉感知的特性 ,导致合成语音的质量不够自然。为了更好地对齐人类的听觉感知,现代TTS模型逐渐转向在频域(如梅尔频谱)计算损失,即使用频谱损失(Spectral Loss) 。频谱损失通常在梅尔频谱上计算L1或L2损失,因为梅尔刻度更符合人耳对不同频率声音的感知特性 。
神经声码器负责将声学特征转换为最终的语音波形。不同的神经声码器架构采用不同的损失函数。例如,WaveNet等自回归声码器使用交叉熵损失(Cross-Entropy Loss)来预测下一个音频采样点 。这类模型将音频波形视为一个序列,通过最大化数据似然进行训练 。基于流(Flow-based)的声码器(如WaveGlow)则利用似然函数作为其主要的损失函数 。基于生成对抗网络(GAN)的声码器(如MelGAN、HiFi-GAN)广泛使用对抗损失(Adversarial Loss)和特征匹配损失(Feature Matching Loss) 。对抗损失促使生成器生成更逼真的音频,而特征匹配损失则确保生成器输出的中间特征与真实音频的特征在判别器中尽可能相似。近年来,基于扩散模型(Diffusion Model)的声码器(如WaveGrad)也取得了显著进展,它们通常使用基于分数匹配(Score Matching)的损失函数 。这类模型通过学习一个逆向扩散过程,逐步从随机噪声中恢复出清晰的音频波形。
基于此,TTS任务中的loss从波形到感知特征迁移,为克服L1/L2损失的局限性,现代TTS系统采用以下策略:
-
- 在频域而非时域计算损失
梅尔频谱损失:计算生成与目标梅尔频谱的L1损失(如Tacotron),因梅尔刻度更贴近人耳听觉敏感度。
短时傅里叶变换(STFT)损失:结合幅度谱与相位谱的差异(如DiffWave),显式优化相位对齐,减少生成波形的相位失真。
- 在频域而非时域计算损失
-
- 引入对抗训练
通过生成对抗网络(GAN),判别器学习区分真实与生成音频的高频细节与时域连续性。结合多尺度判别器和频谱归一化技术,使用不同降采样率的判别器(如原始采样率、1/2、1/4),分别监督全频段、中频段、低频段特征;可以避免高频噪声过拟合。
示例:BigVGAN通过多尺度判别器与频谱归一化,支持高达96kHz的音频生成。
- 引入对抗训练
-
- 多尺度与多分辨率损失
多尺度STFT损失:在不同时间窗长,如512、1024、2048点)下计算生成与目标音频的幅度谱差异,结合多个尺度的频谱损失。,覆盖语音的多层次特征。
优势:
高频细节捕捉:短窗长捕捉瞬态细节(如爆破音),长窗长建模低频共振峰;
相位敏感缓解:通过多尺度幅度谱间接约束相位对齐。
示例:HiFi-GAN 使用多尺度判别器和多分辨率STFT损失,显著提升48kHz语音的生成质量。
- 多尺度与多分辨率损失
-
- 感知特征匹配
利用预训练的声码器(如WaveNet、LPCNet)或语音识别模型(如Wav2Vec 2.0)提取中间特征,计算生成与目标特征的距离。高层语义对齐:确保生成音频的语速、音素内容与目标一致;听觉感知优化:聚焦于人耳敏感的特征(如共振峰、基频轮廓)。
- 感知特征匹配
-
- 心理声学加权损失(Psychoacoustic Weighting)
原理:根据人耳听觉特性(如掩蔽效应、临界频带)对损失函数加权,弱化对不可听成分的惩罚。
实现方式:
频域掩蔽:在损失计算中,降低被强能量频段掩盖的弱能量频段的权重;
A计权曲线:模拟人耳对不同频率的敏感度(如对3-4kHz最敏感)。
示例:某些音频编码器(如MP3)采用类似策略,可迁移至生成模型。
- 心理声学加权损失(Psychoacoustic Weighting)
- 多层级特征监督
策略:联合优化时域波形、频域幅度谱、高层语义特征(如音素、韵律)。
作用:确保生成音频在细节(波形)、结构(频谱)、语义(内容)三层面均逼近真实数据。
流行的开源TTS模型及其损失函数分析
为了更深入地理解现代TTS模型中损失函数的选择,本节将分析GitHub和Hugging Face上一些流行的开源TTS模型的架构以及它们所使用的损失函数。
模型名称 | 主要架构 | 损失函数 |
---|---|---|
Tacotron 2 | RNN序列到序列,注意力机制,WaveNet声码器 | Mel频谱L1损失,WaveNet的损失函数(如交叉熵或对抗损失) |
FastSpeech 2 | Transformer,时长/音高/能量预测器 | Mel频谱MAE损失,可结合拉普拉斯混合损失、SSIM、GAN损失等 |
VITS | 条件VAE,对抗学习,Flow模块,随机时长预测 | 变分下界损失,对抗损失,随机时长损失 |
StyleTTS 2 | 风格扩散,对抗训练,大型SLMs | Mel频谱重建L1损失,TMA目标,对抗损失(LSGAN,特征匹配,相对论损失),风格扩散L2损失,时长/韵律预测损失(交叉熵,L1) |
YourTTS | 基于VITS,外部说话人嵌入 | 与VITS类似:变分下界损失,对抗损失 |
Bark | Transformer,EnCodec音频表示 | 细节未明确说明,可能包括语言模型和音频编解码器相关的损失函数 |
Piper | 基于VITS | 与VITS类似:变分下界损失,对抗损失 |
Glow-TTS | Normalizing Flow,Transformer编码器 | 似然函数(基于Flow),单调对齐搜索(MAS)损失,时长预测损失 |
SpeedySpeech | Transformer,卷积块,残差连接 | 细节未明确说明,可能包括Mel频谱预测损失和时长预测损失 |
-
Tacotron和Tacotron 2 :Tacotron是早期基于循环神经网络(RNN)的序列到序列模型,使用注意力机制将文本映射到声学特征。早期的Tacotron常使用L1或L2损失函数。Tacotron 2在Tacotron的基础上进行了改进,使用WaveNet作为声码器,损失函数通常包括预测梅尔频谱的L1损失以及WaveNet声码器自身的损失函数,后者取决于所使用的WaveNet的具体变体(例如,原始WaveNet使用交叉熵损失,而基于GAN的WaveNet变体则使用对抗损失)。
-
VITS :VITS是一种基于条件变分自编码器(VAE)和对抗学习的端到端TTS模型。其损失函数主要包括变分下界(Variational Lower Bound)损失和对抗损失。此外,VITS还包含一个随机时长预测器,并使用相应的损失函数进行训练,以建模语音合成中的一对多映射关系。
-
StyleTTS 2 :StyleTTS 2是一种先进的TTS模型,它利用风格扩散(Style Diffusion)和对抗训练,并结合了大型语音语言模型(SLMs)。其损失函数包括用于梅尔频谱重建的L1损失、可迁移单调对齐器(TMA)目标、对抗目标(包括LSGAN损失、特征匹配损失和截断点态相对论损失)、风格扩散的L2损失,以及用于时长和韵律预测的交叉熵损失和L1损失等 。
-
YourTTS :YourTTS模型是基于VITS架构开发的,但它使用了从预训练的说话人编码器中提取的外部说话人嵌入。其损失函数与VITS类似,主要包括变分下界损失和对抗损失。
-
Bark :Bark是由Suno AI开发的一种基于Transformer的文本到音频模型。它可以生成高度逼真的多语言语音以及其他音频,包括音乐、背景噪音和简单的音效。虽然其架构基于Transformer并使用了EnCodec进行音频表示,但其具体的损失函数细节在摘要中并未明确说明,推测可能包括与语言模型训练和音频编解码器相关的损失函数。
-
Piper :Piper是一个快速、轻量级的神经TTS系统,其声音模型使用VITS进行训练,并可以导出到ONNX Runtime。因此,Piper所使用的损失函数与VITS类似,包括变分下界损失和对抗损失。
-
Coqui TTS :Coqui TTS是一个高性能的深度学习TTS模型工具包,其中包含了多种不同的TTS模型实现,如Glow-TTS、SpeedySpeech等。不同的模型采用不同的架构和损失函数,具体的损失函数细节需要参考每个模型的原始论文和实现代码。例如,Glow-TTS使用基于Normalizing Flow的似然函数作为损失函数,并结合单调对齐搜索(Monotonic Alignment Search, MAS)损失和时长预测损失 。SpeedySpeech的损失函数细节则需要在其对应的论文中查找 。
TTS模型中损失函数选择的未来趋势和潜在方向
TTS模型中损失函数的选择仍在不断发展,未来的研究可能会更加关注提升合成语音的自然度、表现力和可控性。以下是一些未来趋势和潜在方向:
- 利用强化学习与人类反馈(RLHF)提升语音自然度 :最近的研究开始探索利用强化学习与人类反馈(RLHF)来优化TTS模型的性能。这种方法将人类的偏好作为奖励信号,通过强化学习的方式微调TTS模型,使其生成更符合人类审美和偏好的语音。例如,提出的DLPO(Diffusion Model Loss-Guided Reinforcement Learning)方法被用于微调基于扩散模型的TTS模型,通过将模型训练过程与原始扩散模型的损失对齐,有效地提升了生成语音的音质和自然度 。
- 探索新型Transformer-Based损失函数 :随着Transformer架构在TTS领域占据主导地位,研究人员正在探索专门为Transformer设计的损失函数。例如,KALL-E模型在零样本TTS场景中表现出色,它依赖于将零样本TTS视为一个条件语言建模任务,并通过使用Kullback-Leibler(KL)散度损失进行下一分布预测,并结合二元交叉熵损失进行停止预测,取得了优于现有开源模型的自然度和说话人相似度 。
- 自监督学习和对比损失在TTS中的应用 :自监督学习通过更好地利用未标注数据而受到越来越多的关注。研究表明,借助自监督损失,对配对数据的需求可以减少 。对比损失通过学习区分相似和不相似的语音片段,可以有效地改善说话人相似性和合成语音的质量 。将说话人验证衍生指标和说话人增强数据纳入训练过程,可以增强多说话人TTS系统中声纹的学习 。
- 通过损失函数设计应对说话人相似性和情感控制等挑战 :未来的损失函数设计将更加关注对特定语音属性的精细控制。例如,为了获得更好的语音相似性,可以关注说话人编码器损失(avg_loss_spk_encoder) 。此外,研究人员还探索了建模声带努力变化(Vocal Effort Variation)的方法,以提高噪声环境下的合成语音可懂度 。为了更好地控制合成语音的情感,可以引入正交性损失(Orthogonality Loss)等方法,以有效地解耦情感和说话人嵌入 。