Attentron:few-shot text-to-Speech Utilizing Attemtio-based Variabl-length Embedding论文阅读

在这里插入图片描述
摘要:
提出attentron,一个少样本的语音合成模型用于克隆在训练过程中未出现的说话人的声音。这里引入了两个用于不同目的的特殊编码器。 一个微调的编码器通过注意力机制来提取变长的风格信息, 一个粗调的编码器用于提高语音合成的稳定性,避免了在合成未见过说话人的语音时产生胡言乱语。此外,模型还能扩展到任意长度的参考音频以此来改善合成语音的质量。
关键词: 少样本,语音合成,多说话人模型, 说话人编码

介绍
少样本的语音合成方法:

  1. 说话人自适应:在大量数据上预训练一个多说话人模型,然后在目标说话人的少量数据集上进行微调。
    缺点: 少量的数据集至少需要十几分钟,时间还是太长。

  2. speaker embedding: 从音频中提取一个speaker embedding,克隆说话人的音色。使用一个speaker encoder 和TTS模型进行联合训练。 或者单独训练一个说话人验证的模型。
    缺点:难以直接用单一的一个embedding编码每一个utterance 的说话人身份和说话风格。实验表明,如果参考音频的长度短于目标的音频,那么embedding的效果是很差的。

针对目前少样本语音合成存在的问题,文章提出了Attentron模型。其中主要的贡献如下:

  • 使用了两个speech encoders,一个微调encoder 和 一个粗调的encoder。
  • 提出了一个attention机制,可以找到多个参考音频的相关帧的位置。这使得模型可以输入任意数量的参考音频,并且参考音频的数量能够改善生成音频的质量。

attentron 的结构

图一是Attentron的整体结构,是基于Tacotron2的基础上构建的一个新模型。不同的是文章提出的模型添加了两个额外的encoders。fine-grained encoder 从多个参考音频中提取细节风格,coarse-grained encoder 从音频中提取全局信息,因此适用于高质量的少样本语音合成。
合成语音时:

  1. coarse-grained encoder 生成一个global embedding e g e_g eg, 这个单向量综合了输入所有的音频文件的时间维度上的信息。
  2. e g e_g eg 进行广播,然后和text encoder输出的 { e t } \{e_t\} {et}进行拼接。因此Tacotron2 的 Decoder的输入为 { ( e t i , e g ) } i = 1 , 2 , 3... L t \{(e_t^i, e_g)\}_{i=1,2,3...L_t} {(eti,eg)}i=1,2,3...Lt L t L_t Lt表示文本的长度。
  3. fine-grained encoder提取变长的embedding ,包含了时间维度上的信息,然后喂入decoder中辅助解码。

fine-grained encoder and attention Mechanism
在这里插入图片描述
fine-grained encoder 的目的是希望能够利用好多个参考音频,能够使用变长的embedding而不是单个的全局embedding,并且能够使用和参考饮品相似的特征来帮助生成。这里使用的是点乘的注意力机制,这使得模型能够关注关注到参考音频中最相似的帧。

输入: 同一个说话人的N个音频【作为目标音频】

  1. 音频转为mel谱 S r S_r Sr,使用padding是的最大长度为 L r L_r Lr S r ∈ R N ∗ L r ∗ n m e l s S_r\in R^{N*L_r*n_{mels}} SrRNLrnmels
  2. mel谱输入两层的卷积层和两层的双向LSTM层,得到reference embedding Z r ∈ R N ∗ L r ∗ d r Z_r \in R^{N*L_r*d_r} ZrRNLrdr
  3. 第j步的时候decoder中LSTM的输出是 z h j z_h^{j} zhj,此时的QKV为:
    Q j = z h j W q ∈ R d m K = Z r W k ∈ R N ∗ L r ∗ d m V = S r W v ∈ R N ∗ L r ∗ d v e v j = s o f t m a x ( f ( Q j ) f ( K ) T d m ) f ( V ) Q^{j} = z_h^{j}W_q \in R^{d_m}\\ K = Z_rW_k \in R^{N*L_r*d_m}\\ V=S_rW_v \in R^{N*L_r*d_v}\\ e_v^{j} = softmax(\frac{f(Q^j)f(K)^T}{\sqrt d_m})f(V) Qj=zhjWqRdmK=ZrWkRNLrdmV=SrWvRNLrdvevj=softmax(d mf(Qj)f(K)T)f(V)
    这里的 f : R d 1 ∗ . . . d n ∗ c → R ( d 1 ∗ d 2 ∗ . . . ∗ d n ) ∗ c f: R^{d_1*...d_n*c}\rightarrow R^{(d_1*d_2*...*d_n)*c} f:Rd1...dncR(d1d2...dn)c是一个flattening 函数(即把张量拉成一维的向量)
  4. e h j e_h^j ehj z h j z_h^j zhj进行拼接后送入全连接层。

Coarse-grained encoder
\quad 即便是同一个说话人同一句话的音频也可能含有不同的特征,例如情绪和韵律。因此只根究文本信息来合成语音会导致合成的语音不稳定,因为这本质上是一个不确定的一对多的问题。为了增强稳定性, coarse-grained encoder设计成一个生成global embedding的模块,包含了目标音频的全局信息。给定所需输出的outline,它能够缩小输出音频的范围,使其接近于one-to-one的问题。之前的方法旨在希望通过一个encoder控制输出音频的特征,因此需要基于复杂的模型或者伴随着额外的训练目标。相反,这里的encoder专注于提高合成的稳定性,因此这里使用了一个相对简单的网络来生成一个global embedding e g ∈ R d g e_g \in R^{d_g} egRdg, 没有添加额外的损失函数。
\quad 这里的Coarse-grained encoder 是基于“Hierarchical generative modeling for controllable speech synthesis”这篇文章设计的。由两层的卷积层+两层的双向LSTM组成,并在最有一层接上average pooling以生成global vector。

实验
数据集:LJSpeech 用于预训练阶段,VCTK来做多说话人训练阶段(拿出四个男声—+四个女声来做测试)。
**预处理:**将字符序列输入Tacotron encoder后,每个字符被编码为512维的character embedding。音频被降采样到16KHZ,利用librosa剪切掉前后静音。帧移:16ms,窗长:64ms,傅里叶点2048。
**实现:**fine-grained 和 Coarse-grained encoder 的卷积层为: 512 channel 和 3*1的卷积核, 双向LSTM为256个cell。因此 d g 和 d v d_g 和 d_v dgdv都是256维的,fine-grained 的注意力机制的K和V都是256维的。
**训练:**Adam 优化器。 我用LJSPeech预训练了30K步,然后用VCTK训练模型70K步, batchsize为16.

评估模型
对比模型: LDE和GMVAE
评估方法:

  • MCD-DTW
  • speaker similarity: 用余弦距离计算两个音频的x-vector.工具包 resemblyzer.[Generalized endto-end loss for speaker verification]
  • attention collapse count: 当decoder的attention没有训练好,那么输出的声音是难以理解或者是没有停止。因此我们以超出预定阈值【4*input_text_length】的谱图帧数作为attention clollapse count 的值。

实验结果:
对比试验:
Table 1
对于训练集中出现的说话人,在说话人相似度和DTW等差别不大,但是对于未见过的说话人效果有所提升。

消融实验:
在这里插入图片描述
首先:分析了输入的参考音频的数量的影响。
Attentron(8-1): 在训练时使用多个输入
Attentron(1-8): 在推理的时候使用多个参考音频。

其次考虑Coarse encoder的影响:
w/o CE: 没有使用Coarse encoder。导致在生成的见过的说话人音频的attention collapse 达到35, 未见说话人的attention collapse 达到143

再者,考虑fine-grained encoder的影响。
为了验证变长embedding的效果,我们将fine-grained encoder移除或者使用单个embedding,记为(w/o FE)。 单个embedding用average pooling模块或者self-attention替代attention模块。这三个试验发现难以从参考音频中提取出有效的信息来对未见过的说话人进行克隆,因此克隆的效果是很差的。

论文地址:https://arxiv.org/abs/2005.08484
音频链接:https://hyperconnect.github.io/Attentron
Corse encoder代码参考: https://github.com/rarefin/TTS_VAE/blob/master/src/Main.py

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值