文章目录

  • Abstract
  • Introduction
  • Related Work
    • Attention mechanisms in seq2seq model | seq2seq模型中的注意机制
    • A seq2seq baseline model
    • recognition-synthesis VC approaches
  • seq2seq-DurIAN-based VC
    • seq2seq phoneme recognizer
      • CTC和基于注意力的建模 | attention-based modeling:
      • Model structure and training objective 模型结构和train目标
    • DurIAN synthesis model
    • extension to support any-to-any conversion
  • BNE-seq2seqMoL-based VC
    • BNF extractor
    • seq2seqMoL synthesis
      • Bottle-neck feature prenet and pitch encoder
      • MoL attention-based decoder
    • conversion procedure
    • Extension to any-to-any conversion
  • experiments
    • datasets
    • features and neural vocoder model
    • comparisons
      • PPG-VC
      • NonParaSeq2seq-VC
    • objective evaluations
    • subjective evaluation
    • Cross-speaker property of bottle-neck features
    • Ablation Studies
    • Training and Inference Speed
  • conclusion

【VC/AC论文】
Any-to-Many Voice Conversion withLocation-Relative Sequence-to-Sequence Modeling

Abstract

本文提出了一种any-to-many位置相关、序列到序列(seq2seq)的non-parallel语音转换方法,该方法在训练过程中利用文本监督。

在这种方法中,我们将BNF entractor(BNE)与seq2seq合成模块(合成器)相结合。在训练阶段,训练了一种基于编码器-解码器的混合连接主义时间分类注意力(CTC-attention)phoneme recognizer 音素识别器,其encoder具有bottle-neck layer。BNE是从音素识别器中获得的,用于从频谱特征中提取与说话者相关的、密集的和丰富的口语内容表示。然后,训练基于mulyi-speaker location-relative的seq2seq合成模型,从BNF中重建频谱特征,以说话人表示为条件,在生成的语音中进行说话人身份控制。为了缓解使用seq2seq模型来排列长序列的困难,我们沿着时间维度对输入光谱特征进行下采样,并为合成模型配备离散混合逻辑(MoL)注意力机制。
由于音素识别器是用大型语音识别数据语料库训练的,因此该方法可以进行任意多语音转换。客观和主观评价表明,所提出的任意对多方法在自然度和说话人相似性方面都具有优越的语音转换性能。进行消融研究以确认所提出方法中特征选择和模型设计策略的有效性。所提出的VC方法可以很容易地扩展到支持any-to-any VC(也称为one-shot/few-shotVC),并根据客观和主观评估实现高性能。

Introduction

voice conversion(VC)的目的是在保持语言内容不变的情况下,对言语中的非语言信息进行转换。non-linguistic信息可以指说话者的身份、情绪、口音或发音等。本文主要研究说话人身份转换问题。VC技术的潜在应用包括entertainment, personalized text-to-speech, pronunciation or accent correction等。
基于单个VC系统可以支持的source 说话者和target 说话者的数量,我们可以将当前的VC方法分类为one-to-one VC、many-to-one VC, many-to-many VC、any-to-many VC和any-to-any VC。【根据source和target的数量进行分类 VC和AC都是这个分类标准】

传统的VC方法侧重于one-to-one VC,这需要在一对source-target speakers之间parallel训练数据。在传统VC pipeline的训练阶段,首先从源和目标话语中提取声学特征。然后使用对齐算法(如dynamic time warping(DTW))逐帧对齐并行话语的声学特征。train 转换模型来学习时间对齐的源和目标声学特征之间的映射函数,可以是高斯混合模型(GMM)、人工神经网络(Ann)等。这些方法对频谱特征执行逐帧转换,即转换后的语音与源语音具有相同的持续时间。这限制了说话速率和持续时间的建模。
最近的研究表明,通过使用序列到序列(seq2seq)模型进行直接源-目标声学建模,align会有更好的表现,并且这种方法可以获得更好的VC性能。由于一对一VC仅限于支持一对特定的源和目标说话者,VC研究人员已经探索了many-to-one VC方法来扩展VC方法的多功能性。在这些方法中,基于语音后验图(PPG)的方法被广泛使用。PPG是根据ASR声学模型计算的,并且通常被假设为与说话者无关【独立于speaker的信息】的内容表示。many-to-one VC方法将PPG提取器与依赖于目标说话者的PPG到声音synthesis 连接起来。已经提出了许多方法来进一步扩展VC方法以支持many-to-many转换。这些技术可以分为两类。

  • 第一类需要在train阶段进行文本监督。这包括基于PPG的方法和non-parallel seq2seq方法。
  • 第二类不需要文本监督。这包括使用auto-encoder 、variational auto-encoders、generative adversarial networks(生成对抗网络)及其组合起来的模型。

本文重点开发了一种any-to-many VC方法,该方法有望将源语音信号从任意说话人转换为训练集中出现的目标说话人【source:any speaker; target: training set】。文献中很少有any-to-many的VC方法。具体的many-to-many VC方法,可以在train阶段通过文本监督直接用于any-to-many转换,包括基于many-to-many PPG的方法和non-parallel seq2seq方法 。这些方法假设在many-to-many VC方法中的口语内容特征提取器/编码器可以很好地推广到训练过程中看不见unseen的源说话者。

在any-to-many VC中使用PPG将speaker-independent的PPG提取器和multi-speakers逐帧前馈转换模型连接起来,如图所示。

这种方法有几个不足之处:

  • 首先,PPG模型通常是用基于HMM-GMM/DNN的具有声学特征的语音比对来训练的。由于PPG中的后验概率值通常是双峰的(最高值接近1,其他值接近0),如果对齐不准确,VC管道的下游经常会出现发音错误。
  • 其次,转换模型通常采用前向反馈神经网络(例如,双向LSTM模型),该网络将PPG逐帧映射到声学特征。以输入PPG为条件,这些转换模型独立地预测每个声帧。这在VC性能方面是不利的(尤其是对于训练数据稀疏的场景),因为话语中的声学帧是高度相关的。

为了解决基于PPG的any-to-many VC方法的上述不足,本文提出使用与PPG模型和seq2seq自回归综合模型不同的内容特征提取器。我们首先训练一个端到端混合连接主义时间分类注意力(CTC注意力)音素识别器|connectionist-temporal-classification-attention
(CTC-attention) phoneme recognizer,其中encoedr有一个瓶颈层。瓶颈特征提取器(BNE)从音素识别器获得,并用于提取瓶颈特征(BNF)作为语音信号的口语内容表示。为了减轻使用seq2seq模型来对齐内容特征和频谱特征的困难,我们将输入语音特征沿时间维度向下采样四倍。然后,我们训练multi-speaker seq2seq BNF到频谱合成模型,其中每个扬声器表示为one-hot 向量。为了便于seq2seq建模,合成模型配备了逻辑(MoL)位置相对混合.我们在下文中将这种VC方法称为BNE-Seq2seqMoL.

BNE-Seq2seqMoL方法中的合成模块使用one-hot向量来表示说话人身份。本文还探讨了将这种any-to-many VC方法扩展到支持any-to-any转换。其主要思想是将说话者表示| speaker representations 与说话者嵌入向量| speaker embedding vectors 结合到合成模块中,该向量可以推广到unseen speakers。为了实现这一点,使用扬声器编码器从语音信号生成固定维| fixed-dimensional 的扬声器矢量。

本文的贡献包括:

  1. 我们提出了一种新的基于MoL注意力的seq2seq模型,用于any-to-many语音转换。所提出的模型可以在生成语音的自然度和说话人相似性方面获得较高的VC性能;但与其他类似系统相比,该模型具有更短的系统pipeline 和更简单的训练过程。
  2. 我们提出了一种简单的方法来扩展any-to-many VC方法,以支持anyt-to-ant转换。

Related Work

Attention mechanisms in seq2seq model | seq2seq模型中的注意机制

带有注意机制的seq2seq 模型在VC和TTS任务中非常流行。
本文提出的BNE-Seq2seqMoL方法使用了Graves首次引入的位置相对注意| location-relative attention机制。我们引入了logsitics(MoL)分布的离散混合,以在BNESeq2seqMoL方法中对每个decoder步骤中的注意力权重进行建模。应用modifications使align过程严格单调monotonic。

A seq2seq baseline model

non-parallel seq2seq方法是any-to-many VC的另一类解决方案。

它们通常级联seq2seq ASR模型和multi-speakers seq2seq synthesis 模型,如图所示。

尽管这些方法的序列建模能力很强,但它们也有几个缺点:

  • 首先,pipeline 很长,这意味着模型包含许多参数,导致训练过程复杂而缓慢。
  • 其次,ASR模块通常采用波束搜索算法|beam search algorithms 来减少推理过程中的识别误差|recognition errors。这会减慢conversion过程。
  • 第三,multi-speakers seq2seq synthesis 模型通常使用注意力模块来对齐编码器和解码器的隐藏状态。有证据表明,这种基于注意力的对齐程序存在不稳定性,因为它可能会导致单词缺失重复合成不完整无法推广到较长的话语.
    为了使合成更加稳健,我们之前的工作结合了节奏模型| rhythm model,该模型指导编码器输出的隐藏表示的显式时间扩展过程。自回归解码器在小窗口内采用局部注意机制,进一步校正高保真度生成中可能出现的对准误差。 先前的工作集中于在转换后的语音中保持源说话风格。然而,这种方法的any-to-many转换性能需要彻底检查。
    在本文中,我们对先前的方法进行了适当的修改,并重新设计了一种鲁棒的、非并行的seq2seq any-to-many VC方法。该pipeline 连接用于合成的seq2seq音素识别器(Seq2seqPR)和多说话者持续时间知情注意力网络(DurIAN)| multi-speaker duration informed attention network。该技术在下文中被称为Seq2seqPR-DurIAN。

recognition-synthesis VC approaches

本文提出的Seq2seqPR-DurIAN和BNE-Seq2seqMoL-VC方法都属于一类基于识别合成| recognition-synthesis-based 的方法,其中建立了ASR模块来提取口语内容表示,并使用合成模块从口语内容表示中预测声学特征。
与提出的non-parallel seq2seq-VC方法相比,Seq2seqPR-DurIAN方法利用更稳健的合成模块来减轻可能的注意力对齐错误,其中结合了持续时间模型来提供明确的音素级对齐信息| phoneme-
level alignment information。此外,Seq2seqPR-DurIAN方法具有更简单、更直接的训练过程,而另外的方法使用复杂的损失函数,并且训练过程在生成步骤和对抗步骤| a generation step
and an adversarial step 之间交替。
具体而言,之前方法中的损失目标包括音素序列分类损失、嵌入对比损失、对抗性说话者分类损失、对抗式说话者均方误差损失、说话者编码器损失和声学特征预测损失。

最近的一项研究与本文中提出的BNE-Seq2seqMoL有关,使用预训练的ASR编码器和预训练的TTS解码器来初始化基于VC模型的最终编码器-解码器的参数。ASR和TTS模型是用具有多阶段过程的大规模语料库进行预训练的,例如,ASR预训练过程包括TTS解码器预训练、ASR编码器预训练和ASR解码器预训练。然后,VC模型在预先训练的参数上进行微调,在特定的一对源扬声器和目标扬声器之间使用少量的并行话语。相比之下,所提出的BNE-Seq2seqMoL采用了简化的两阶段训练方案,即seq2seq音素识别器| phoneme recognizer训练阶段和基于多说话者MoL注意力| multi-speaker MoL attention based seq2seq synthesis的seq2seq合成模型训练阶段。经过这两个阶段的训练,BNE-Seq2seqMoL方法可以直接支持any-to-many语音转换。

seq2seq-DurIAN-based VC

Seq2seqPR-DurIAN方法将seq2seq音素识别器| phoneme recognizer(Seq2seqPR)和多说话者持续时间知情注意力网络|multi-speaker duration informed attention network(DurIAN)连接起来。
采用Seq2seqPR模型来预测L长度的音素序列: Y = Y= Y= { y l ∈ U ∣ l = 1 , ⋯ , L } \left\{y_{l} \in \mathcal{U} \mid l=1, \cdots, L\right\} {ylUl=1,,L} 其中U是一组不同的音素。DurIAN模型用于根据输入音素序列Y生成频谱特征向量 X ^ \hat{X} X^,依赖于说话人表示 s s s,以实现多说话人| multi-speakers 合成。

seq2seq phoneme recognizer

我们对seq2seq音素识别器| phoneme recognizer 采用了混合CTC注意力模型结构,其网络结构与(Joint ctc-attention based end-to-end speech recognition using multi-task learning)类似,如图所示。

CTC和基于注意力的建模 | attention-based modeling:

CTC是一种潜在变量模型,它将输入序列单调映射到长度较短的输出序列。一个额外的“空白”符号被引入到逐帧音素序列中: Z = { z t ∈ U ∪ Z=\left\{z_{t} \in \mathcal{U} \cup\right. Z={ztU blank ∣ t = 1 , ⋯ , T } \left.\mid t=1, \cdots, T\right\} t=1,,T}其中 T T T是频谱帧的数量。通过使用条件独立性假设,后验分布 p ( Y ∣ X ) p(Y \mid X) p(YX) 被分解如下:
P ( Y ∣ X ) = ∑ Z ∏ t p ( z t ∣ z t − 1 , Y ) p ( z t ∣ X ) ⏟ ≜ p c t c ( Y ∣ X ) p ( Y ) P(Y \mid X)=\underbrace{\sum_{Z} \prod_{t} p\left(z_{t} \mid z_{t-1}, Y\right) p\left(z_{t} \mid X\right)}_{\triangleq p_{c t c}(Y \mid X)} p(Y) P(YX)=pctc(YX)

Ztp(ztzt1,Y)p(ztX)p(Y)
我们将 p c t c ( Y ∣ X ) p_{c t c}(Y \mid X) pctc(YX)定义为CTC目标函数,其中逐帧后验分布 p ( z t ∣ X ) p\left(z_{t} \mid X\right) p(ztX)以所有输入X为条件,并且用深度神经网络(例如LSTM模型)建模是非常自然的。可以使用动态编程算法有效地计算等式中的 Z Z Z上的总和。
基于注意力的方法直接评估 基于概率链规则后验 p ( Y ∣ X ) p(Y \mid X) p(YX)为:
P ( Y ∣ X ) = ∏ l p ( y l ∣ y 1 , ⋯ , y l − 1 ; X ) ⏟ ≜ p a t t ( Y ∣ X ) , P(Y \mid X)=\underbrace{\prod_{l} p\left(y_{l} \mid y_{1}, \cdots, y_{l-1} ; X\right)}_{\triangleq p_{a t t}(Y \mid X)}, P(YX)=patt(YX)

lp(yly1,,yl1;X)
,

其中,我们将 p a t t ( Y ∣ X ) p_{att}(Y \mid X) patt(YX)定义为基于注意力的目标函数,该目标函数可以方便地用基于注意力的编码器-解码器模型进行建模。

Model structure and training objective 模型结构和train目标

我们将CTC目标视为训练注意力模型编码器的辅助任务,该编码器包含VGG Prenet和双向LSTM(BiLSTM)编码器,如上面图所示。
输入频谱特征 X X X是80维对数融合频谱图,在输入到识别器模型之前,我们对其进行utterance级别的均值方差归一化。VGG-Prenet使用两个类似VGG的最大池化层在时间尺度上以因子4对输入特征进行子采样。然后,来自VGG Prenet的隐藏特征图被馈送到BiLSTM编码器,该编码器包含4个BiLSTM层,每个方向具有512个隐藏单元。CTC模块有一个完全连接(FC)| full-connected 层。注意力解码器使用位置敏感注意力,并且具有一个隐藏大小为1024的解码器LSTM层。
训练目标是最大化CTC和注意力目标的logarithmic线性组合,即之前方程中的 p c t c ( Y ∣ X ) p_{c t c}(Y \mid X) pctc(YX)和方程中的 p a t t ( Y ∣ X ) p_{att}(Y \mid X) patt(YX)
J Seq  2 seqPR ⁡ = λ log ⁡ P c t c ( Y ∣ X ) + ( 1 − λ ) log ⁡ P a t t ( Y ∣ X ) \mathcal{J}_{\text {Seq } 2 \operatorname{seqPR}}=\lambda \log P_{c t c}(Y \mid X)+(1-\lambda) \log P_{a t t}(Y \mid X) JSeq2seqPR=λlogPctc(YX)+(1λ)logPatt(YX)
其中 λ ∈ [ 0 , 1 ] \lambda \in[0,1] λ[0,1]是加权CTC目标和注意力目标的超参数。在本文中,我们将 λ \lambda λ设置为0.5。

DurIAN synthesis model

本文中使用的DurIAN合成模型受到启发,该模型被训练为根据输入音素序列 Y Y Y预测mel声谱图 X X X,如图所示。

基于注意力的seq2seq TTS模型,如Tacotron,在对齐过程中容易出错,这会导致单词缺失或重复、合成不完整或无法推广到较长的话语。为了解决这个问题,我们在synthesis 模型中加入了一个持续时间模块。
采用CBHG encoder编码器将phoneme序列转换为隐藏表示| hidden representation。在状态扩展过程中,通过根据所提供的phoneme-level 持续信息沿着时间轴重复来扩展隐藏的表示,使得扩展的表示具有与频谱特征相同数量的帧。基于自回归RNN的TTS解码器用于根据扩展的频谱特征生成mel频谱图,以speaker representations(例如,one-hot向量)为条件,以支持multi-speakers生成。在any-to-many VC设置中,说话者身份用one-hot向量表示。扬声器嵌入表与DurIAN模型的其余部分联合优化。扬声器嵌入向量被附加到扩展的编码器隐藏表示的每一帧。注意,在any-to-any VC设置中,从预训练的speaker encoder生成的speaker vectors用于表示speaker身份。
TTS解码器的网络结构与Tacotron 1中的decoedr类似。唯一的区别是,在扩展的隐藏表示中| expanded hidden representations,与解码器prenet输出连接的注意力上下文被替换为相应的编码器状态。与Tacotron 1类似,我们使解码器在每个解码步骤生成 r r r个不重叠的mel谱图帧,以加速训练和合成。
持续时间模块采用基于RNN的模型,该模型由三个BiLSTM层组成。持续时间模块的输入包含来自CBHG编码器的未扩展隐藏状态和说话者身份表示。与TTS解码器中一样,在any-to-many VC设置中,向speaker会表示为one-hot向量,并与持续时间模块联合学习speakers嵌入表。在any-to-any 任务中,采用来自同一说话人编码器的speaker vector来表示说话人身份。speaker vector被附加到CBHG编码器输出的所有帧。

extension to support any-to-any conversion

为了扩展Seq2seqPR-DurIAN以支持any-to-any 转换,我们使用额外的说话者编码器模型来生成说话者向量,该向量用于调节DurIAN合成模块生成具有任意目标说话者身份的语音。speaker编码器获取从语音信号计算出的具有不同帧数的声学矢量序列(input),并输出(output)固定维的speaker embedding vector
DurIAN模型使用从期望的目标说话者计算的说话者嵌入向量作为辅助条件来控制生成的语音的语音身份。我们训练扬声器编码器以优化广义端到端(GE2E)扬声器验证损失| verification loss。来自同一说话者的话语的嵌入被期望具有高余弦相似性,而来自不同说话者的话语则相距遥远。speaker编码器采用基于LSTM的模型结构,具有3层256个隐藏节点,然后是256个单元的投影层。最后一层的L2归一化隐藏状态被视为说话人嵌入向量|speaker embedding vector。

最后一层的L2归一化隐藏状态被视为说话人嵌入向量

BNE-seq2seqMoL-based VC

所提出的BNE-Seq2seqMoL方法将瓶颈特征提取器(BNE)与基于多说话人混合逻辑(MoL)注意力的seq2seq合成模型相结合。BNE用于从mel图谱中计算密集和丰富的内容特征,而基于MoL注意力的seq2seq模型(Seq2seqMoL)用于自回归生成mel图谱。转换过程和any-to-any VC的扩展将在本节的后面部分介绍。

BNF extractor

我们从端到端混合CTC注意力音素识别器中获得了瓶颈特征提取器。音素识别器具有与之前介绍的网络结构相同的网络结构,只是我们在识别器中加入了额外的瓶颈层,如图所示。

瓶颈层是一个完全连接的层,hidden size为256。train目标与之前展示的目标相同(见等式)。train好之后,我们将CTC模块和注意力解码器从音素识别器中删除,并将剩余部分用作瓶颈特征提取器| BNF extractor。根据语音信号计算的瓶颈特征|BNF 被视为口语内容表示| spoken content representation,并被认为是speaker-invariant。

seq2seqMoL synthesis

基于seq2seq的synthesis模型的训练过程如图所示。

采用上面介绍的train好的BNF提取器作为离线内容特征提取器。合成模型可以被视为编码器-解码器模型,其中encoder包含两个简单的网络,即瓶颈特征prenet和pitch encoder。

Bottle-neck feature prenet and pitch encoder

瓶颈特性prenet包含两个双向GRU层,每个方向有256个隐藏unit。pitch encoder采用卷积网络结构,以连续插值| interpolated 的对数F0(Log-F0)和unvoiced-voiced flags(UV)特征作为输入。Log-F0s和UV使用与用于提取mel光谱图的帧偏移相同的帧偏移来计算。由于瓶颈特征提取器沿时间轴以factor为4对mel光谱图进行下采样,因此瓶颈特征在相应的Log-F0s或UV中仅具有四分之一的帧。为了使BNF、Log-F0s和UV具有相同的时间分辨率,我们还将Log-F0和UV沿时间轴向下采样了4倍。这是通过使用步长为2的两个一维卷积层来实现的,其中隐藏维度为256。为了去除可能的说话人信息,我们在pitch编码器中的每个卷积层之后添加了一个没有仿射变换| affine transformation 的实例归一化层。

pitch编码器和瓶颈特征prenet的输出是按元素| element-wise添加的。在any-to-many 转换中,使用one-hot向量作为说话人表示,并与整个合成网络联合训练额外的说话人嵌入表| additional speaker embedding table。speaker矢量被连接到编码器输出的每一帧。

MoL attention-based decoder

综合模型的解码器采用了与Tacotron 2中使用的自回归网络结构类似的自回归结构,只是使用了location-relative discretized mixture of logistics(MoL)注意力机制。(与tacotron2类似 主要是多了MOL机制)
让我们将编码器输出表示为 { h j } j = 1 T ~ \left\{h_{j}\right\}_{j=1}^{\tilde{T}} {hj}j=1T~,其中 T ~ = \tilde{T}= T~= 1 4 T \frac{1}{4} T 41T,并且 T T T是mel频谱图中的帧数。注意力RNN在解码器步骤 i i i处产生隐藏状态 s i s_{i} si。然后注意力机制消耗 s i s_{i} si来产生align α i ∈ R T ~ \alpha_{i} \in \mathbf{R}^{\tilde{T}} αiRT~ α i \alpha_{i} αi来计算被馈送到解码器RNN的文本向量 c i c_{i} ci,以产生编码器状态的加权平均 { h j } j = 1 T ~ \left\{h_{j}\right\}_{j=1}^{\tilde{T}} {hj}j=1T~。解码器RNN将 s i s_{i} sic i c_{i} ci作为输入,其输出 d i d_{i} di与文本向量 c i c_{i} ci一起使用,以在当前解码器步骤中通过线性层产生mel谱图帧。
s i = RNN ⁡ Att  ( [ x i − 1 , c i − 1 ] , s i − 1 ) α i = Attention ⁡ ( s i ) c i = ∑ j = 1 T ~ α i , j h j d i = RNN ⁡ Dec  ( [ c i , s i ] , d i − 1 ) x i = Linear ⁡ Out  ( d i , c i ) \begin{aligned} s_{i} & =\operatorname{RNN}_{\text {Att }}\left(\left[x_{i-1}, c_{i-1}\right], s_{i-1}\right) \\ \alpha_{i} & =\operatorname{Attention}\left(s_{i}\right) \\ c_{i} & =\sum_{j=1}^{\tilde{T}} \alpha_{i, j} h_{j} \\ d_{i} & =\operatorname{RNN}_{\text {Dec }}\left(\left[c_{i}, s_{i}\right], d_{i-1}\right) \\ x_{i} & =\operatorname{Linear}_{\text {Out }}\left(d_{i}, c_{i}\right) \end{aligned} siαicidixi=RNNAtt([xi1,ci1],si1)=Attention(si)=j=1T~αi,jhj=RNNDec([ci,si],di1)=LinearOut(di,ci)
注意力机制类似于中使用的机制,这是中提出的纯基于位置|purely location-based的机制的位置相对| loaction-relative扩展。注意力对齐权重对应于学习注意力分布| learned attention distribution ϕ ( ⋅ ; γ i ) \phi\left(\cdot ; \gamma_{i}\right) ϕ(;γi),其中 γ i \gamma_{i} γi是使用简单多层感知(MLP)网络从注意力RNN状态 s i s_{i} si计算的分布参数。我们对注意力分布 ϕ ( ⋅ ; γ i ) \phi\left(\cdot ; \gamma_{i}\right) ϕ(;γi)使用离散化的MoL。在每个解码器步骤,计算一组分布参数 γ i = { w i k , μ i k , σ i k } k = 1 K \gamma_{i}=\left\{w_{i}^{k}, \mu_{i}^{k}, \sigma_{i}^{k}\right\}_{k=1}^{K} γi={wik,μik,σik}k=1K,对应于K个混合系数、均值和尺度。在本文中,混合物的数量被设置为5。计算过程如下所示,也如图所示。

( w ^ i , Δ ^ i , σ ^ i ) = MLP ⁡ ( s i ) w i = SM ⁡ ( w ^ i ) , Δ i = SP ⁡ ( Δ ^ i ) , σ = SP ⁡ ( σ ^ i ) μ i = μ i − 1 + Δ i \begin{gathered} \left(\hat{w}_{i}, \hat{\Delta}_{i}, \hat{\sigma}_{i}\right)=\operatorname{MLP}\left(s_{i}\right) \\ w_{i}=\operatorname{SM}\left(\hat{w}_{i}\right), \quad \Delta_{i}=\operatorname{SP}\left(\hat{\Delta}_{i}\right), \quad \sigma=\operatorname{SP}\left(\hat{\sigma}_{i}\right) \\ \mu_{i}=\mu_{i-1}+\Delta_{i} \end{gathered} (w^i,Δ^i,σ^i)=MLP(si)wi=SM(w^i),Δi=SP(Δ^i),σ=SP(σ^i)μi=μi1+Δi
其中 SM ⁡ ( ⋅ ) \operatorname{SM}(\cdot) SM()表示softmax函数, SP ⁡ ( ⋅ ) \operatorname{SP}(\cdot) SP()代表softplus函数。注意,在等式中,我们在前一解码步骤中向分量均值添加了正偏移,这使得每个分量逻辑分布的中心以单调的方式向输入序列的末尾移动。给定计算的MoL分布参数 γ i \gamma_{i} γi,在解码器步骤 i i i处从离散化的注意力分布 ϕ i ( ⋅ ; γ i ) \phi_{i}\left(\cdot ; \gamma_{i}\right) ϕi(;γi)获得注意力权重 α i , j \alpha_{i, j} αi,j ,如下:
α i , j = ϕ i ( j ; γ i ) = ∑ k = 1 K w i k [ σ ( j + 0.5 − μ i k σ i ) − σ ( j − 0.5 − μ i k σ i ) ] \begin{aligned} & \alpha_{i, j}=\phi_{i}\left(j ; \gamma_{i}\right) \\ & =\sum_{k=1}^{K} w_{i}^{k}\left[\sigma\left(\frac{j+0.5-\mu_{i}^{k}}{\sigma_{i}}\right)-\sigma\left(\frac{j-0.5-\mu_{i}^{k}}{\sigma_{i}}\right)\right] \end{aligned} αi,j=ϕi(j;γi)=k=1Kwik[σ(σij+0.5μik)σ(σij0.5μik)]
其中σ表示sigmoid函数。
在Tacotron 1和2之后,将包含两个线性层的解码器prenet和基于残差卷积的postnet添加到synthesis解码器。我们还让解码器预测停止令牌| stop tokens,当停止概率达到阈值0.5时,停止令牌用于停止解码过程。

训练目标是minimize结合停止标记预测上的二进制交叉熵损失| binary cross-entropy loss,最大限度地减少基本事实mel谱图X和预测的 X ^ \hat{X} X^之间的MSE loss。

conversion procedure

给定来自任意来源说话者的语音话语,该方法首先计算mel声谱图、连续Log-F0s和UV标志。然后使用BNF提取器从mel光谱图中提取内容特征。使用源speaker和目标speaker的对数缩放F0统计信息,以对数比例从源到目标线性转换Log-F0,如下所示:
log ⁡ − F 0 v c = σ target  σ source  ( log ⁡ − F 0 source  − μ source  ) + μ target  \log -\mathrm{F} 0_{\mathrm{vc}}=\frac{\sigma_{\text {target }}}{\sigma_{\text {source }}}\left(\log -\mathrm{F} 0_{\text {source }}-\mu_{\text {source }}\right)+\mu_{\text {target }} logF0vc=σsourceσtarget(logF0sourceμsource)+μtarget
其中 μ \mu μ 's和 σ \sigma σ 's表示对数标度F0的平均值和标准偏差。
瓶颈特征、Log-F0vc和UV标志分别在经过瓶颈特征prenet和pitch encoder后按元素级别添加。该输出与目标说话者嵌入向量级联以形成编码器输出。MoL注意力解码器然后以自回归方式从编码器输出生成转换后的mel频谱图。神经声码器最终用于从转换后的mel频谱图生成波形。

Extension to any-to-any conversion

我们使用相同speaker encoder模型来生成任意目标speaker的speaker vector。在BNESeq2seqMol any-to-many方法中,我们用speaker encoder生成的speaker vector代替了one-hot speaker representation,从而支持any-to-any转换。speaker encoder的细节与之前介绍的相同。

experiments

datasets

本文中使用的数据集都是公开的。LibriSpeech(960小时)用于训练音素识别器| phonoeme recognizer。LibriSpeech词典用于从文本转录本中获得音素序列。

在any-to-many 语音转换中,我们使用VCTK语料库和CMU ARCTIC数据库。VCTK语料库包含109位speakers 44小时的clean speech。在本文中,我们仅使用来自105个VTCK speakers的数据。我们选择600个话语作为验证集,另外600个话语用于测试集,而其余的话语用于训练集。CMU ARCTIC数据库包含1132个英语使用者的平行语料。使用了来自四个speaker的数据:两个女性(clb和slt)和两个男性(bdl和rms)。我们选择50个话语进行验证,另外50个话语用于测试。我们分别从四个说话者中的每一个的剩余话语中随机选择不重叠的250个话语,使得它们在训练期间没有平行的话语。

对于any-to-any 语音转换,我们使用LibriSpeech(train-other-500)、VoxCeleb1和VoxCeleba2数据集来训练speaker encoder。总共有超过8K的speaker,因此我们预计扬声器编码器可以推广到任何看不见的扬声器。LibriTTS(train-clean-100和train-clean360)数据集与VCTK语料库的训练集一起用于训练Seq2seqPRDurIAN和BNE-Seq2seqMoL方法的合成模型。CMU ARCTIC数据库仅用于此设置中的转换阶段。也就是说,在训练过程中,四个speaker(bdl、clb、rms和slt)都是看不见的。这模拟了从any souece speaker到any target speaker的VC,这形成了any-to-any 转换的poilt version。

features and neural vocoder model

如果原始采样率不同,本文中使用的语音信号都被重新采样到16kHz。除了speaker encoder将40维log-mel谱图作为输入之外,谱特征都是80维log-mel谱图。80维对数熔谱图是用50ms Hanning窗口和10ms frame shift计算的,而40维log-mel谱图是用25ms Hanning窗口和10ms frame shift计算的。

我们使用PyWorld toolkit从语音信号中提取F0,并通过对线性插值的F0s取对数来获得Log-F0s。在Seq2seqPR-DurIAN方法中训练合成模型时,我们使用开源的Montrealforced aligner(MFA)来获得音素水平的持续信息。

在本文中,WaveRNN网络被用作神经声码器vocoder。语音波形是µ-law 量化为512路分类分布。使用了开源Pytorch实现。由于mel声谱图捕获了高质量语音合成所需的所有相关细节,我们只需使用来自多个说话者的基本事实mel声纹图来训练WaveRNN,而不添加任何说话者身份表示。我们只使用VCTK训练集来训练WaveRNN模型。

comparisons

将四种VC方法与any-to-many转换的实验以及扩展到any-to-any转换的实验进行了比较。我们将提出的Seq2seqPR-DurIAN和BNE-Seq2seqMoL方法与最近提出的另外两种方法进行了比较,即基于PPG的VC和non-parallel seq2seq VC,如前面所述。它们的实现细节如下。

PPG-VC

该基线方法的网络架构类似于VCC2018中的N10系统。
如图所示,该方法由PPG提取器和multi-speaker conversion模型组成。PPG提取器采用基于RNN的模型结构,包含5个双向门控递归单元(GRU)层,每个方向有512个隐藏单元。multi-speaker conversion模型还具有RNN结构,该结构由4个双向LSTM层组成,每个方向具有256个隐藏单元。
在any-to-many转换中,说话者身份被表示为one-hot向量,并且额外的说话者嵌入表与转换模型的其他部分一起学习。speaker embedding vector具有256的大小,并且逐帧地与PPG连接。转换模型提到的VCTK和CMU ARCTIC训练分割进行训练。
在any-to-any转换中,使用介绍的相同speaker encoder 从mel频谱图生成speaker矢量。这个设置类似于我们先前工作中的设置,只是 i i i向量和学习的说话人嵌入向量被用作说话人身份表示。我们使用LibriTTS(train-clean-100和train-clean-360)数据集和VCTK语料库的训练集来训练转换模型。
PPG提取器是从逐帧音素识别器获得的,该识别器是用LibriSpeech数据集(960小时)训练的。我们首先使用MFA在音素级别上align the audio and transcript。然后,使用audio-text alignment infomation来获得mel谱图和音素序列之间的帧到音素的对应关系,利用该对应关系可以训练逐帧的音素识别器。我们将最后一个softmax层之后的概率向量视为一个话语的PPG特征。

NonParaSeq2seq-VC

提出了这种基线方法,其中从声学特征中提取解纠缠的内容和说话者表示,并通过保留源话语的内容表示同时用目标话语替换说话者表示来实现语音转换。由于有一个speaker encoder是与整个模型联合训练的,因此这种方法可以从any-to-many转换扩展到支持any-to-any转换。我们使用VCTK和CMU ARCTIC训练分割来训练any-to-many转换设置的模型,并使用LibriTTS(train-clean-100和train-clean-360)数据集与VCTK语料库的训练集一起训练any-to-any转换设置的模式。在本研究中,我们使用了作者发布的官方内容进行实现。

objective evaluations

在我们的实验中,我们发现MoL注意力的注意力对齐矩阵几乎是对角的,这意味着所提出的BNE-Seq2seqMoL系统几乎没有建模能力来有效地转换持续时间和说话率。因此,我们仅使用ASR系统的梅尔倒谱失真(MCD)、均方根误差(F0-RMSE)和字符/单词错误率(CER/WER)作为客观评估的指标。MCD用于评估频谱转换,计算如下:
MCD ⁡ [ d B ] = 10 log ⁡ 10 2 ∑ d = 1 K ( M C C d c − M C C d t ) 2 \operatorname{MCD}[\mathrm{dB}]=\frac{10}{\log 10} \sqrt{2 \sum_{d=1}^{K}\left(\mathrm{MCC}_{d}^{c}-\mathrm{MCC}_{d}^{t}\right)^{2}} MCD[dB]=log10102d=1K(MCCdcMCCdt)2


其中MCC表示mel倒谱系数, K K K是MCC的维度, M C C d c \mathrm{MCC}_{d}^{c} MCCdcM C C d t \mathrm{MCC}_{d}^{t} MCCdt分别表示转换后的MCC和目标MCC的第d维度系数。在本文中,Pyworld工具包用于提取MCC,其中我们设置 K K K=24。
F0-RMSE用于评估F0转换:
F 0 − R M S E [ H z ] = 1 N ∑ i = 1 N ( F O i c − F O i t ) 2 \mathrm{F} 0-\mathrm{RMSE}[\mathrm{Hz}]=\frac{1}{N} \sqrt{\sum_{i=1}^{N}\left(\mathrm{FO}_{i}^{c}-\mathrm{FO}_{i}^{t}\right)^{2}} F0RMSE[Hz]=N1i=1N(FOicFOit)2


其中 N N N是帧数, F i c \mathrm{F}_{i}^{c} FicF i t \mathrm{F}_{i}^{t} Fit分别是转换语音和目标语音的第 i i i帧处的F0值。
我们使用transformer-based 的seq2seq ASR引擎来计算转换语音的CER和WER,以评估其可懂度。ASR模型使用LibriSpeech(960小时)数据集进行训练。CMU ARCTIC测试集的CER和WER分别为2.71%和4.30%。
any-to-many 语音转换设置中的客观评估结果如表所示:

我们可以看到,所提出的BNE-Seq2seqMoL方法平均在所有四个目标指标上都实现了最佳性能。

PPG-VC方法在四种方法中具有最差的F0-RMSE,这验证了通过逐帧映射的转换在转换期间对韵律建模的能力受到约束。比较具有相似模型架构的NonParaSeq2seq VC和Seq2seqPR DurIAN方法,我们可以看到,重新设计的Seq2seqPRDurIAN平均在所有四个指标上都具有优异的结果。在这些方法中,NonParaSeq2seq VC的CER和WER明显较差,初步听力测试发现转换语音中存在重复、跳跃和截断现象。这意味着注入一个持续时间模型,它提供了明确的phone-level的持续时间信息,使转换更加稳健。将PPG-VC的结果与BNE-Seq2seqMoL的结果进行比较表明,后者的自回归特性可以提高VC在四个目标指标上的性能。

any-to-any 语音转换设置中的客观评估结果如表所示。

我们可以看到,PPG-VC方法在MFC、CER和WER方面具有最好的结果。所提出的BNE-Seq2seqMoL在四种方法中给出了最低的F0-RMSE,并在MCD、CER和WER方面获得了良好的结果。请注意,使用VCTK训练集和大型LibriTTS(train-clean-100,train-clean-360)数据集的组合来训练模型,该数据集包含比any-to-many设置中多得多的训练数据。这表明使用更多的训练数据可以克服PPG-VC方法中跨帧独立预测的不足。

subjective evaluation

根据转换语音的自然度和说话者相似性进行主观评价。我们使用5分Likert量表来测试关于自然度和说话者相似性评估的平均意见得分(MOS)(1分,2分,3分,4分,5分)。在评估自然度的MOS测试中,每组都包含来自目标speaker的记录样本,在将其呈现给听众之前,这些样本与四种比较方法生成的样本随机混洗。
在MOS相似性测试中,转换后的语音样本与目标说话者的记录样本直接进行比较。对于每个转换对(即,F-M、F-F、M-M和M-F),呈现来自CMU ARCTIC测试集的10个话语。我们邀请了35名精通英语的评分员在一个安静的房间里参加评估,并要求他们在测试期间使用耳机。评分者被允许根据需要对每个样本进行多次重播,并在提交结果之前更改对任何样本的评分。
any-to-many语音转换设置的主观MOS评估结果如表所示。

我们可以看到,所提出的BNE-Seq2seqMoL方法在自然度和说话者相似性方面都获得了最佳的平均结果。更具体地说,对于F-F、M-M、F-M对,所提出的模型实现了更好的性能。而对于M-F对,Seq2seqPR-DurIAN提供了更好的结果。可能的原因可能是BNE-Seq2seqMoL方法使用的对数尺度的简单线性变换不能充分模拟实际的男性到女性音高转换;并且这也可以通过如表1所示的转换语音和参考语音之间的高F0-RMSE来反映。
在any-to-any转换中,我们只对所提出的BNE-Seq2seqMoL方法进行MOS测试。结果如表所示。

根据绝对MOS值,我们可以看到,所提出的方法在one-shot/few-shot语音转换设置中也获得了良好的VC性能。

Cross-speaker property of bottle-neck features

为了探索BNE在BNE-Seq2seqMoL方法中提取的瓶颈特征的性质,使用分布式随机邻域嵌入(t-SNE)来可视化瓶颈特征。t-SNE是一种非线性降维技术,广泛用于将高维数据嵌入二维或三维空间。目标是在低维空间中找到这些高维数据的忠实表示。
如图是四个说话者(bdl、rms、slt和clb)的发音“arctic-a0001”的瓶颈特征的二维t-SNE可视化。将256维瓶颈特征输入t-SNE,然后在5000次迭代后获得结果。在图中,每个瓶颈特征框由一个点表示。四种颜色代表四个扬声器。我们可以在不同的扬声器中看到瓶颈特征的强烈聚类效应。

上图中红色虚线框的细节如下图所示,其中数字索引表示瓶颈特征中前几个帧的顺序帧顺序。在四个被检查的speaker中可以观察到类似的流形模式|manifold pattern,这表明了所提出的BNE-Seq2seqMoL方法中使用的瓶颈特征的跨扬声器特性的优点。这也可以是BNE-Seq2seqMoL方法优越的VC性能的合理解释,因为从源语音中获得与说话者无关的内容表示使合成模块更加专注于生成目标语音。

Ablation Studies

在本节中,进行了消融研究,以验证所提出的BNE-Seq2seqMoL方法中特征选择和模型设计策略的有效性。具体而言,进行了三项消融研究:1)放弃Log-F0和UV特征,仅使用瓶颈特征作为合成模块的输入;2) 丢弃音调编码器中的实例归一化层;3) 使用位置敏感注意(LSA)而不是位置相对MoL attention。
消融研究的客观评估如表所示。我们观察到,BNE-Seq2seqMoL方法的特征选择和模型设计获得了最佳的F0-RMSE和WER结果,并获得了接近最佳的MCD和CER结果。这验证了BNE-Seq2seqMoL方法中特征选择和模型设计的有效性。

Training and Inference Speed

在所有实验中,如果验证损失在五个时期内没有减少,训练过程就会提前停止。我们使用Pytorch工具包在没有任何硬件优化的情况下实现所有模型。计算平台信息为:NVIDIA Tesla M40 GPU和Intel(R)Xeon(R)CPU E52680(v4)@2.40GHz。我们在任意对多设置中测量Seq2seq-DurIAN和BNE-Seq2seqMoL方法的训练时间。使用8个GPU训练音素识别器的10个时期大约需要40个小时。Seq2seq DurIAN系统中的合成模块在1个GPU上训练了200个时期,耗时44小时。BNESeq2seqMoL方法中的合成模块在1个GPU上训练了56个时期,耗时28小时。
还使用来自测试集的50个样本来测量任意对多VC的所有比较的四个系统的GPU上的推理速度。由于我们使用开源自回归WaveRNN模型作为声码器来生成波形,因此我们排除了WaveRNN推理时间,以防止其主导计算。推断实时因子(RTF)如表所示。Seq2seq-DurIAN和NonParaSeq2seq-VC系统的波束尺寸为10。

BNE-Seq2seqMoL方法中的瓶颈特征提取器具有多个BiLSTM层,这些层循环计算输入帧。为了探索加快BNE-Seq2seqMoL方法推理速度的可能性,我们沿着时间轴将输入的mel谱图均匀地划分为N∈[2,4,6,8,16]段,并以批处理模式计算瓶颈特征。然后,N个片段的瓶颈特征在被馈送到系统的其余部分之前被临时连接。RTF结果如表所示,其中“折叠xN”是指划分为N个片段。我们可以看到,将一个mel谱图划分为两个片段可以获得最大的推理速度增益;我们的初步监听测试表明,这种划分操作(即“折叠x2”)不会影响转换性能。

conclusion

在本文中,我们重新设计了一种先前的方法,以实现鲁棒的non-parallel seq2seq any-to-many VC方法。该新方法将seq2seq音素识别器(Seq2seqPR)和多说话者持续时间知情注意力网络(DurIAN)连接起来进行合成。还扩展了这种方法,以支持any-to-any语音转换。
为了克服基于PPG和non-parallel的seq2seq any-to-many VC方法的不足,我们进一步提出了一种新的any-to-many 方法,该方法将瓶颈特征提取器(BNE)与基于MoL注意力的seq2seq合成模型相结合。该方法可以很容易地扩展到任意对任意VC。客观和主观的评估结果表明,无论是在any-to-many any-to-any的VC设置中,该方法都具有优越的VC性能。
已经进行了消融研究,以确认所提出方法中特征选择和模型设计策略的有效性。
所提出的BNE-Seq2seqMoL方法已经成功地将序列到序列VC流水线缩短为仅包含ASR编码器和合成解码器。然而,它仍然使用频谱特征(即mel频谱图)作为中间表示,并依赖于独立训练的神经声码器来生成波形。这可能会降低合成质量,这可以通过以端到端的方式(即波形到波形的训练)联合训练整个VC流水线来避免。在未来,我们还将在源风格转移和情感转换方面探索所提出的方法。

【VC/AC论文】Any-to-Many Voice Conversion withLocation-Relative Sequence-to-Sequence Modeling相关推荐

  1. 【论文学习笔记】《An Overview of Voice Conversion and Its Challenges》

    <An Overview of Voice Conversion and Its Challenges: From Statistical Modeling to Deep Learning&g ...

  2. 【论文翻译】Deep Voice 3:通过卷积序列学习来扩展语音合成

    Deep Voice 3 引入了全卷积序列到序列式模型来进行语音合成,这种新架构在语音训练速度上有了数量级的提升,经过800 多个小时的语音数据学习,它可以合成 2400 多钟不同的语音结果.Deep ...

  3. 语音合成(TTS)论文优选:Accent and Speaker Disentanglement in Many-to-many Voice Conversion

    声明:语音合成(TTS)论文优选系列主要分享论文,分享论文不做直接翻译,所写的内容主要是我对论文内容的概括和个人看法.如有转载,请标注来源. 欢迎关注微信公众号:低调奋进 Accent and Spe ...

  4. 【VC】VQVC+: One-Shot Voice Conversion by Vector Quantization and U-Net architecture

    VQVC+: One-Shot Voice Conversion by Vector Quantization and U-Net architecture Abstract Introduction ...

  5. 【20220121】Voice conversion

    voice conversion 1. autovc zero-shot 代码复现 retrain Vocoder 划分数据集 Bottleneck维度分析 2. CLSVC 代码复现 3. Spee ...

  6. Voice conversion相关语音数据集综合汇总

    CSTR VCTK Corpus:英语语音,109个说话人,每个说话人平均400句话,每句话4至10秒,平行语料. TIMIT Acoustic-Phonetic Continuous Speech ...

  7. 李宏毅《DLHLP》学习笔记7 - Voice Conversion

    视频链接:https://www.youtube.com/watch?v=Jj6blc8UijY&list=PLJV_el3uVTsO07RpBYFsXg-bN5Lu0nhdG&ind ...

  8. 李宏毅DLHLP.09.Voice Conversion.1/2. Feature Disentangle

    文章目录 介绍 什么是VC 应用 实操 分类 Feature Disentangle Using Speaker Information Pre-training Encoders Content E ...

  9. 李宏毅DLHLP.10.Voice Conversion.2/2. CycleGAN and starGAN

    文章目录 介绍 2nd Stage Training Direct Transformation Cycle GAN starGAN Reference 介绍 本门课程是2020年李宏毅老师新课:De ...

最新文章

  1. tcpdump抓包对性能的影响
  2. 动态加载vs静态加载
  3. Drools:fireAllRules,fireUntilHalt和Timers内部代码清理的详细说明
  4. frontcon函数用不了_C++复制构造函数与析构函数
  5. efcore 批量_EFCore批量操作内幕
  6. 震惊,PostGIS还可以这样用!!!
  7. Spark ML机器学习
  8. vs2017安装好后颜色主题、字体、语言包的设置
  9. IBatis .NET 开发学习笔记——简要介绍
  10. 查询ORACLE数据库操作记录
  11. JDK1.8 中文开发帮助文档
  12. 虎课网腾小渔C4DR21基础入门,OC渲染设置
  13. 同济大学研究生 计算机 哪个校区,同济大学研究生院在哪个校区?宿舍条件好不好?有哪些招生专业目...
  14. windows的mysql无密码登录,windows mysql 跳过登录密码重置
  15. Ubuntu配置拼音和五笔输入法
  16. C/C++和Lua混合编程
  17. Java实现分数排名算法_海量用户积分排名算法探讨(转)
  18. Nginx报错 nginx: [error] invalid PID number ““ in “/usr/local/nginx/logs/nginx.pid“
  19. stm32出现ram、rom不够用,调试方法
  20. Android 之路51---百度地图实现

热门文章

  1. 联邦学习+拆分学习|SplitFed: When Federated Learning Meets Split Learning
  2. 邂逅-------秋天的童话
  3. 原生JS实现下拉菜单操作
  4. HTML超链接的作用是什么,什么是超链接,有什么作用,如何创建超链接
  5. 数码相机里的光学变焦和数字变焦的区别
  6. ppp在linux下的编译和安装、问题
  7. 关于趋势系数和气候倾向率
  8. 重阳节加班--新建项目
  9. 杰理AC692N 系列录音功能开发
  10. 强化学习系列(1):强化学习(Reinforcement Learning)