网上语音留言有风险,5秒克隆- 探秘google深度学习语音克隆技术

本文主要内容为对Google 语音合成论文《Transfer Learning from Speaker Verification to Multispeaker Text-To-Speech Synthesis》的解读。

这项技术可以基于目标说话人数秒的音频数据实现对说话人的克隆,也即通过文本可以合成出具有说话人发音特点的任意语音。论文中提到的模型甚至可以适配目标说话人的语音从未出现在训练样本中的情况。那么google是如何通过深度学习获得如此神奇的能力呢?下文将对该论文中涉及到的核心技术细节展开讨论。

系统架构

该系统由3个可独立训练模块构成:

  1. 说话人特征编码器-speaker encoder :实现对目标说话人发音特征提取。
  2. 合成器-synthesizer:实现文本到梅尔谱(mel spectrogram) Seq2Seq变换。
  3. 声码器-vcoder: 实现梅尔谱(mel spectrogram)到波形(Waveform)变化。

三个模块的集成方案和如下图所示:

网上语音留言有风险,5秒克隆- 探秘google深度学习语音克隆技术

模型结构概览。3个模块每个都可以独立训练。

Speaker Encoder的输出Speaker embedding 与合成器的Encoder编码单元输出通过连接操作作为合成器Attention模块每个时间步的输入,从而通过持续影响Decoder的输出最终达到个性化输出波形的目标。

以下对每个模块的功能及实现方式做简要介绍。

1、说话人特征编码器 (Speaker Encoder)

说话人特征编码器具有鉴别特定说话人的功能。输入为短时自适应语音信号,输出为说话人在发音特征向量空间中的特征向量。该特征编码与语音对应的文本及背景噪音独立,是对说话人发音特质的描述。说话人特征编码器为语音合成模块提供个性化定制参考。

下面对speaker encoder的模型构造进行简要分析:

Speaker Encoder 模型的功能是实现说话人鉴别(分类)。训练数据是文本独立的语音ID对(不需要进行文本标注,仅需要标出对应说话人ID)。

Speaker Encoder的网络结构如下图所示:


网上语音留言有风险,5秒克隆- 探秘google深度学习语音克隆技术

Speaker Embedding 和相似矩阵

网络由3个LSTM层构成。每层LSTM包含768个cell,后接仿射层(Projection,通常目的是减少计算量和特征降维)变换到256维。最终的Embeding由该说话人最后一帧在神经网络运算结束后通过对最后一层在每个时间步的输出进行平均L2 Norm生成。

网络输入:将任意长度的语音信息转化为40维的log-mel帧序列。

网络输出:固定长度的d-vecor (Embedding向量)。

训练目标:同一个说话人不同语音输入对应的输出的余弦距离小,不同说话人语音间的余弦距离尽可能大。

前向阶段处理流程:将输入语音按照800ms的window 进行切分形成一系列的window,两个相邻window间有50%的重叠(overlapped),不同window作为独立输入计算神经网络输出。最后对所有输出进行平均和正则化从而产生embedding输出。

2、合成器 (Synthesizer)

论文所采用的合成器是对Tacotron2的扩展,属于序列到序列(sequence-to-sequence)合成网络。Google在论文中所采用的方法是通过将speaker embedding 与下图中最底的Encoder的输出(Bidrectional LSTM输出)进行连接作为Location Sensitive Attention每个时间步的输入,从而通过持续影响合成器decoder输出而得到最终的个性化梅尔谱(MEL Spectrogram)。Tacotron2的网络结构如下图所示,具体工作可参考Google论文:《NATURAL TTS SYNTHESIS BY CONDITIONING WAVENET ON MEL SPECTROGRAM PREDICTIONS》,本人也将在后续文章中对该模型结构进行详细解读,欢迎关注头条号:深度视野,通过订阅持续获得最新分享。


网上语音留言有风险,5秒克隆- 探秘google深度学习语音克隆技术

Google Tacotron2 网络结构图

个性化合成效果可以查看论文作者给出的合成示例,如下图所示:

网上语音留言有风险,5秒克隆- 探秘google深度学习语音克隆技术

speaker embedding和合成mel spectrogram样例

上图左侧三列为参考目标说话人的5秒参考发音的Mel谱,三行代表三个不同的发音者。注意这里不同说话人参考音对应的文本可以是不同的,该参考音通过speaker encoder 可以快速提取 speaker embedding也即说话人发音特征。右侧则显示了依赖不同说话人在相同文本“this is a big red apple”下的个性化合成效果。可以从图中看到

依据不同说话人,合成Mel谱具有显著差异

训练涉及到的一些细节:

tacotron2输入为文本(text)字符序列转换为对应的音素或者字母的Embedding序列。目标声谱特征(spctrogram features) 以50ms作为一帧(一个时间窗),12.5ms作为帧移(为了不丢失语音信息,帧会存在overlap)。从窗口信息中提取80维fbank特征经过log域动态压缩输出作为神经网络groud truth。

3、神经网络声码器 (Neural Vocoder)

WaveNet具有良好的合成性能,论文声码器采用sample-by-sample的自回归WaveNet。通过该声码器将合成器产生的梅尔谱转化为时域的waveforms。

网上语音留言有风险,5秒克隆- 探秘google深度学习语音克隆技术

不同粒度观察waveform

网上语音留言有风险,5秒克隆- 探秘google深度学习语音克隆技术

WaveNet的性能表现

论文中WaveNet的结构为包含30层Dilated CNN。下图为一个基本的WaveNet构造,与本文结构一致但仅仅包含3个隐藏层。


网上语音留言有风险,5秒克隆- 探秘google深度学习语音克隆技术

WaveNet动态计算过程-基于dilated casual CNN结构


推理和零样本用户自适应

预测阶段(训练完后文本转语音个性化合成阶段),模型使用目标说话人的任意语音(该语音不需要与输入文本一样)通过speaker encoder模块提取发音特征(speaker embedding vector)。由于speaker encoder仅基于音频进行说话人特征提取和推断, 所以允许对训练集中未出现的用户进行发音特征提取。在实践中通常几秒钟的说话人语音数据就足以刻画该目标说话人,通过合成器产生目标说话人适配的合成语音,所以该模型结构在大多数情况下能够良好适配全新用户,在这些情况下模型不能产生与目标说话人完全一致的发音,但发音往往会偏向于与该用户发音特征相似的用户(speaker encoding 的输出在欧氏空间能够通过余弦距离度量发音者的相似性)。

附录:

1、余弦距离(cos distance)

设向量a和向量b则a•b=|a||b|cos,|a|和|b|分别为两向量的模,cos即为两向量的余弦值,所以cos=a•b/|a||b|

2、L2正则化 (L2 Normlization)

将一组数变成0-1之间。

分子为xi,分母为将下图中p带入2计算所得。通过对每个xi进行变换结果便是L2 Norm。


网上语音留言有风险,5秒克隆- 探秘google深度学习语音克隆技术

p范数

转载声明:

本文为头条号作者

深度视野整理发布,任何个人或组织未经授权不得转载。

违规转载将追究法律责任。


分享到:


相關文章: