Deep Voice1/2基于传统SPSS流水线,用CNN进行增强。Deep Voice3采用encoder-attention-decoder 的结构,和Tacotron整体结构类似,但采用CNN而不是RNN作为主体网络。 本文对Deep Voice,Deep Voice2,Deep Voice3进行介绍。
Deep Voice
1. 提出背景
1. 现代TTS系统基于复杂的、多阶段的处理框架,每一阶段都可能依赖于手工特征和探索性步骤。由于这种复杂性,开发新的TTS系统可能是非常劳动密集的和困难的。
2. Deep Voice采用传统TTS系统相同的架构,但是用神经网络替换所有的组件,并使用更简单的特征。
3. 实时推理,满足生产环境对速度的要求。
2. 模型结构
1. grapheme to phoneme 获得音频对应的音素序列
模型或字典完成,字典中有的直接用字典,没有的用模型预测。
模型结构:encoder-decoder结构 encoder:多层双向GRU decoder:单向GRU
2. segmentation 确定韵律边界,获得音素的位置和时长、基频,作为3、4步模型训练的标签
用一个ASR网络,结合CTC loss。无监督训练。
输入音频段和对应的音素,输出音素对和他们的起始时间。
预测音素对的原因:
对给定时间戳对应的某个音素进行预测时,在该音素发声的中间位置预测的概率是最大的。对独立单个的音素而言,给定语音对应某个音素的概率在语音的发声正中最大;而对成对的音素而言,概率最大值出现在两个音素交界点上,因此能进行更简单的定位。
推理时不使用,仅训练时给训练数据标注韵律边界。
1. phoneme duration predict
2. fundamental frequence predict
用一个模型预测3,4。输入带有stess的音素序列,输出音素持续时间、音素发声的概率、基频。
模型结构:两个DNN,两个GRU,一个DNN(由2的输出作为target吗)
3. audio synthesis
WaveNet,输入带有持续时间和基频的音素,输出语音
即 训练分步,训练标签由前一步获得。训练时2步获得3、4步的标签,训练3、4步的模型。推理时直接1获得音素,经3、4的模型输出时长和基频,这些信息进行语音合成。
Deep Voice 2
1. 提出背景
1. 构建多说话人系统
2. 模型结构
与Deep Voice的区别如下;
1. segmentation与Deep Voice对比,增加了batch norm和residual connection。发现模型在静音音素处易出错,增加一步后处理。
2. 先预测duration再预测frequency。对于duration,不再预测连续值,而是把它作为一个序列标注问题,用离散化的值标注
3. 多说话人的实现
用一个低维speaker embedding vector代表说话人,通以下几种方式添加到模型中
1. Site-Specific Speaker Embeddings:在模型每一个用的地方,将shared embedding通过affine projection 和nonlinearity转换成合适的维度和形式。
2. Recurrent Initialization:用site-specific speaker embedding将循环层的变量初始化
3. Input Augmentation:在循环层的每一个时间步,将Site-Specific Speaker Embeddings和输入拼接;
4. Feature Gating:多层激活函数和的Site-Specific Speaker Embeddings点乘,产生适应性强的信息流
4. 性能测评
1. Deep Voice2比1性能有提升;对Tacotron用wavenet能明显提升性能。
2. 在多说话人数据集上训练,模型能学到上百种说话人口音和特征,且观察speaker embedding,发现其在一个有意义的潜在空间里。
Deep Voice 3
1. 提出背景
1. 提出基于完全卷积的字符到频谱图架构,基于attention,能够实行完全并行计算,且比基于RNN的模型快一个数量级。
2. Deep Voice1/2保留了传统TTS 流水线的结构,各部分分开。Deep Voice3是seq2seq的结构。
3. 支持数千个说话人。
2. 模型结构
基于encoder-attention-decoder结构,和Tacotron整体结构类似,但采用CNN而不是RNN。decoder部分采用自回归,因果卷积。
用足够大的感受野,堆积的卷积层,捕捉序列中的上下文信息。模型结构包括三部分
1. encoder
a. 文本预处理: 所有字符大写;删除标点符号;句号或问号结束每一句话;插入四种不同的分隔符,代表不同的停顿时长
b. 支持的输入:
字符 :需要预处理,字典/模型,将字符转化为音素
字符+音素:若仅输入字符,可能在隐式转换中出错,此时可输入音素外部修正。
音素
文本特征->中间变量(key,value)
2. decoder
mel input-> query-> attention with encoder, context vector ->mel output/stop
3. converter
后处理,产生能输入vocoder的变量
loss是解码器和转换器的线性组合
3. 性能测评
1. 单说话人MOS分:Wavenet做声码器,和Tacotron持平
2. 多说话人MOS分:在VCTK上与DeepVoice2可比,低于DeepVoice2