作者:Zhang Jingxuan, Dai Lirong
期刊:Trans on Audio, Speech and Language Processing
时间:2019.2.7
absract:
本文提出一个seq2seq conversion network(SCENT),用于语音转换中的声学建模。
训练阶段:SCENT 模型用attention机制,估计source和target之间的精确对齐。
转换阶段:source的声学特征和持续时间(duration)被同一个声学模型同时转换。
Mel谱(包含激励和声道描述)作为声学特征。用ASR从source speech中提取bottleneck feature作为额外的输入。
基于mel谱的Wavenet vocoder作为声码器。
本文的优点是:可以合理的估计duration,其他的转换方法很难做到,也超越了作者自己2018 Voice Conversion Challenge的结果。
1. introduction
统计模型:souce和target的声学特征帧级别对齐(比如DTW算法),然后用于训练声学模型;转换的时候source通过转换函数生成target,最后用vocoder合成语音。这个方法的缺点是:严格帧级别对齐,duration不变,仅做F0的线性变换。但是人说话是高度动态的,帧对齐的建模方式限制了建模能力。
本文提出的是seq2seq的建模,给定source,直接估计目标的条件概率。使用encoder-decoder based ottention的模型,encoder将输入编码成高维表示,每一个decoder time step,attention 选取(softly??)encoder的输出,编码成context vector,然后decoder根据vector一帧帧预测输出。
post-filter network用于增强转换的精确度,wavenet vocoder是说话人相关的。
mel特征不依赖source-filter假设,f0和声学特征联合建模,bottleneck feature加在mel之后,改善转换语音的发音准确度。attention 模块学习source-target之间的soft alignment,从而能够动态的预测tart get duration.
本文做的是one-to-one的转换,但是也可以通过增加speaker encoder扩展到many-to-many的转换。
2. related work
A. Relationship with sequence-to-sequence learning for text- to-speech
seq2seq的TTS已经获得一些成功,它和voice conversion不同的是:TTS输入的间断的语言信息,voice conversion输入的是连续的声学信息,而且里边有包含说话人特征;其次,两者的对齐方式略有不同,TTS是一个解压缩的过程,one-to-many的映射,然后在voice conversion中,可能是one-to-many,也会是many-to-many。第三:vc可用的训练数据会明显少于TTS。
B. Relationship with voice cloning
voice cloning是在TTS任务中用很少的数据合成某个unseen speaker的语音,输入是文本,采用speaker embedding和speaker adaptation技术。voice conversion不同的是,用ASR提取的语言特征作为输入,且只有source speech作为输入,输出是确定的paired target speech。但是voice cloning会有益于我们的任务向many-to-many的方向拓展。
C. Sequence-to-sequence learning for voice conversion
【31】用了seq-to-seq with attention,但是受理论限制,不能直接用它的预测产生实值输出;
【32】用seq-to-seq without attention,因此DTW算法依然是做帧级别的对齐;
【33】提出用seq-to-seq模型预测文本后验概率,用RNN-based encoder-decoder结构将source每一个音素后验概率的序列,conversion阶段target 音素的duration很重要。
我们的工作和【31】很相似,构建一个句子级的seq2seq with attention。采用mel谱作为声学特征,因此F0和谱参数被联合转换。我们的方法不需要DTW做对齐,自动预测target的声学duration,每个解码步预测概率。
D.Voice conversion using WaveNet
WaveNet作为重建波形的网络已经被成功的用于TTS和voice conversion,本文训练的WaveNet以mel谱为输入,speaker-dependent。
3. PROPOSED METHOD
A. Overall architecture
B. Feature extraction
在一个识别数据集上训练一个RNN-based ASR 模型,在最后一个激活层(softmax)之前提取输出作为bottleneck feature,这个是语言相关的特征。每一帧提取到的mel-spec和bottleneck feature横向拼接,作为输入。
C. Structure of SCENT
(1)encoder
location code:
i 是dim-index,n是时间步,d是隐向量的维度
用【44:attention is all u need】的配置1000作为location code,它的有用之处在于给出现在处理的seq location的精确信息。并且会在本文的ablation test中给出证明。
encoder的金字塔型结构生成了比输入序列短的隐层表示,希望encoder能够排除source speech中说话人相关的信息,提取到的h是高度语言相关的。因为一个音素对应多个声学帧,对输入序列进行降采样是合理的。而且,隐层表示更低的采样率使得attention module更容易收敛,因为这样会使得attention解码计算的时候有更少的encoding state。金字塔型另外的优点是减少计算量,大大加速训练和infer的时间。
(2)decoder with attention mechanism
decoder是自回归的RNN,从隐层表示中预测声学帧。每个decoder step预测不重叠的n帧。将整个decoder step划分为r步也是一个进一步减少训练预测时间的trick。图2说明了r=1的decoder示意(为了表示清楚)。每个时间步的输出
y
(
t
−
1
)
y_(t-1)
y(t−1)再送入PreNet(pre-processing net–2层MLP,relu & drop out),以及LSTM layer with attention。attention概率和隐层表示相乘,求和得到context vector。
本文采用混合的attention机制,在计算attention 概率时考虑之前decoder的对齐。为了提取位置信息,对之前时间步的对齐做卷积。公式10的第一部分计算量query vector(
q
t
q_t
qt)和encoder不同输出之前的关系,第二部分基于之前decoder的对齐
a
t
a_t
at并且给当前对attention 概率给出限制。
除此之外,forward attention method【45】被用于稳定attention的对齐并且加速收敛。forward attention的动机是语音生成中的单调性对齐,因此 forward variable
a
t
n
a_t^n
atn仅仅考虑单调对齐的路径。它从原始的attention概率
e
t
n
e_t^n
etn中计算,然后代替公式8中的
e
t
n
e_t^n
etn。
除此之外,location code加在decoder input的每个时间不,自回归。
(3)post-filtering network
改进预测的mel谱,用2层1-d conv提取更多的文本信息。输入输出之间有resnet连接。
(4)损失函数
三部分组成损失函数,各自有占比W,dec和post都是和真实mel谱的loss,end是个二值交叉熵损失。
在选择损失函数的时候,
L
d
e
c
L_dec
Ldec选GMM-ML(z最大似然),它会更加灵活,因为建模了更多的概率分布。而MSE会因为averaging effect导致过平滑的预测。
L
p
o
s
t
L_post
Lpost用MSE;只有最后一个decoder step的
L
e
n
d
L_end
Lend标记为1,其他steps都是0.
4. experiment
A. experiment conditions
三个baseline的实验
- JD-GMM:
- DNN:声学特征和bottleneck feature拼接,映射MCC(41)+F0(1)+BAPs(5)
- VCC2018: bottleneck feature映射MCC(41)+F0(1)+BAPs(5)