基于深度前馈序列记忆网络,如何将语音合成速度提高四倍?

研究背景前端

语音合成系统主要分为两类,拼接合成系统和参数合成系统。其中参数合成系统在引入了神经网络做为模型以后,合成质量和天然度都得到了长足的进步。另外一方面,物联网设备(例如智能音箱和智能电视)的大量普及也对在设备上部署的参数合成系统提出了计算资源的限制和实时率的要求。本工做引入的深度前馈序列记忆网络能够在保持合成质量的同时,有效下降计算量,提升合成速度。算法

0de9654d961ffc2d7218af6de48ab8f1f3f34bcf

咱们使用基于双向长短时记忆单元(BLSTM)的统计参数语音合成系统做为基线系统。与其余现代统计参数语音合成系统类似,咱们提出的基于深度前馈序列记忆网络(DFSMN)的统计参数语音合成系统也是由3个主要部分组成,声音合成器(vocoder),前端模块和后端模块,如上图所示。咱们使用开源工具WORLD做为咱们的声音合成器,用来在模型训练时从原始语音波形中提取频谱信息、基频的对数、频带周期特征(BAP)和清浊音标记,也用来在语音合成时完成从声学参数到实际声音的转换。前端模块用来对输入的文本进行正则化和词法分析,咱们把这些语言学特征编码后做为神经网络训练的输入。后端模块用来创建从输入的语言学特征到声学参数的映射,在咱们的系统中,咱们使用DFSMN做为后端模块。数据库

深度前馈序列记忆网络后端

紧凑前馈序列记忆网络(cFSMN)做为标准的前馈序列记忆网络(FSMN)的改进版本,在网络结构中引入了低秩矩阵分解,这种改进简化了FSMN,减小了模型的参数量,并加速了模型的训练和预测过程。服务器

081b9426a205c8913e470e9db682c48dd017aff6

上图给出了cFSMN的结构的图示。对于神经网络的每个cFSMN层,计算过程可表示成如下步骤①通过一个线性映射,把上一层的输出映射到一个低维向量②记忆模块执行计算,计算当前帧以前和以后的若干帧和当前帧的低维向量的逐维加权和③把该加权和再通过一个仿射变换和一个非线性函数,获得当前层的输出。三个步骤可依次表示成以下公式。网络

a14f3924f6d91edb03da30154350bbcd58a7d6ee

与循环神经网络(RNNs,包括BLSTM)相似,经过调整记忆模块的阶数,cFSMN有能力捕捉序列的长程信息。另外一方面,cFSMN能够直接经过反向传播算法(BP)进行训练,与必须使用沿时间反向传播算法(BPTT)进行训练的RNNs相比,训练cFSMN速度更快,且较不容易受到梯度消失的影响。ide

对cFSMN进一步改进,咱们获得了深度前馈序列记忆网络(DFSMN)。DFSMN利用了在各种深度神经网络中被普遍使用的跳跃链接(skip-connections)技术,使得执行反向传播算法的时候,梯度能够绕过非线性变换,即便堆叠了更多DFSMN层,网络也能快速且正确地收敛。对于DFSMN模型,增长深度的好处有两个方面。一方面,更深的网络通常来讲具备更强的表征能力,另外一方面,增长深度能够间接地增大DFSMN模型预测当前帧的输出时能够利用的上下文长度,这在直观上很是有利于捕捉序列的长程信息。具体来讲,咱们把跳跃链接添加到了相邻两层的记忆模块之间,以下面公式所示。因为DFSMN各层的记忆模块的维数相同,跳跃链接可由恒等变换实现。函数

ae7dcafd14b9dc5631501fab78b56b2566b34ce7

咱们能够认为DFSMN是一种很是灵活的模型。当输入序列很短,或者对预测延时要求较高的时候,可使用较小的记忆模块阶数,在这种状况下只有当前帧附近帧的信息被用来预测当前帧的输出。而若是输入序列很长,或者在预测延时不是那么重要的场景中,可使用较大的记忆模块阶数,那么序列的长程信息就能被有效利用和建模,从而有利于提升模型的性能。工具

除了阶数以外,咱们为DFSMN的记忆模块增长了另外一个超参数,步长(stride),用来表示记忆模块提取过去或将来帧的信息时,跳过多少相邻的帧。这是有依据的,由于与语音识别任务相比,语音合成任务相邻帧之间的重合部分甚至更多。性能

9259b29600f08d5d7e6eb7061795d64d13f78e2d

上文已经提到,除了直接增长各层的记忆模块的阶数以外,增长模型的深度也能间接增长预测当前帧的输出时模型能够利用的上下文的长度,上图给出了一个例子。

实验

在实验阶段,咱们使用的是一个由男性朗读的中文小说数据集。咱们把数据集划分红两部分,其中训练集包括38600句朗读(大约为83小时),验证集包括1400句朗读(大约为3小时)。全部的语音数据采样率都为16k赫兹,每帧帧长为25毫秒,帧移为5毫秒。咱们使用WORLD声音合成器逐帧提取声学参数,包括60维梅尔倒谱系数,3维基频的对数,11维BAP特征以及1维清浊音标记。咱们使用上述四组特征做为神经网络训练的四个目标,进行多目标训练。前端模块提取出的语言学特征,共计754维,做为神经网络训练的输入。

咱们对比的基线系统是基于一个强大的BLSTM模型,该模型由底层的1个全链接层和上层的3个BLSTM层组成,其中全链接层包含2048个单元,BLSTM层包含2048个记忆单元。该模型经过沿时间反向传播算法(BPTT)训练,而咱们的DFSMN模型经过标准的反向传播算法(BP)训练。包括基线系统在内,咱们的模型均经过逐块模型更新过滤算法(BMUF)在2块GPU上训练。咱们使用多目标帧级别均方偏差(MSE)做为训练目标。

71c9eda11aabddc4e7cd6fde4b4f849074fd6882

全部的DFSMN模型均由底层的若干DFSMN层和上的2个全链接层组成,每一个DFSMN层包含2048个结点和512个投影结点,而每一个全链接层包含2048个结点。在上图中,第三列表示该模型由几层DFSMN层和几层全链接层组成,第四列表示该模型DFSMN层的记忆模块的阶数和步长。因为这是FSMN这一类模型首次应用在语音合成任务中,所以咱们的实验从一个深度浅且阶数小的模型,即模型A开始(注意只有模型A的步长为1,由于咱们发现步长为2始终稍好于步长为1的相应模型)。从系统A到系统D,咱们在固定DFSMN层数为3的同时逐渐增长阶数。从系统D到系统F,咱们在固定阶数和步长为10,10,2,2的同时逐渐增长层数。从系统F到系统I,咱们固定DFSMN层数为10并再次逐渐增长阶数。在上述一系列实验中,随着DFSMN模型深度和阶数的增长,客观指标逐渐下降(越低越好),这一趋势很是明显,且系统H的客观指标超过了BLSTM基线。

984cfccb0c84873eaa3c947daeef538321e7213a

另外一方面,咱们也作了平均主观得分(MOS)测试(越高越好),测试结果如上图所示。主观测试是经过付费众包平台,由40个母语为中文的测试人员完成的。在主观测试中,每一个系统生成了20句集外合成语音,每句合成语音由10个不一样的测试人员独立评价。在平均主观得分的测试结果代表,从系统A到系统E,主观听感天然度逐渐提升,且系统E达到了与BLSTM基线系统一致的水平。可是,尽管后续系统客观指标持续提升,主观指标只是在系统E得分的上下波动,没有进一步提升。

结论

根据上述主客观测试,咱们获得的结论是,历史和将来信息各捕捉120帧(600毫秒)是语音合成声学模型建模所须要的上下文长度的上限,更多的上下文信息对合成结果没有直接帮助。与BLSTM基线系统相比,咱们提出的DFSMN系统能够在得到与基线系统一致的主观听感的同时,模型大小只有基线系统的1/4,预测速度则是基线系统的4倍,这使得该系统很是适合于对内存占用和计算效率要求很高的端上产品环境,例如在各种物联网设备上部署。

双十一广告:阿里云双十一1折拼团活动:已满6人,都是最低折扣了
【满6人】1核2G云服务器99.5元一年298.5元三年 2核4G云服务器545元一年 1227元三年
【满6人】1核1G MySQL数据库 119.5元一年
【满6人】3000条国内短信包 60元每6月
参团地址:http://click.aliyun.com/m/1000020293/

做者:研读论文的
原文连接 本文为云栖社区原创内容,未经容许不得转载。

相关文章
相关标签/搜索