Tacotron2

Tacotron2是一个基于神经网络的文本到语音系统,由特征预测网络(预测梅尔声谱图)和WaveNet声码器(从梅尔声谱图生成波形)组成。模型在MOS评分中接近专业录音质量,通过注意力机制和WaveNet的修订版提高了语音合成的自然度。实验表明,梅尔声谱图作为中间表示对于减少信息丢失和提高合成效果至关重要。此外,后处理网络和WaveNet的膨胀卷积层也在提升生成音频质量中起到关键作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(NATURAL TTS SYNTHESIS BY CONDITIONING WAVENET ON MEL SPECTROGRAM PREDICTIONS)Tacotron2

这篇论文描述了Tacotron 2, 一个直接从文本合成语音的神经网络架构。系统由两部分构成。

(1)一个循环seq2seq结构的特征预测网络,把字符向量映射到梅尔声谱图

(2)后接一个WaveNet模型的修订版,把梅尔声谱图合成为时域波形

我们的模型得到了4.53的平均意见得分(MOS),而专业录制语音的MOS得分是4.58。为了验证模型设计,我们对系统的关键组件作了剥离实验研究,并且评估了使用梅尔频谱替代语言学、音长和F0特征作为WaveNet输入带来的影响。

1. 模型架构

我们提出的系统由两部分组成,如Fig.1所示:

(1)一个引入注意力机制(attention)的基于循环seq2seq的特征预测网络,用于从输入的字符序列预测梅尔频谱的帧序列

(2)一个WaveNet网络的修订版,用于基于预测的梅尔频谱帧序列来学习产生时域波形样本

在这里插入图片描述

1.1. 中间特征表达

在这项研究中,我们使用低层次的声学表征( low-level acoustic representation)-梅尔频率声谱图-来衔接系统的两个部分。梅尔声谱图通过对时域波形进行计算很容易得到,使用这样一个表征,为我们独立训练两部分组件提供了可能。梅尔频谱比波形样本更平滑,并且由于其每一帧都是对相位不变的,所以更容易用均方误差损失(MSE)进行训练。

梅尔频率声谱图与线性频率声谱图-即短时傅里叶变换的振幅-是相关的。从对人类听觉系统的响应测试中得到启发,梅尔频谱是对短时傅里叶变换的频率轴施加一个非线性变换,用较少的维度对频率范围进行压缩变换得到的。这个与听觉系统类似的频率刻度方法,会强调语音的低频细节,低频细节对语音的可理解度(intelligibility)非常关键,同时淡化高频细节,而高频部分通常被磨擦声和其他爆裂噪声所主导,因此基本上在高保真处理中不需要对高频部分进行建模。正是由于具有这样的属性,基于梅尔刻度的特征表达在过去几十年一直广泛应用于语音识别中。

线性声谱图抛弃了相位信息(因此是有损的),而像Griffin-Lim [14] 这样的算法可以对抛弃的相位信息进行估计,用一个短时傅里叶逆变换就可以把线性声谱图转换成时域波形。梅尔声谱图抛弃的信息更多,因此对逆向波形合成任务提出了挑战。但是,对比WaveNet中使用的语言学和声学特征,梅尔声谱图更简单,是音频信号的更低层次的声学表征,因此使用类似WaveNet的模型构造神经声码器时,在梅尔声谱图上训练语音合成应该更直截了当。我们将会展示用WaveNet架构的修订版从梅尔声谱图可以生成高质量的音频

1.2. 声谱图预测网络

(截窗+STFT+梅尔滤波器组(125赫兹~7.6K赫兹之间的80通道)过滤STFT +振幅稳定到0.01+对数压缩)

在Tactron中,使用50毫秒帧(frame)长,12.5毫秒帧移,汉宁窗截取,然后施加短时傅里叶变换(STFT)得出线性频谱。然后使用频率范围在125赫兹到7.6K赫兹之间的80通道的梅尔滤波器组对STFT的线性频率进行过滤,后接对数函数进行范围压缩,从而把STFT幅度转换到梅尔刻度上。在进行对数压缩前,滤波器组的输出振幅被稳定到最小0.01以便限制其在对数域中的动态取值范围。
在这里插入图片描述

声谱图预测网络中,包含一个编码器和一个引入注意力(attention)机制的解码器。编码器把字符序列转换成一个隐层表征,继而解码器接受这个隐层表征用以预测声谱图。输入字符被编码成512维的字符向量,然后穿过一个3层卷积,每层卷积包含512个5 x 1的卷积核,即每个卷积核横跨5个字符,后接批标准化(batch normalization)[18]和ReLU激活函数。像Tacotron中一样,卷积层会对输入字符序列的大跨度上下文(例如N-grams)进行建模。最后一个卷积层的输出被传递给一个双向[19] LSTM [20]层用以生成编码特征,这个LSTM包含512个单元(每个方向256个单元)。

在这里插入图片描述

构建一个注意力网络(attention network)用以消费编码器的输出结果,编码器的每次输出,==注意力网络都将编码序列归纳为一个定长上下文向量。==我们使用[21]中的位置敏感注意力机制,该机制对加法注意力机制[22]进行了扩展,使得可以使用之前解码处理的累积注意力权重作为追加特征,因此使得模型在沿着输入序列向前移动的时候保持前后一致,减少了子序列重复或者遗漏等解码处理中潜在的失败。位置特征用32个长度为31的1维卷积核卷积得出,然后把输入序列和位置特征投影到128维隐层表征后,计算出注意力概率。
在这里插入图片描述

解码器是一个自回归的循环神经网络,它从经过编码的输入序列预测输出声谱图,一次预测一帧。上一步预测出的频谱帧首先被传入一个每层由256个隐藏ReLU单元组成的双层全连接的“pre-net”,我们发现作为一个信息瓶颈层(bottleneck),pre-net对于学习注意力是必要的。pre-net的输出和注意力上下文向量拼接在一起,传给一个两层堆叠的由1024个单元组成的单向LSTM。LSTM的输出再次和注意力上下文向量拼接在一起,然后经过一个线性变换投影来预测目标频谱帧。最后,目标频谱帧经过一个==5层卷积的“post-net”==来预测一个残差叠加到卷积前的频谱帧上,用以改善频谱重构的整个过程。post-net的每层由512个5 × 1卷积核和一个批标准化处理组成,除了最后一层卷积,每层的批标准化处理都后接一个tanh激活函数。

我们在post-net前后对均方误差进行最小化以辅助收敛,我们还实验了用混合密度网络[23, 24]对输出结果的分布进行对数似然损失最小化,以期待可以避免输出频谱是一个直流常量,但是结果发现这样做使得训练更困难,也没能得到更好的合成样本。

并行于频谱帧的预测,解码器LSTM的输出注意力上下文向量拼接在一起,投影成一个标量后传递给sigmoid激活函数,来预测输出序列是否已经完成的概率。预测了这一“stop token”,在推断时允许模型动态的决策什么时候结束频谱生成,而不是在固定时间内一直运行。

网络中的卷积层使用概率为0.5的dropout [25]进行正则化处理,LSTM层使用概率为0.1的zoneout [26]进行正则化处理。为了在推断时给输出结果带来些变化,概率为0.5的dropout只施加在自回归解码器的pre-net上

与Tacotron对比,我们的模型使用更简洁的构造模块,在编码器和解码器中不使用Tacotron中的“CBHG”堆叠结构和GRU循环层,转而使用普通的LSTM和卷积层。我们没有在解码器的输出中使用“缩小因子(reduction factor)”,即每个解码步骤只输出一个单独的频谱帧。

1.3. WaveNet 声码器

a.梅儿频谱特征表达逆变换为时域波形样本。

在WaveNet的原架构中,有30个扩大卷积层,分3个循环进行,也就是说第k(k = 0 : : 29)层的扩张率等于2的p次方,p等于 2 k ( m o d 10 ) 2^{k (mod 10)} 2k(mod10)

b.我们没有像WaveNet那样使用softmax层预测离散片段,我们借鉴了PixelCNN++和最近WaveNet的改进版,使用10元混合逻辑分布(10-componentMoL)来生成频率为24k赫兹的16位深的语音样本。为了计算混合逻辑分布,WaveNet的堆叠输出传给ReLU激活函数,再连接一个线性投影层来为每一个混元预测参数(均值,对数刻度,混合权重)。损失函数使用标定真实数据的负对数似然函数计算而得。

2 实验和结果

在这里插入图片描述

我们还对我们系统的合成结果和标定真实语音进行了细致的对比评估,评分者被要求给出一个 -3(合成结果比标定真实语音差很多)到3(合成结果比标定真实语音好很多)之间的分数。整体平均分−0.270 ± 0.155说明评分者在很小的程度上更喜欢标定真实语音,但这个程度在统计学上是显著的。细致的剖析请参考图2。评分者的点评表明偶尔的发音错误是更喜欢标定语音的主要原因

在这里插入图片描述

在附件E[11]中,我们手工分析了在这100个句子的测试数据集中,系统的出错模式。用这些句子合成的语音中,无单词重复,6次发音错误,1次跳词,23次韵律不自然,例如重音放在了错误的音节或者单词上,或者不自然的音调。最终我们的模型达到了4.354的MOS分数。这些结果表明,系统能够可靠的关注到全体输入,但在韵律建模上还有改善空间

最后,我们对使用37个新闻头条合成的语音进行了评估,以测试系统在领域外数据上的泛化能力。在这个评估中,我们的模型得到了4.148±0.124的MOS分数,而使用语言学特征训练的WaveNet得到了4.137 ± 0.128。对两个系统生成的语音进行细致的对比评估也表明二者不分伯仲 – 对我们系统的偏好在统计学上是非显著的0.142±0.338。查验评分者的点评也表明我们提出的神经系统模型生成的语音更自然,更接近人类。这个结果指出了端到端的神经方法所面临的一个挑战:模型训练需要在覆盖目标领域的数据上进行

2.3. 消融实验

2.3.1 预测特征与ground truth

虽然我们的模型的两个组件是分开训练的,但是WaveNet组件依赖于预测的特征进行训练。另一种方法是从地面真实音频中提取的mel谱图独立训练WaveNet。我们将在表2中对此进行研究。

在这里插入图片描述

正如预期的那样,当用于训练的特征与用于推理的特征相匹配时,将获得最佳性能。然而,当对地面真实特征进行训练,并根据预测的特征进行合成时,结果往往是相反的。这是由于特征预测网络优化的平方误差损失的结果,预测谱图趋向于过平滑和比地面真实更少的细节。在地面真实谱图上训练时,网络不会学习从过平滑的特征生成高质量的语音波形。

2.3.2 线性谱图

我们不是预测mel的谱图,而是通过训练来预测线性频率的谱图,从而使使用Griffin-Lim反演谱图成为可能。

在这里插入图片描述

正如[10]中提到的,WaveNet产生的音频质量比Griffin-Lim高得多。线性标度谱与熔融标度谱的使用差别不大。因此,梅尔谱图的使用似乎是一个严格的更好的选择,因为它是一个更紧凑的表示。在未来的工作中,探索mel频率箱的数量与音频质量之间的权衡是很有趣的。

2.3.3 后期处理网络

由于不可能在预测的未来帧被解码之前使用它们的信息,我们使用卷积post处理网络在解码后合并过去和未来帧,以改善特征预测处理网络在解码后合并过去和未来帧,以改善特征预测。然而,由于WaveNet已经包含了卷积层,人们可能会想,当WaveNet用作声码器时,post-net是否仍然是必要的。为了回答这个问题,我们比较了有post-net和没有post-net的模型,发现没有post-net,我们的模型的MOS分数只有4.429 0.071,而有post-net的MOS分数只有4.526 0.066,这意味着从经验上来说post-net仍然是网络设计的重要组成部分。

2.3.4 简化WaveNet

WaveNet的一个定义特征是它使用了膨胀的卷积,以指数的方式增加接受场的层数。我们评估模型与不同的接受域大小和层数来测试我们的假设,一个浅网络小土耳其——这个领域可能圆满解决这个问题因为梅尔·色更表示已经捕获的波形比语言特征和长期依赖性在帧。

如表4所示,我们发现我们的模型可以产生高质量的音频,仅使用12层,接受场为10.5 ms,而基线模型为30层,接受场为256 ms。这些结果证实了[9]中的观察结果,即大的接受场大小不是影响音频质量的关键因素。然而,我们假设是选择mel谱图的条件使得复杂性降低。

另一方面,如果我们完全消除扩张的卷积,感受野就会比基线小两个数量级,即使堆栈和基线模型一样深,感知野的质量也会显著下降。这表明,该模型需要在波形样本的时间尺度上有足够的上下文,才能产生高质量的声音。
在这里插入图片描述

3 结论

本文介绍了Tacotron 2,一个全神经TTS系统,它结合了一个序列到序列的循环网络和一个改进的WaveNet声码器。所得到的系统合成语音与塔科特仑水平的韵律和wavenet水平的音频质量。该系统可以直接从数据中训练,而不依赖于复杂的特征工程,并达到最先进的声音质量接近自然的人类语音。

Tacotron 2是一种基于深度学习的文本到语音(Text-to-Speech, TTS)合成模型,由Google在2017年提出。它结合了序列到序列(seq2seq)模型和注意力机制,能够将文本转换为高质量的语音波形。Tacotron 2的Python实现通常使用深度学习框架如TensorFlow或PyTorch。 以下是Tacotron 2的主要组成部分和实现步骤: ### 主要组成部分 1. **编码器(Encoder)**: - 将文本序列转换为固定长度的向量表示。 - 通常使用卷积神经网络(CNN)和循环神经网络(RNN)来提取文本特征。 2. **注意力机制(Attention Mechanism)**: - 帮助模型在生成语音时对齐文本和语音。 - 常见的注意力机制包括加性注意力(Additive Attention)和点积注意力(Dot-Product Attention)。 3. **解码器(Decoder)**: - 根据编码器的输出和注意力机制的权重,生成梅尔频谱图(Mel-Spectrogram)。 - 通常使用自回归模型(如LSTM或GRU)来生成频谱图。 4. **后处理网络(Post-Net)**: - 对生成的梅尔频谱图进行微调,以生成更高质量的频谱图。 - 通常使用卷积神经网络(CNN)来实现。 5. **声码器(Vocoder)**: - 将梅尔频谱图转换为最终的语音波形。 - 常用的声码器包括WaveNet、WaveGlow和Griffin-Lim。 ### 实现步骤 1. **数据预处理**: - 将文本转换为音素序列或字符序列。 - 对音频数据进行预处理,如提取梅尔频谱图。 2. **模型训练**: - 使用预处理后的数据训练Tacotron 2模型。 - 定义损失函数(如均方误差)并使用优化器(如Adam)进行训练。 3. **模型推理**: - 输入文本序列,生成对应的梅尔频谱图。 - 使用声码器将频谱图转换为语音波形。 ### 示例代码 ```python import torch from tacotron2 import Tacotron2 from hparams import create_hparams from train import load_model from text import text_to_sequence from audio_processing import griffin_lim # 创建超参数 hparams = create_hparams() # 加载预训练模型 model = load_model(hparams) model.load_state_dict(torch.load('tacotron2_statedict.pt')['state_dict']) model.eval() # 输入文本 text = "Hello, how are you?" # 文本转序列 sequence = np.array(text_to_sequence(text, ['english_cleaners']))[None, :] sequence = torch.autograd.Variable(torch.from_numpy(sequence)).cuda().long() # 生成梅尔频谱图 mel_outputs, mel_outputs_postnet, _, alignments = model.inference(sequence) # 使用Griffin-Lim算法生成语音波形 waveform = griffin_lim(mel_outputs_postnet) # 保存音频文件 from scipy.io.wavfile import write write('output.wav', hparams.sampling_rate, waveform) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值