一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于Transformer和WaveNet的蒙古语语音合成方法与流程

2021-08-03 14:28:00 来源:中国专利 TAG:蒙古语 语音合成 人工智能 特别 方法
一种基于Transformer和WaveNet的蒙古语语音合成方法与流程

本发明属于人工智能技术领域,涉及语音合成,特别涉及一种基于transformer和wavenet的蒙古语语音合成方法。



背景技术:

语音合成(speechsynthesis)技术是指计算机通过分析将任意文本转化为流畅语音的技术。国内外语音合成研究经历了基于共振峰合成、波形拼接,基于统计参数语音合成方法,以及基于深度神经网络的语音合成方法的发展历程。

现有的语音合成研究多集中于主流语言,而类似于蒙古语等冷僻语言由于语料稀缺等问题,其语音合成仍然处在初级阶段。



技术实现要素:

为了克服上述现有技术的缺点,本发明的目的在于提供一种基于transformer和wavenet的蒙古语语音合成方法,具有端到端的生成式文本转语音模型,可以直接从字符合成语音,大大降低对语言学知识的要求,同样适用于语料稀缺的其它小语种。

为了实现上述目的,本发明采用的技术方案是:

一种基于transformer和wavenet的蒙古语语音合成方法,包括如下步骤:

步骤1,基于encoder-decoder模型,对蒙古语进行g2p(grapheme-to-phoneme)转换,将经过拉丁校正的蒙古语文本转换为对应的音素序列;

步骤2,基于transformer的声学模型,根据音素序列生成声学特征;

步骤3,以wavenet模型为声码器,进行声学特征到语音波形的转换。

其中,步骤1中,先对输入的蒙古语文本进行特殊字符转换,将文本中出现的特殊字符根据上下文信息转写为对应的蒙古语书写形式,然后对经过特殊字转换的文本进行校正,校正之后的文本进行拉丁转换,将蒙古语文本转换为对应的拉丁形式,最后将拉丁形式的序列转换成国际音标序列,即得到音素序列(音素即音标)。

与现有技术相比,本发明的有益效果是:

使用encoder-decoder模型将蒙古语文本转化成音素,可以无缝地集成到端到端的tts系统,其次使用基于transformer的声学模型将音素直接生成梅尔频谱,wavenet声码器直接将梅尔频谱转化为语音波形,降低了对语料以及其它语言学知识的需求,适合于小语种的语音合成。

附图说明

图1是本发明流程示意图。

图2是本发明的encoder-decoder模型解码流程。

图3是本发明transformer模型示意图。

图4是本发明的wavenet模型示意图。

具体实施方式

下面结合附图和实施例详细说明本发明的实施方式。

如图1所示,本发明一种基于transformer和wavenet的蒙古语语音合成方法,主要包括三个部分:前端处理、预测梅尔频谱模型、梅尔频谱转换语音。

其具体步骤如下:

步骤1,基于encoder-decoder模型,对蒙古语进行g2p(grapheme-to-phoneme)转换,将经过拉丁校正的蒙古语文本转换为对应的音素序列。

蒙古文字是一种拼音文字,其书写形式采用以单词为单位的竖写方式,使用由上及下,从左到右的书写顺序。蒙古文包含35个字母,其中有8个元音、17个辅音和10个借词辅音,蒙古文字母在单词中变换种类很多,对于一个蒙古文单词,其中的字母由于所处上、中、下位置不同,会导致其写法不同。针对蒙古文中存在元音与辅音的书写形式变化多样问题,本发明在对蒙古文本进行处理时,都采用拉丁转写把蒙古文转换为对应的拉丁形式,本发明使用的蒙古文字母及其拉丁字母对照表如表1所示。

表1

针对于输入的蒙古语文本可能会包含许多非蒙古语书写形式的特殊字符,比如数字符号,英文字母,化学元素符号,操作符等,这些字符如果不经过处理,在后面的蒙古语转拉丁时,会出现漏词,错误转写等错误。为了防止这种情况发生,本发明先对输入的蒙古语文本进行特殊字符转换,将文本中出现的特殊字符根据上下文信息转换为对应的蒙古语书写形式,在表2中列出了部分特殊字符与对应的蒙古语形式。

然后对经过特殊字转换的文本进行校正,由于蒙古文的书写形式多样性的特点,输入的蒙古文可能会出现书写错误,通过校正,把书写错误的蒙古文修改为正确的书写形式。最后将校正之后的文本进行拉丁转换,将蒙古语文本转换为对应的拉丁形式,由拉丁形式的序列转换成国际音标序列,即得到音素序列(音素即音标)。

表2

步骤1所基于的encoder-decoder模型主要包含两个处理流程。

流程一,将词典中所有的蒙古语单词转换为它们对应的拉丁形式,用于构建词表。对于需要解码的蒙古语单词,经过拉丁转换后,通过表查询操作,如果该单词存在于表中,通过查表操作就可以得到完全正确的其音素序列。

流程二,针对于不在表中的蒙古语单词,如通过训练得到的encoder-decoder模型进行直接解码,得到其对应的音素序列,完成蒙古语字母到音素的转换。

基于深度神经网络的encoder-decoder模型结构近几年在一些序列到序列的任务中取得了很好的效果,特别是关于机器翻译方面。由于字母转音素任务实际上是一个简化的机器翻译任务,所以encoder-decoder模型完全适用于处理字母转音素问题。为了克服基于规则的蒙古语g2p转换方法和基于联合序列的蒙古语g2p转换方法的存在的缺陷,本发明首次采用了encoder-decoder模型结构进行蒙古语字母转音素任务的训练和解码,其模型解码流程如图2所示,主要包括:

第一步,将输入序列(蒙古语文本)映射到一个向量。

第二步,基于学习向量生成输出序列表示(音素序列)。

编码器-解码器模型在编码器处理完完整的输入序列后生成一个输出,这使得解码器能够从输入的任何部分学习,而不受固定上下文窗口的限制。例如首先将蒙古语单词:拉丁转写为:“cqhihv”,编码器的输入是“cqhihv”字形序列,解码器产生“qoehwsh”作为音素序列。模型在生成音素结束标记后停止进行预测。

在基于encoder-decoder模型的蒙古语字母转音素方法中,该模型结构的编码器和解码器由两个长短期记忆网络(longshort-termmemory,lstm)结构组成,编码器进行蒙古语字母序列的输入,比如输入的序列为x=(x1,...,xt),编码器根据输入序列的计算相应的隐层状态序列h=(h1,...,ht)和记忆状态序列计算m=(m1,...,mt),如下列公式:

it=sigmoid(w1xt w2ht-1)

ft=sigmoid(w5xt w6ht-1)

ot=sigmoid(w7xt w8ht-1)

ht=mt⊙ot

其中it为输入门,w1,w2,w3,w4,w5,w6,w7,w8是模型的参数,(x1,...,xt,...,xt)为输入序列,xt为t时刻输入的字符序列,t为序列总长度,ht-1为xt-1对应的隐层状态,为表示单元状态更新值,ft为遗忘门,ot为输出门,mt为隐含单元所传递的状态,操作符⊙代表元素相乘;

所有非线性操作均是按照元素计算的,上面的公式可以合并为下式:

ht=f(xt,ht-1)

解码器lstm结构作用是生成与输入相对应的输出序列(音素序列)即音素序列。解码过程中,解码器根据前一时刻音素yt-1及当前单元隐藏状态st和注意力向量ct来预测当前音素yt,其条件概率使用以下公式进行建模:

p(yt|y1,…,yt-1,x)=g(yt-1,st,ct)

tb为输出序列的长度,x为字符序列,g是一个非线性的,隐含多层的函数,用来得到yt的条件概率,st代表在时刻t时解码器的隐状态,st=f(st-1,yt-1,ct),f代表lstm单元,注意力向量ct结合st成为一个新的隐状态即下一刻的隐藏状态去预测yt,通过输入的蒙古语字母序列来计算注意力向量ct,公式如下:

其中,ta是输入序列的长度,向量v和矩阵ba是可以训练得到的模型参数,向量的长度为ta,它的第i个元素包含了第i个编码器lstm单元隐状态所占的权重,这些权重通过softmax生成计算注意力向量的中间值ba是训练得到的模型参数,hi是第i个元素的隐藏状态,ht是第t个元素的隐藏状态。

基于神经网络的g2p转化对拼写错误和集外词具有很强的鲁棒性;它具有很好的泛化能力。此外,它还可以无缝地集成到端到端的tts系统。

步骤2,基于transformer的声学模型,根据音素序列生成声学特征,相对传统的tts,生成语音中的韵律、表现力会更好。

目前的端到端语音合成首先由声学模型生成声学特征,比如梅尔频谱、线性谱等,本发明使用梅尔频谱,梅尔频率声谱图与线性频率声谱图(短时傅里叶变换的振幅)是相关的。从对人类听觉系统的响应测试中得到启发,梅尔频谱是对短时傅里叶变换的频率轴施加一个非线性变换,用较少的维度对频率范围进行压缩变换得到的,比波形样本更平滑,并且由于其每一帧都是对相位不变的,所以使用这样一个表征,更容易用均方误差(meansquarederror,mse)损失进行训练。对比传统声码器中使用的语言学和声学特征,梅尔声谱图作为音频信号的更低层次的声学表征,因此在梅尔声谱图上训练语音合成更直接。该模型在预先归一化的音素序列上训练,单词和音节的边界,标点符号也包括作为特殊标记。得到训练音素序列的过程包括句子分离、文本规范化、分词以及最终获得发音。通过文本到音素的转换,发音错误问题大大减少。该模型可以并行训练,框架之间没有递归连接,可提高蒙古语语音合成的性能,加快训练速度,使音频过程更加流畅。

transformer如图3所示,是一种序列到序列的网络,完全基于注意力机制,不需要重复和卷积,其在nmt中的性能优于许多基于rnn的模型。它由两个部分组成:一个编码器和一个解码器,编码器和解码器均是由几个相同的块组成的堆栈。每个编码器块包含两个子网络:多头注意和一个前馈网络,而每个解码器块包含一个额外的屏蔽多头注意力。编码器和解码器都有残差连接和层规范化。

本发明transformertts模型在预先归一化的音素序列上训练,训练过程包括句子分离、文本规范化、分词以及最终获得发音,具体的训练过程如下:

transformer将预先归一化的音素序列作为输入,直接从音素序列生成声音波形,输入音素序列经词嵌入后首先送入3层cnn以获取序列中的上下文信息,接着进入双向组成的编码器.梅尔频谱(在训练阶段,每次送入固定长度的真实频谱;在推断阶段,每次送入上一个时间步的输出)首先进入预处理网络,预处理网络的输出与上一个时间步的上下文向量拼接送入2层lstm,lstm的输出被用作计算本时间步的上下文向量,并且经线性映射后用来预测停止符和梅尔频谱.为了提取更为高维的特征,用于预测梅尔频谱的lstm输出被带残差的5层cnn组成的后处理网络提纯优化,最后输出梅尔频谱。

与基于rnn的模型相比,在neural文本转语音(texttospeech,tts)中使用transformer有两个优点。首先,它通过消除循环连接来实现并行训练,因为解码器的输入序列的帧可以并行提供。第二,自我注意提供了将整个序列的全局上下文插入到每个输入帧中的机会,从而直接建立远程依赖关系。transformer缩短了前向和后向路径的长度,transformer将信号在输入输入和输出序列中的任意位置组合之间的路径长度缩短到1。这对neuraltts模型有很大的帮助,例如合成波的韵律,它不仅依赖于相邻词的数量,而且还依赖于句子的层次语义学。

在基于transformer的文本转语音模型中,编码器的输入阶段,先将文本逐字符转化为编号,方便字符嵌入,然后进入编码器预置网络,这层网络由一个嵌入层和三层卷积层构成,转化为512维的向量后,进入transformerencoder。梅尔频谱被一个由两个完全连接的relu激活层组成的神经网络(decoderpre-net)处理,它在tts系统中扮演着重要的角色。音素具有可训练的嵌入,因此它们的子空间是自适应的,而梅尔频谱是固定的。

transformer的decoder部分,分为输入和输出。输入通过一个prenet,将80维的梅尔声谱图转化为512维向量,这里的prenet是一个三层的全连接网络。decoderpre-net负责将梅尔频谱投影到与音素嵌入相同的子空间中,检测一个<phoneme,梅尔frame>对的相似性,从而实现注意机制的工作。

在现有的端到端语音生成模型中,编码器是双向rnn。transformertts将其替换为transformer编码器,与原来的双向rnn相比,多头注意将一个注意力分成多个子空间,可以从多个不同的角度对帧之间的关系进行建模,并直接在任意两个帧之间建立长期依赖关系,从而每个帧都考虑整个序列的全局上下文。在现有的端到端语音生成模型中,decoder是一个具有位置敏感注意的双层rnn,将其替换为transformer解码器。使用transformer解码器有两个不同之处,一是增加了自我注意,二是使用了多头注意,而不是位置敏感注意。多头注意可以在多视角下整合编码器的隐藏状态,生成更好的上下文向量。transformertts使用两种不同的线性推算分别预测梅尔频谱和stoptoken,并使用5层cnn生成残差来细化梅尔频谱的重建。对于stoplinear,每个序列的末尾只有一个正样本,这意味着“stop”,而其他帧则有上百个负样本。这种不平衡可能导致无法阻止的推论。在计算二进制交叉熵损失时,transformertts在尾部正stoptoken上加上了一个正权重,有效地解决了这个问题。

步骤3,以wavenet模型为声码器,进行声学特征到语音波形的转换。

将声学特征作为条件输入模型,即可构造基于wavenet的神经网络声码器。在输入外部条件情况下,wavenet模型可以表示如下公式:

其中h为条件序列,其时域分辨率通常低于语音波形的时域采样率。为了使两者的时域分辨率匹配,需要构造一个上采样变换y=f(h),然后把变换后的条件信息序列加入到wavenet各节点的计算过程中,以生成与输入条件相对应的语音波形序列。加入条件信息后,wavenet中每个神经网络节点的计算过程可以表示为以下公式:

z=tanh(wf,k*x vf,k*y)⊙σ(wg,k*x vg,k*y)

其中*,σ(g)分别表示卷积运算、sigmoid函数,wf,k,wg,k分别代表第k层处理历史波形信息的滤波卷积权值矩阵与门控卷积权值矩阵,vf,k,vg,k对应第k层处理条件输入的卷积权值矩阵。

基于wavenet的声码器模型结构如图4所示。其中,使用straight等传统信号分析方法提取的声学特征作为wavenet条件信息h。此外,基于wavenet的声码器构建了一个条件网络以保证加入的条件信息的时域分辨率与语音波形序列相匹配。在条件网络中,输入的声学特征先经过1x1卷积,然后经过relu激活,最后通过最近邻上采样加入到激活函数中。在模型训练阶段,利用从训练语音数据库自然录音中提取的声学特征与原始波形序列作为wavenet的条件与输出,进行模型参数的训练。在生成阶段,根据给定输入的声学特征与生成的历史波形信息,构建每个采样点的条件概率分布,并通过采样与逐点自回归的方式实现波形的生成。

为了测试模型音频建模的性能,本发明在一个实施例中,数据集采用包含43663句标准蒙古语演讲语料及对应的拉丁转换后的文本,声学特征参数的提取:采样率为22050hz,使用汉明窗处理,帧长为50ms,帧移为12.5ms,梅尔滤波器个数为80个,预加重系数为0.97。

对于预测梅尔频谱模型参数设置,嵌入层维度大小为256维,批量大小选择为32,训练使用adam优化器来进行模型优化,初始学习率为0.005。wavenet声码器参数配置如表3所示:

表3

为了直观评估一种基于transformer和wavenet的蒙古语语音合成方法的合成效果,本实施例随机挑选长度不等的20句蒙古语文本完成语音合成实验,然后对合成的蒙古语语音进行主观测试。在主观测试中,测试者选取的都是在校母语为蒙古语的学生,测试者听完合成的蒙古语语音样本后,会给出平均意见得分(mos)。mos测试采用5分制打分(1分:较差,2分:差,3:一般,4,好,5,很好)。

使用wavenet声码器,根据不同输入形式的预测梅尔频谱模型预测文本对应的梅尔频谱来测试不同迭代次数的wavenet声码器性能。然后分别使用迭代次数为300k,400k,500k,600k,700k,800k的wavenet声码器进行测试,合成语音的mos评分如表4所示:

表4

根据上表可以发现,当wavenet声码器迭代300k次时,模型性能偏低,音素序列作为输入的预测梅尔频谱模型与字符序列作为输入的预测梅尔频谱模型得到的梅尔频谱通过wavenet声码器合成语音效果质量较差。随着wavenet声码器迭代次数的增多,其性能越来越好,当wavenet声码器迭代700k次时,模型损失很难降低,声码器性能趋于稳定,合成的蒙古语语音mos评分达到了4.26。

采用wavenet声码器完成梅尔频谱到语音波形的转换,由于wavenet是由原始的语音及原始语音对应的梅尔频谱作为局部条件训练得到,该声码器可以复原原始的相位细节信息,所以合成的蒙古语语音更接近于原始音频。

再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文章

  • 日榜
  • 周榜
  • 月榜