《ADASPEECH: ADAPTIVE TEXT TO SPEECH FOR CUSTOM VOICE》论文阅读

在这里插入图片描述

Motivation

目前语音合成中商业化的服务——语音定制, 对TTS提出了两项挑战:
(1) 为了支持不同的用户, 自适应魔心更需要处理各种声学情况, 这和源数据是由很大差别的。
(2) 为了支持大量的用户, 自适应参数需要足够小, 并且还能保存高质量的语音

因此提出了AdaSpeech, 一个自适应地TTS系统,能够定制高质量,有效的声音。

Previous work

在语音定制过程中, 通常用少量的个性化语音样本来自适应源TTS模型。少量的自适应数据对合成语音的自然度和相似度提出了更大的挑战。 并且用户的声音是各种各样的, 和源语音数据大不相同。比如说可能有不同的说话风格,情感,韵律,口音等等, 这些声学特征条件的不匹配给源模型自适应带来了很大的挑战。 此外, 用源TTS模型来自适应新的语音时, 在参数量和语音质量之间有一个折中选择。 一般来说,更多地自适应参数会产生更好的语音质量, 从而增加内存存储和服务成本。

之前的工作微调整个模型或者decoder 部分,该方法能达到比较好的质量但是会产生大量的自适应参数。对于商业化的声音定制, 减少自适应地参数量是有必要的, 否则随着用户的增加, 存储量会爆炸。 另一些工作只对speaker embedding进行微调, 或者训练一个 speaker encoder 模块, 在自适应过程中不需要进行微调, 但是会导致合成的音质不好。 并且之前的工作假设源数据和自适应数据是同一个域内的, 并没有考虑不同的声学条件的设置。

Method

文章提出的模型AdaSpeech模型包含三个步骤:
(1)预训练: 在大量多说话人数据上进行预训练
(2)微调: 用新说话人数据对模型部分进行微调
(3)inference

Adaspeech中的新工作:
(1)Acoustic condition modeling: 对utterance 和 phoneme 级别的声学条件进行建模。使用了两个acoustic encoder 从target speech来提取utterance-level vector 和 phoneme-level vector。因此decoder 能够根据不同的声学条件来预测mel谱。在inference时, 我们从参考音频中提取utterance-level vector, 使用acoustic predictor来预测相应的phoneme-level vectors

(2) Conditional layer normalization: 为了在微调的时候减少参数数量,并且保证语音质量, 在pre-training的时候修改decoder 的layer normalization. 利用speaker embedding作为条件信息在layer normalization 生成scale 和 bias vector. 在微调阶段, 我们只需要对和conditional layer normalization 相关的参数进行微调。

Model

AdaSpeech的整体架构图如下所示, 使用了FastSpeech2作为模型的基本结构,其中包含了:phoneme encoder, mel decoder, variance adaptor。 再次基础上加入 另两个额外的组件来解决声音定制的挑战:(1)Acoustic condition modeling
(2) conditional layer Normalization
在这里插入图片描述
在这里插入图片描述

Acoustic condition modeling

在语音合成找那个, 因为输入的文本缺少足够的声学条件来预测目标语音, 所以模型会对训练数据过拟合。为了提高模型的自适应性, 一个方法是将相应的声学条件作为输入, 使得模型能够学习到更好的文本到音频的映射关系,从而模型获得更好的生成性而不是简单的记忆。

在文章中将声学条件归纳为不同的层次:
(1)speaker level: 获取说话人总体的声学特征, 因为speaker ID 通常用于提取speaker-level 的声学特征, 因此默认情况下用speaker embedding。

(2)utterance level: 获取每个说话人每个话语的声学特征, 用声学编码器从参考音频中提取一个向量, 然后将其扩展后与phoneme hidden sequence相加。 训练时参考音频是目标音频, inference的时候随机选择一个该说话人的一个音频。

(3)phoneme level: 提取更细粒度的说话人的每个话语的每个音素的声学特征。 使用另一个声学编码器从目标音频中提取一个phoneme-level的向量,与phoneme hidden sequence相加。 为了从音频中提取phoneme-level的信息,首先根据音素和mel谱序列之间的对齐关系, 将同一音素对应的语音帧进行平均,将语音帧序列的长度转换成和音素序列相同长度, 然后再经过声学编码器进行编码得到phoneme-level vector。 在inference 阶段时, 使用另外一个phoneme-level的声学预测器(建立在原始的phoneme encoder)来预测pheone-level vectors。

Conditional layer normalization

在这里插入图片描述
通过实验发现, 在decoder的每个attention层加入layer normalization,这对隐藏激活和最终的预测有很大的影响。
L N ( x ) = γ x − μ σ + β LN(x) = \gamma \frac{x-\mu}{\sigma}+\beta LN(x)=γσxμ+β
如果我们能决定相应说话人特征的scale和bias vector, 那么我们能对该部分网络进行微调使其自适应于新的说话人, 这能大大减少参数并且保证质量。

在这里插入图片描述

Experiment

Dataset

预训练: LibriTTS(2456speaker, 586hours)
微调: VCTK(108speakers , 44hours) LJSpeech(24hours)

预处理参数:
sample rate: 16kHZ
hop size: 12.5ms
window size:50ms

Result

在这里插入图片描述
GT: 真实语音
GT mel+ vocoder: 用melgan重构真实mel谱
baseline(spk emb):在自适应地时候只对speaker embedding进行微调
baseline(decoder): 在自适应地时候只对decoder进行微调

消融实验:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值