BLSTM-RNN、Deep Voice、Tacotron…你都掌握了吗?一文总结语音合成必备经典模型-1

本文涉及的产品
交互式建模 PAI-DSW,5000CU*H 3个月
简介: BLSTM-RNN、Deep Voice、Tacotron…你都掌握了吗?一文总结语音合成必备经典模型

BLSTM-RNN、Deep Voice、Tacotron…你都掌握了吗?一文总结语音合成必备经典模型(一)

机器之心 2022-12-04 12:31 发表于北京

以下文章来源于机器之心SOTA模型,作者机器之心SOTA模型

机器之心专栏

本专栏由机器之心SOTA!模型资源站出品,每周日于机器之心公众号持续更新。

 

本专栏将逐一盘点自然语言处理、计算机视觉等领域下的常见任务,并对在这些任务上取得过 SOTA 的经典模型逐一详解。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。


本文将分 2 期进行连载,共介绍 19 语音合成任务上曾取得 SOTA 的经典模型。


  • 第 1 期:BLSTM-RNN、WaveNet、SampleRNN、Char2Wav、Deep Voice、Parallel WaveNet、GAN、Tacotron、VoiceLoop

  • 第 2 期:Tacotron2、GST、DeepVoice3、ClariNet、LPCNet、Transformer-TTS、Glow-TTS、Flow-TTS、cVAE+Flow+GAN、PnG BERT


您正在阅读的是其中的第 1 期。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。


本期收录模型速览

模型 SOTA!模型资源站收录情况 模型来源论文
BLSTM-RNN https://sota.jiqizhixin.com/project/blstm-rnn TTS Synthesis with Bidirectional LSTM based Recurrent Neural Networks
WaveNet https://sota.jiqizhixin.com/project/wavenet-2
收录实现数量:7
支持框架:PyTorch、TensorFlow等
WaveNet: A Generative Model for Raw Audio
SampleRNN https://sota.jiqizhixin.com/project/samplernn
收录实现数量:2
支持框架:PyTorch、Torch
SampleRNN: An Unconditional End-to-End Neural Audio Generation Model
Char2Wav https://sota.jiqizhixin.com/project/char2wav Char2Wav: End-to-end speech synthesis
Deep Voice https://sota.jiqizhixin.com/project/deep-voice
收录实现数量:1
支持框架:PyTorch
Deep Voice: Real-time Neural Text-to-Speech
Parallel WaveNet https://sota.jiqizhixin.com/project/parallel-wavenet
收录实现数量:2
支持框架:PyTorch、TensorFlow
Parallel WaveNet: Fast High-Fidelity Speech Synthesis
GAN https://sota.jiqizhixin.com/project/gan-voice
收录实现数量:1
支持框架:PyTorch
Statistical Parametric Speech Synthesis Using Generative Adversarial Networks Under A Multi-task Learning Framework
Tacotron https://sota.jiqizhixin.com/project/tacotron
收录实现数量:23
支持框架:PyTorch、TensorFlow
Tacotron: Towards End-to-End Speech Synthesis
VoiceLoop https://sota.jiqizhixin.com/project/voiceloop VoiceLoop: Voice Fitting and Synthesis via a Phonological Loop

语音合成(speech synthesis)是指通过机械的、电子的方法产生人造语音的技术,Text To Speech(TTS)将文本转化成拟人化的语音(输入为文本的语音合成),就是一种典型的也是最为我们熟知的语音合成任务。语音合成广泛适用于智能客服、有声阅读、新闻播报、人机交互等业务场景。语音合成和语音识别技术是实现人机语音通信、建立一个有听和讲能力的口语系统所必需的两项关键技术。使电脑具有类似于人一样的说话能力,是当今时代信息产业的重要竞争市场。和语音识别相比,语音合成的技术相对说来要成熟一些,并已开始向产业化方向成功迈进,大规模应用指日可待。像我们熟知的讯飞、火山引擎等就是语音合成技术产业化的典范。


传统的语音合成模型(也称为统计参数语音合成(Statistical Parametric Speech Synthesis)SPSS)包括三个处理步骤:前端处理——声学模型——声码器,其中,前端处理与声码器都有通用的一些方案,针对不同任务的改进点主要在声学模型部分。前端处理主要是指对文本进行分析,通常会对输入语音合成系统的文本进行预处理,比如转成音素序列,有时还会进行断句、韵律分析等,最终从文本中提取发声和韵律。声学模型主要是根据语言学特征生成声学特征。最后,声码器根据声学特征合成语音信号。建设这些模块需要大量的专业知识和复杂的工程实施,这将需要大量的时间和精力。另外,每个组成部分的错误组合可能会使模型难以训练。向传统的三阶段式语音合成模型中引入深度学习模型(DNN),可以学习从语言特征(输入)到声音特征(输出)的映射函数。基于DNN的声学模型为语言特征和声学特征之间的复杂依赖关系提供了有效的分布式表示。然而,基于前馈DNN的声学特征建模方法的一个局限性是,它忽略了语音的连续性。基于DNN的方法假定每一帧都是独立采样的,尽管语音数据中的连续帧之间存在着关联性。递归神经网络(RNN)提供了一种有效的方法来模拟语音相邻帧之间的相关性,因为它可以使用所有可用的输入特征来预测每一帧的输出特征。在此基础上,一些研究人员用RNN代替DNN来捕捉语音帧的长期依赖性,以提高合成语音的质量。


近年来,随着深度学习的兴起,模型精度有了突飞猛进的发展。其中,深度神经网络超强的特征学习能力大大简化了特征抽取的过程,降低了建模对于专家经验的依赖,建模流程逐步从之前复杂多步的流程转向了简单的端到端的建模流程,端到端的神经网络语音合成也成为产业化大规模应用的主流方法。端到端的模型可以看做是两个主要阶段:声学模型建模和神经声码器。其中,声学模型建模直接将输入的文本/音素序列转换为帧级语音特征,神经声码器将帧级语音特征转换为语音波形,神经声码器包括自回归模型和非自回归模型两类。端到端的方法在性能和部署推广遍历性方面都优于传统方法。

我们在这篇报告中总结了在经典语音合成方法和端到端语音合成方法中的深度学习TOP模型,既包括在前端处理中的应用,也包括聚焦于声学模型、声码器中应用的深度学习模型。

BLSTM-RNN


该模型采用带有双向长短期记忆(BLSTM)单元的递归神经网络(RNN)来捕捉语音语料中任何两个瞬间的相关或共同发生的信息,用于参数化TTS任务(Statistical Parametric TTS Synthesis system),属于深度学习模型在语音合成的前端处理中的应用。在时间尺度上,RNN可以通过取前一个或后一个潜在状态而展开成一个广泛的结构。像DNN一样,RNN也可以在多层中堆叠在一起,并在空间中具有深层结构。


图1.基于BLSTM-RNN的TTS合成


在基于BLSTM-RNN的TTS合成中,丰富的语境也被用作输入特征,其中包含分类语境的二进制特征,例如电话标签、当前单词的POS标签和TOBI标签,以及数字语境的数字特征,例如短语中的单词数或当前电话的当前帧的位置。输出特征是声学特征,如频谱包络和基本频率。输入特征和输出特征可以通过一个训练有素的HMM模型逐帧地进行时间调整。RNN也很强大,使其有可能对输入-输出排列不详的顺序数据进行建模。DNN的权重是通过使用从训练数据中提取的输入和输出特征对来训练的,以最小化给定输入的映射输出和目标输出之间的误差。

在RNN训练中,训练标准是使输出特征和ground-truth之间的均方误差最小。通过时间的反向传播(Back-propagation through time,BPTT)是训练RNN最经常使用的算法。BPTT首先通过时间将RNN展开为前馈网络,然后用反向传播法训练展开的网络。对于深层双向LSTM,BPTT算法同时应用于前向和后向潜在节点,并逐层反向传播。在DNN训练中,权重是通过反向传播程序和基于 "mini-batch "的随机梯度下降算法来训练的,该算法从整个训练集中随机选择mini-batch的帧。在RNN训练中,权重梯度是在整个语料中计算的。为了并行化和加速,每次更新都会随机选择几十个语料,然后用来同时更新RNN的权重。

在合成过程中,首先通过文本分析将输入文本转换成输入特征向量,然后通过训练好的BLSTM-RNN将输入特征向量映射到输出向量。在基于HMM的TTS中,相应的上下文标签被用来访问决策树,以获得上下文的HMM状态序列。将相应的HMM状态的平均值和协方差送入参数生成模块,以生成具有动态信息的平滑语音参数轨迹。在基于DNN的TTS中,通过将DNN的预测输出特征设定为所有训练数据中输出特征的均值向量和预先计算的(全局)方差,语音特征生成模块可以生成满足静态和动态特征统计的语音参数特征的平滑轨迹,而发声/非发声标志由DNN预测的经验阈值决定。考虑到RNN在模拟顺序问题方面的能力,参数生成模块隐含在基于DBLSTM-RNN的TTS合成中,也就是说,RNN的输出特征只是静态特征:频谱包络、增益、基频和U/V决策,然后直接输入声码器,合成最终的语音波形。


项目 SOTA!平台项目详情页
BLSTM-RNN 前往SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/blstm-rnn

WaveNet


WaveNet是一种原始音频波形的深度生成模型,属于深度学习模型在语音合成的前端处理中的应用,是在波形水平上运行的深度学习模型。WaveNet是一个完全概率自回归模型,每个音频样本的预测分布取决于之前的所有样本。WaveNet可以在每秒数万采样率的音频数据上高效地进行训练。WaveNet还需要对现有TTS前端的语言特征进行调节,因此不是端到端的方法,只是取代了声码器和声学模型。

WaveNet运用了因果卷积与扩大卷积:

因果卷积确保了模型输出不会违反数据的顺序,模型在某时刻输出的预测不会依赖任何一个未来时刻的数据。在训练阶段,每个时刻的输出需要计算的样本都是已知的,因此所有时刻的条件概率预测可以并行计算。由于使用因果卷积的模型中没有循环连接,通常训练起来比RNN更快,特别是对于很长句子的训练。因果卷积存在的一个问题是它需要很多层,或者很大的卷积核来增大其感受野。例如,在下图2中,感受野只有5个单位 (感受野 = 层数 + 卷积核长度 - 1)。因此WaveNet使用扩大卷积使感受野增大几个数量级,同时不会显著增加计算成本。


图2. 因果卷积层堆栈的可视化


扩大卷积是卷积核在比自身大的数据上进行卷积时跳步的卷积方法。与正常卷积相比,扩大卷积使网络可以执行粗粒度的卷积操作。如图3中,扩大卷积的扩大系数每层翻倍(1,2,4,8),只通过少数几层便拥有了非常大的感受野(16个单位)WaveNet中最大的扩大系数达到了512,拥有1024个单位的感受野。


图3. 扩张的因果卷积层堆栈的可视化


Softmax分布:

原始音频通常保存为16Bit规格 ,对每个时刻输出的可能值 ,softmax层将需要输出65536个值。为了更方便快捷地计算,需要先对数据实施一个µ-law压扩变换,然后取到256个量化值。µ-law压扩变换算法如下:


门控激活单元:

WaveNet使用的门控激活单元如下:


其中∗代表卷积操作,⊙代表点乘操作,σ(.)是sigmoid函数,k是层索引,f和g是各自的滤波器和门,W是可学习的卷积核。

残差连接和跳步连接:

WaveNet使用了残差和跳步连接,以加速收敛并允许更深的模型训练。该结构示意图如下:


图4. 残差块和整个架构的概述


条件WaveNet:

给定一个额外输入h,WaveNet可以由这个给定输入




基于输入变量进行条件建模,可以引导WaveNet产生要求特征的音频。例如,可以把说话人身份作为条件输入给WaveNet,然后WaveNet将选择该说话人的声音进行音频输出。

上下文堆栈:


上文中提出了多种方法来增加WaveNet的感受野大小:增加扩大系数的大小,使用更多的层数,更大的过滤器,更大的膨胀系数,或者他们的组合。补充的一个方法是:使用单独的更小的上下文堆栈来处理语音信号的长跨度信息,并在局部条件下形成处理较大的WaveNet,该WaveNet只处理音频信号的一小部分(在结尾处裁剪)。


可以使用具有不同长度和数量潜在单元的多个上下文堆栈。感受野越大的堆栈每层的单位就越少。上下文堆栈也可以有以较低频率运行的池层。这将计算需求保持在一个合理的水平上,并与在较长时间尺度上建模时间相关性所需的容量较少的直觉相一致。


当前 SOTA!平台收录WaveNet 共 7 个模型实现资源。

项目 SOTA!平台项目详情页
WaveNet 前往SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/wavenet-2


SampleRNN


SampleRNN将无记忆模块,即自回归多层感知器和有状态的递归神经网络结合在一个层次结构中,能够在三个不同性质的数据集上捕获时间序列变化的潜在来源,属于深度学习模型在语音合成的前端处理中的应用。由于SampleRNN有不同的模块在不同的clock-rates下运行(这与WaveNet相反),可以灵活地分配不同抽象层次建模的计算资源量。

SampleRNN是一个音频波形的密度模型。SampleRNN对波形样本序列X={x1, x2, . . , xT }(输入数据序列的随机变量)的概率(输入数据序列上的随机变量)作为每个样本的概率与所有先前样本的条件的乘积:


RNNs通常用于对顺序数据进行建模,可以表述为:


其中,H是已知的记忆单元之一,可以是门控递归单元(GRU)、长短时记忆单元(LSTM)或其深度变化。然而,原始音频信号的建模具有挑战性,因为它们包含非常不同尺度的结构:相邻的样本之间以及相隔数千个样本之间都存在相关性。

SampleRNN通过使用一个层次结构的模块来帮助解决这一挑战,每个模块都以不同的时间分辨率进行操作。最低的模块处理单个样本,每个较高的模块在越来越长的时间尺度和较低的时间分辨率上运行。每个模块都对它下面的模块进行调节,最低的模块输出样本级的预测结果。整个层次结构是通过反向传播进行端到端的联合训练。

图5. K=3层的时间步骤i的unrolled模型的快照。为简化起见,所有层级只使用一个RNN和上采样率r=4

SampleRNN中的高层模块不是对单个样本进行操作,而是对层次结构中第k级的F_S(k)("帧大小")样本的非重叠帧进行一次操作(帧用f(k)表示)。每个帧级模块都是一个深度RNN,它将其输入的历史总结成一个调节向量,供下一个模块向下运行。对截至时间点t-1的可变帧数的条件是由一个固定长度的潜在状态或存储器(h_t)^(k)表示的,其中,t与该层的clock-rate有关。RNN在时间点t进行内存更新,作为前一个内存(h_t-1)^(k)和一个输入(inp_t)^(k)的函数。对于最高层的k = K,这个输入是简单的输入框。对于中间层(1 < k < K),这个输入是上一层的调节向量和当前输入帧的线性组合。由于不同的模块在不同temporal resolutions需要将一个模块输出的每个向量c向上取样为一系列r^(k)向量(其中r^(k)是模块temporal resolution之间的比率),然后再向下送入下一个模块的输入。用一组r^(k)独立的线性投影来完成。


SampleRNN层次结构中的最低模块(k=1层)输出一个关于样本x_i+1的分布,条件是前面的FS^(1)样本以及来自下一个更高模块的向量(c_i)^(k=2),该向量编码了该帧之前的序列信息。由于F_S(1)通常是一个很小的值,而且附近样本的相关性很容易通过一个简单的无记忆模块来建模,所以用多层感知器(MLP)而不是RNN来实现,这稍微加快了训练的速度。假设e_i代表通过嵌入层后的x_i,条件分布可以通过以下方式实现,为了进一步明确,下面显示了两个连续的样本级框架:


最后,使用截断的反向传播方法,将每个序列分割成短的子序列,并将梯度只传播到每个子序列的开头,从而使递归模型得到有效的训练。


当前 SOTA!平台收SampleRNN2 模型实现资源。

项目 SOTA!平台项目详情页
SampleRNN 前往SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/samplernn



相关文章
|
8月前
|
算法 语音技术
基于MFCC特征提取和HMM模型的语音合成算法matlab仿真
基于MFCC特征提取和HMM模型的语音合成算法matlab仿真
|
3月前
|
自然语言处理 文字识别 Linux
ModelScope运行语音合成模型的官网代码示例报错如何解决
ModelScope模型报错是指在使用ModelScope平台进行模型训练或部署时遇到的错误和问题;本合集将收集ModelScope模型报错的常见情况和排查方法,帮助用户快速定位问题并采取有效措施。
50 0
|
3月前
|
自然语言处理 搜索推荐 PyTorch
ModelScope问题之NoteBook训练个性化语音合成模型报错如何解决
ModelScope训练是指在ModelScope平台上对机器学习模型进行训练的活动;本合集将介绍ModelScope训练流程、模型优化技巧和训练过程中的常见问题解决方法。
47 0
|
5月前
|
监控 语音技术 异构计算
使用开源的模型(像speech_sambert-hifigan_tts_zhida_zh-cn_16k)进行语音合成任务的推理时,推理速度太慢了,500字大约需要1分钟,为什么会这么慢
使用开源的模型(像speech_sambert-hifigan_tts_zhida_zh-cn_16k)进行语音合成任务的推理时,推理速度太慢了,500字大约需要1分钟,为什么会这么慢
281 2
|
12月前
|
机器学习/深度学习 人工智能 自然语言处理
Tacotron2、GST、Glow-TTS、Flow-TTS…你都掌握了吗?一文总结语音合成必备经典模型(四)
Tacotron2、GST、Glow-TTS、Flow-TTS…你都掌握了吗?一文总结语音合成必备经典模型
847 0
|
12月前
|
机器学习/深度学习 算法 语音技术
Tacotron2、GST、Glow-TTS、Flow-TTS…你都掌握了吗?一文总结语音合成必备经典模型(三)
Tacotron2、GST、Glow-TTS、Flow-TTS…你都掌握了吗?一文总结语音合成必备经典模型
639 0
|
12月前
|
机器学习/深度学习 自然语言处理 前端开发
Tacotron2、GST、Glow-TTS、Flow-TTS…你都掌握了吗?一文总结语音合成必备经典模型(二)
Tacotron2、GST、Glow-TTS、Flow-TTS…你都掌握了吗?一文总结语音合成必备经典模型
247 1
|
12月前
|
机器学习/深度学习 存储 人工智能
BLSTM-RNN、Deep Voice、Tacotron…你都掌握了吗?一文总结语音合成必备经典模型-3
BLSTM-RNN、Deep Voice、Tacotron…你都掌握了吗?一文总结语音合成必备经典模型
226 0
|
12月前
|
机器学习/深度学习 自然语言处理 数据挖掘
BLSTM-RNN、Deep Voice、Tacotron…你都掌握了吗?一文总结语音合成必备经典模型-2
BLSTM-RNN、Deep Voice、Tacotron…你都掌握了吗?一文总结语音合成必备经典模型
137 0
|
12月前
|
语音技术
三分钟视频|看懂多情感语音合成模型训练过程
三分钟视频|看懂多情感语音合成模型训练过程
106 0