近年来,计算机视觉领域中涌现了许多成果,随着引入了更深的layer的卷积网络模型,这些模型能编码更高维度和可解释的特征( neural style)。相比之下,由于缺乏适应语音信号的深度学习模型,对语音的深入和透彻理解受到了影响。在过去的一段时间,传统的语音处理技术在语音分类和检测方面相对于深度学习方法,仍然占据主导地位。特别是,语音领域中的语音生成模型直到最近还仍然被传统语音处理技术所主导。许多语音生成模型不是使用深度学习模型,而是将存储在大型数据库中的正确语音片段拼凑在一起(拼接式合成),同时也有其他一些模型使用了深度学习体系结构,但使用的仍是传统特征(参数式合成)。

端到端的深度学习在语音应用中还是比较少见的,由于语音的时域结构的基本特性,使其承载了揉杂在一起的许多不同的信息 - 说话人特征(如一个人的音色,音调等),语言学内容(语音表述的语种,内容),其他语言学特质(如情感等)。

最近,几种新的语音生成的深度学习模型,如Google的Tacotron 和Deepmind的Wavenet 改变了现状。大量相关研究已完成,将这些模型用于文本到语音(TTS),语音生成或语音分类等的工作。

那么是否可以将相同的想法应用于语音领域呢。具体来说,在这里选取这个问题的一个子集,语音克隆。

语音克隆,选取某个说话人的声音,相当于Image Style Transfer中的“Style”,并使用该声音来说出来自另一个说话人的语音内容,相当于Image Style Transfer中的“Content”。在这里我们主要关注voice transfer,因为这是一个定义明确但相对还未勘探成熟的问题。

在谷歌的NSynth中,对合并两种乐器声音的工作,已经对Style Transfer进行了研究。一般认为voice style transfer更容易评估,语音克隆是一个更具挑战性的问题,因为语音在模型的隐空间中更难被表征。从技术和社会角度来看,这是一个有趣的问题,可以应用于音乐行业,法律事务, robotics,automated talking devices等等。我们的方法是能够在non-parallel数据上完成voice transfer。

怎样把自己的语音变成其他的声音(语音克隆如何在不同说话人的声音之间转换语音)(1)

Non-parallel data 意味着目标风格的声音可能会说出与原声音内容完全不同的声音。我们希望设计一种模型,该模型能够学习到在更高维信息的隐空间内对语音编码的方式,并且能 概括到目标风格语音,而无需在内容语音中可能出现的所有可能音素(最小语音单元)上进行训练。

怎样把自己的语音变成其他的声音(语音克隆如何在不同说话人的声音之间转换语音)(2)

正如用于人脸识别的隐空间中的线性插值编码面部结构的变化一样,在语音隐空间中的移动,能被表征为更高维度特征的变化,音素,风格等可被听见的变化。

总的来说,这个问题在应用层面和理论层面上都很重要。在应用级别,voice transfer 能够让语音助理,拥有所有的不同的风格。甚至可以创造一个拥有自己声音的语音助手。即使像Tacotron这样的模型已经存在了,我们关于voice style transfer的方法将会减少训练时间,因为模型并不显式地知道每个音素的每次出现位置,模型本身可以概括。在理论层面上,voice style transfer可以更深入地了解 embeddings的能力,以及如何为数据建立embeddings。使用原始音频比图像更具挑战性。音频的长度是可变的,原始音频中的结构更加抽象。Learning an embedding for speaker style would be a significant advancement in learning embeddings in general。

目前解决这个问题的方法并不多,现有的方法大体上可以分为三类:频谱图spectrogram 方法;extract content and apply style的监督式方法以及无监督的隐空间的模型。

这些方法中的每一种都存在问题,并且未能产生任何良好的声音效果。大多数结果听起来非常机器人,并且根本不像原始风格或简单地变成白噪声。当前方法的另一个问题是,获得不错结果的方法都使用了大量监督式的并使用复杂的数据集。例如,获得不错结果的方法需要采集每个说话人的大量数据,并且还需要每个样本的目标音素。在这里,尝试提供一种完全无监督的方法,其能工作在 non-parallel speaker data.


方法概述

根据该领域的进展,我们将尝试过程分为4种方法:

Spectrogram 方法:音频(频谱图)的频域中的方法通常涉及频谱图像上的现有 image style transfer技术。然而,这些技术不能提取关于语音的音素的local 信息,并且更好地识别音乐中的全局重复频率。为了使用频谱图数据试验模型,我们承担了在男性和女性音频集合之间训练CycleGAN作为基线的新任务。

Supervised latent space / Unconditional generator:对文本或音素的某种程度的监督可能有助于在隐性空间中进行尝试。在这里尝试了2-step 模型,其中包括用于语音识别的监督式encoder和用于语音合成的 Tacotron 模型的decoder。然而,用于解码的文本到语音模块不是以speaker为条件,而是必须训练来自某种风格的speaker(unconditional generator)的大量音频。

Supervised latent space / Speaker conditioned generator:基于之前的方法,我们希望监督式学习带来的结果质量更接近原始目标,即能够从style speaker的几个样本中提取信息。作为一个中间步骤,这里尝试了 a model with a generator that was conditioned on speakers。

Unsupervised latent space / Speaker Conditioned generator:最后,尝试了Deepmind在语音领域的一篇新论文,里面提到的构建一个无监督隐空间模型。Auto Encoder 的变体:VQ-VAE,full wavenet 的 autoencoder。


基线模型:CYCLEGAN

第一种方法是从原始音频的频域表示中解决了这个问题。以前的工作是将neural style 算法(用于图像领域的)应用到内容和风格音频的频谱图上。

结果似乎是内容和风格的混搭,由于音频样本中没有唯一辨识的,通用的frequencies ,speech style transfer(语音克隆)将无法轻松work。通常,a style algorithm 依赖于,style audio 的频谱图的Gram matrix,而丢失了时域方向的信息,并且仅涉及小范围内的上下文中抽取的频率之间的相关性。对于语音转换,我们关心local statistics,而不是增加一致性frequencies。此外,仅操作单样本的style ,不能很好地描述该speaker的整体风格,并且理论上仅在并行音频情况下才起作用。

作为灵感,我们看到了CycleGAN 如何应用于图像域并希望将其应用于音频域。对于我们的设置,我们设置了X:包含男性声音样本,并设置Y:包含女声的样本。我们认为这种方法对现有模型的应用是一个微不足道的应用,被认为是一个不错的baseline。CycleGAN的架构如下所示:

怎样把自己的语音变成其他的声音(语音克隆如何在不同说话人的声音之间转换语音)(3)

CycleGAN的核心概念是在来自域X的样本A和来自域Y的样本B之间进行转换。CycleGAN的一个关键概念是,这种转换受到inverse mapping must undo the translation这一事实的约束。这被称为循环一致性。在项目中提供的一个很大的优势是,这个模型不再局限于并行数据,并且可以学习如何在多个说多个话语的speaker中推广转换。

首先是图像到图像的Generator: G,从X域获取图像并将其转换为Y域。该Generator 由3个卷积层组成,接着是9个用于编码器的残余卷积层,然后是2个去卷积,接着是卷积以得到最终图像。然后我们在此阶段定义对抗性损失。G从X中的图像生成图像看起来与Y中的其他图像相似。而D(y) 试图区分Y中的真实图像来自Generator G产生的fake图像。鉴别器 Discriminator是5个转换层,接着是3个完全连接的层。这种对抗性loss定义为

怎样把自己的语音变成其他的声音(语音克隆如何在不同说话人的声音之间转换语音)(4)

当然,我们希望从Y的另一个方向定义相同的loss到X。使用Generator: F和 Discriminator: D(x)。接下来我们想要结合循环一致性损失。这种loss将简单地定义为两次转换的样本x之间的差异,F(G(x)) 和 原始样本x。同样的,使用相同方法来定义G(F(y))和y之间的差异。从而 整体损失如下:

怎样把自己的语音变成其他的声音(语音克隆如何在不同说话人的声音之间转换语音)(5)

Lambda 控制循环一致性损失的重要性。在模型的推理阶段,我们删除之前插入的额外填充,并使用Gi ffin Lim算法作为音频重建技术。

虽然这个模型已广泛用于图像处理任务,但据我们所知,这是该模型首次应用于音频域。在训练模型近2天后,我们得到了一些结果。有趣的是我们注意到模型的后续迭代产生了嘈杂的音频样本。

尽管结果听起来有点机器人,但它们提供了合理的基线。此外,与仅依赖于我们目前所见的光谱图的任何其他方法相比,这是一项重大改进。一般来说,我们对结果的好坏感到惊讶。我们调整了图像处理CycleGAN模型并将其应用于两个具有大量可变性的大型集合。结果是颗粒状的,因为现在有统一的语音内容,但是,性别之间存在可感知的音高变化。

我们的主要内容如下:

很难在具有如此多内部语音多样性的语音集合之间进行训练,并且only pitch in common

当在查看信号而不是语音中的cyclic behavior时,在频域中工作可能很有用。我们需要从基线处理音频数据的全部范围,或者至少使用导致具有时间维度的特征的预处理。使用标准图像处理管道预计效果不佳。是时候转向语音特定的网络了。


SUPERVISED SPEECH RECOGNITION SPEECH SYNTHESIS

从基线开始,我们考虑了在时域中处理音频的模型。我们希望保持寻找潜在空间的目标,并继续使用编码器 - 解码器样式模型。在Lim和Shao-Hua教授的鼓励下,我们决定尝试对潜在空间进行一些监督,并使用语音识别编码器,该编码器将采用MFCC音频(音频特征)并对音素进行分类。然后使用来自Tacotron的Highway Net和CBHG模块将这个潜在的音素空间用于合成语音。该解码器处理来自编码器的音素分布并产生频谱图。Griffin-Lim重建用于从谱图中合成音频。

怎样把自己的语音变成其他的声音(语音克隆如何在不同说话人的声音之间转换语音)(6)

对于受监督的隐空间,我们肯定需要一个带有框架标记音素的数据集,因此这里是用了TIMIT 对于标记音频数据的大型语料库。

TIMIT:音频采样率为16kHz,窗口长度为25ms,跳跃长度为5ms。用于语音识别的MFCC特征是针对由跳跃长度移位的指定长度的每个窗口生成的。窗口长度应该适合音素,20-40 ms是音频模型的标准。

编码器是Pre-net,CBHG模块,以及用于线性投影的dense层和softmax层。解码器是两个CBHG dense层模块。

最初,有一些我们努力的实现细节和改编,但我们最终在各种数据集上训练模型,包括编辑解码器模型,以从音素产生更好,更人性化的声音结果。

为了评估我们的方法的性能,进行了平均意见评分(MOS)测试。在MOS测试中,在听完每个stimulus (转换后的音频)后,受试者被要求对每个stimulus的质量进行一次评估,以确定男性的可识别程度,以及对于stimulus声音如何识别女性的一次,从六分的李克特量表评分中得出0到5,其中'0'对应于受试者确定 stimulus不是人类男/女声音,'5'对应于受试者确定 stimulus是人类男/女声音。图表显示MOS聚集。对于每个样本(M2F - 男性到女性的转换; F2M - 女性到男性的转换),分数突出显示大多数受试者同意转换的音频剪辑听起来像预期的目标。

怎样把自己的语音变成其他的声音(语音克隆如何在不同说话人的声音之间转换语音)(7)

结果比来自CycleGAN的结果更人性化,但仍然有点颗粒感和机器状。来自不同风格的speaker产生的音频之间肯定存在区别,并且该模型对来自不同来源的输入看起来很稳健。我们能够随便扔掉一些语音,因此,相信编码器训练有素,解码器需要在latent space中工作或有更多功能。音素被贴上标签,因此保证latent space是有价值的,并且不用担心posterior collapse。另外,来自style speaker的大量数据用于训练各个语音合成解码器。我们希望能够使用一个能够整合 speaker 信息的综合解码器。


SPEAKER-INFORMED (WEAKLY SUPERVISED) VAE

变分自动编码器(VAE)作为图像的深度生成模型取得了巨大成功。然而,由于语音话语的长度不同,已经证明使用它们直接模拟语音并对latent space中的任何相关信息进行编码是困难的。例如,在语音转换的上下文中,当前的问题,内容音频和样式音频可以具有不同的长度,使得VAE或任何标准自动编码器架构的直接应用变得无用。因此,我们的方法基于使用VAE以及从语音话语中提取的特征的固有对齐技术(不需要并行数据),即频谱图(513-dim),音高(1-dim)和非周期性(513-dim) —被认为对传统语音合成方法有用的特征。

这里采用了Hsu等人的基于VAE的语音转换算法。在这种方法中,我们将语音转换表示为受控的自我重构问题。该算法首先对语音Xn进行编码,进入一个latent space Zn,不考虑说话人的身份。这需要对不同发言者所说的相同语音内容进行训练,以便彼此重建。所以编码看起来像:

怎样把自己的语音变成其他的声音(语音克隆如何在不同说话人的声音之间转换语音)(8)

接下来,将说话者身份编码为one-hot vector y(n),并且附加到latent space并且解码器使用联结vector 来重建与speaker相关的原始音频的特征。

怎样把自己的语音变成其他的声音(语音克隆如何在不同说话人的声音之间转换语音)(9)

编码器和解码器每个由2个完全连接的前馈层和512个节点组成,然后是ReLU激活(输出除外)。latent space维度为64。

损失函数包括两个项:Regular VAE loss,包括重建音频的联合对数似然和潜在空间中的KL发散。此外,我们尝试通过引入另一个条件对数似然项来使解码器学习特定于学习者的特征。如下:

怎样把自己的语音变成其他的声音(语音克隆如何在不同说话人的声音之间转换语音)(10)

这种损失函数对于直接优化是难以处理的,因此其变分下界被最大化。还应该注意到,这是一种弱监督的方法,不需要 transcript,即使两个发言者之间不需要音素到音素之前的对齐。然而,这依赖于由多个speaker(如在VCTK中)由相同语音组成的训练数据的存在,因此不是完全无监督的方法。

受Wavenet的巨大成功启发,我们还尝试在VAE的输入中使用帧级原始音频表示。换句话说,我们不是使用频谱图和从音频中提取的其他特征,而是希望捕获通过原始音频的生成模型建模的更长期的时间信息。我们希望无条件的Wavenet适合这种情况。所以我们采取了两种方法:

1. 使用预训练的3个堆叠的扩张因果卷积层(来自Wavenet)作为特征提取器,并从每个音频生成128个“特征”样本并将它们作为输入Xn,输入到网络。类似地,相同的Wavenet用于生成音频。

2. 在编码器之前和解码器之后添加了3个堆叠的扩张因果卷积层,并将它们与主要VAE参数一起联合训练。

但是,到目前为止,这些方法都没有令人满意地工作。有关这方面的更多信息将在后面的章节中讨论。

本节中提到的所有方法都很大程度上依赖于来自每个speaker的充足但尽管未对齐的音频内容的speaker特性建模。这是一个限制,因为理想情况下,对于语音转换,我们希望学习风格音频输入的speaker特性,而不需要来自该speaker的任何先前音频。因此,我们想探索无监督的架构。


UNSUPERVISED AUTOENCODERS (VQ-VAE)

我们的网络架构的理想设置是以无人监督的方式学习speaker style的embedding。生成器应该通过将内容音频作为输入来产生最终的风格化语音,同时以speaker style embedding 为条件。首先,我们认为实现这样一个系统的理想方法是使用VAE来学习每个speaker的embedding。一个重要的方面是在VAE中使用适合音频处理的编码器和解码器,我们认为这是Wavenet的一些变体。

一旦为每个发言者学习了样式嵌入,下一步就是将样式应用于内容音频。原始内容音频上的自回归Wavenet解码器,同时调节风格的speaker ID和style embedding可能产生高质量的风格化音频。

Wavenet生成器将在所有音频样本上进行训练,其中目标是音频样本,并且网络全局以content speaker ID 为条件,并且局部地以生成该样本的content speaker的embedding为条件。全局条件只意味着该功能被添加到Wavenet的每个可能的隐藏节点。另一方面,局部调节用于更多时间变化的特征,并且仅被添加到上采样节点。下面是显示全局调节的图像。局部调节只有箭头才能进入更高的节点。在对content speaker embedding 进行本地调节的同时对style speaker ID 进行全局调节应该在逻辑上导致在将内容音频源转换为style speaker时保持语音内容。

怎样把自己的语音变成其他的声音(语音克隆如何在不同说话人的声音之间转换语音)(11)

实现所有这一切是一项非常艰巨的任务,因为没有明确的音频VAE实现,并且没有现有的局部条件波网实现。在我们开始自己实现大部分内容之前,我们在这个领域发现了一篇看似很有希望的论文,并决定改用它。

这个有前途的途径是Deepmind出版的paper,Vector Quantised-Variational AutoEncoder (VQ-VAE) ,其在latent space上应用Vector Quantization以防止posterior collapse,其中由于自回归解码器(使用来自先前状态的预测以生成如Wavenet的下一状态的模型)而忽略潜伏期。latent space上的Vector Quantization涉及简单地将编码器的输出映射到embedding space中的最近点。

Vector Quantization是对latent space的另一种修改,如变分自动编码器Variational Autoencoders 中的KL发散损失,以确保潜在矢量遵循单位高斯分布并从该空间采样以生成输出变得更容易。用于监视和控制自动编码器中latent space的算法似乎有很多潜在的进步。

怎样把自己的语音变成其他的声音(语音克隆如何在不同说话人的声音之间转换语音)(12)

即使没有先前在我们的第二种方法中实现的监督,受过训练的音频潜在空间似乎也模仿了音素。说实话,我们真的不知道这种方法是如何运作的,所以我们很想尝试一下。与往常一样,Deepmind将该架构的实施留给了社区。

文中遗漏了许多关于音频架构的必要细节。在过去的两周里,我们开始实现图像的VQ-VAE架构,并为卷积解码器撕掉一个Wavenet解码器,该解码器以编码器产生的潜在空间为条件。我们还必须调整输入处理的处理方式,因为Wavenet模型使用mu-law编码处理时域中的音频,并将音频离散化为每个时间样本的one hot vector,成为256 x T矩阵,其中T为时间样本的数量。我们甚至从两个角度尝试了实现,适应了VAE架构和Wavenet自动编码器架构。我们在训练这些模型时遇到了很多问题,因为它们在训练时经常出现分歧。

尽管努力了很长一段时间,我们还是无法让这个模型进行训练。参数更新将始终评估为NaN,从而导致损失NaN。这最初发生在我们的第一种方法中,即只是用编码器代替编码器,试图实现本文所述的波形解码器和Wavenet解码器。在这种方法导致NaN丢失之后,我们认为问题可能在于我们如何实现编码器或解码器。最终我们意识到NSynth具有相同的格式,使用带有Wavenet编码器和解码器的VAE以无人监督的方式找到风格的潜在空间。NSynth是Google的一个项目,它将两种乐器的声音合二为一。我们采用了相同的架构,然后在矢量量化代码中进行了替换。即便如此,我们仍然遭受NaN的损失。我们的最终想法是我们的 矢量量化代码不正确所以我们只使用标准的NSynth架构,但仍然有NaN损失。这使我们相信问题在于我们如何将数据输入网络。我们对语音数据进行了相同的mu-law编码处理,这是我们的方法和在仪器声音上使用NSynth的唯一区别。最后,我们无法找出Deepmind的论文如何能够解决这个问题并产生这些结果。但是,我们仍然充满希望并正在努力取得成果。这使我们相信问题在于我们如何将数据输入网络。我们对语音数据进行了相同的mu-law编码处理,这是我们的方法和在仪器声音上使用NSynth的唯一区别。最后,我们无法找出Deepmind的论文如何能够解决这个问题并产生这些结果。但是,我们仍然充满希望并正在努力取得成果。这使我们相信问题在于我们如何将数据输入网络。我们对语音数据进行了相同的mu-law编码处理,这是我们的方法和在仪器声音上使用NSynth的唯一区别。最后,我们无法找出Deepmind的论文如何能够解决这个问题并产生这些结果。但是,我们仍然充满希望并正在努力取得成果。

通过训练的潜在空间模仿来自VQ-VAE的音素,我们希望尝试像neural style这样的算法,其中对于某些特征激活中的丢失输入执行反向传播。能够在保持音素丢失的同时改变音频信号中的其他功能对语音转换至关重要。此外,在大型数据集上训练的无监督模型往往更加健壮,更接近我们学习的方式。与此同时,他们所学习的高级特征可能是一些超出我们能够产生和监督的抽象概念,例如,如果他们提取元音素或超出我们语音和语言学知识的东西。


总结

在原始音频的有意义的潜在空间表示中肯定有很多工作要做,我们希望成为尝试理解这个复杂领域的努力的一部分。绝对不应将音频视为具有相应图像算法的图像,通常倾向于基于特征中的相关性来更新输入信号。然而,我们确实认为,假设有足够强大的潜在空间,如声称在VQ-VAE中模仿音素,可以开发类似于neural style算法的酷算法来利用音频来利用该空间。除了语音转换之外,人们甚至可以考虑进行“情感”转移 - 例如,字面意思是让一首悲伤的歌曲变得更加快乐,而不会改变文本内容。

虽然到目前为止整个报告已经是我们从每种前瞻性方法中吸取的教训的升华,但我们总体上了解到音频风格转移是一个难以解决的问题,需要一个难以设计和训练的模型。最后,我们相信我们对于如何通过音频传输获得良好结果有正确的理论思路,而最近Deepmind的论文证实了这一点。但是,我们无法在有限的时间内正确实施此网络,因为它根本无法训练。

使用CycleGAN的频谱图方法比我们想象的更好。男性与女性之间有明显的转变,但结果听起来很吵,很像机器人。

监督语音识别工作得更好,但是,这种方法所需的监督量以及构建嵌入层和解码器所需的音素数据这一事实一次只能传输一种speaker style,这使得系统不合需要。结果听起来像机器人,但比光谱图方法噪音小。

接下来,虽然生成的音频文件听起来不那么自然,但是speaker告知VAE以及监督语音识别方法。

最后,VQ-VAE方法对于我们实际训练来说太难了。总体,所有这些方法都告诉我们音频很难处理。此外,当遗漏许多实施细节时,实施论文中使用的确切网络是困难的。

,