一种基于音素的中文语音合成系统的制作方法

文档序号:16092279发布日期:2018-11-27 23:09阅读:1175来源:国知局

本发明涉及信息处理领域,特别是涉及一种基于音素的中文语音合成方法。



背景技术:

语音合成(Text-To-Speech,简称TTS)是指将用户输入的文字,转换成流畅自然的语音输出,也即让机器像人一样开口说话,它打破了传统文字式人机交互方式,让人机沟通更自然。当前,语音合成涉及多个学科技术,如:声学、语言学、数字信号处理、计算机科学等,它是中文信息处理领域的一项前沿技术。

国内外对语音合成技术的研究已有几十年的历史,随着深度学习与英文语音合成技术的成熟,已经可以做到模拟人发声的特点合成高清晰度、高自然度的连续语音。在语音合成技术的发展过程中,早期的研究主要是基于拼接与参数的语音合成机制;后来随着深度学习的发展,百度推出Deep Voice3全卷积注意机制TTS系统,利用更简单的特征、更少的组成合成更高质量的语音;另外,谷歌推出一个直接从文本到语音的神经网络结构Tacotron2,Tacotron2结合了WaveNet声学模型和Tacotron的优势,不需要任何语法知识即可直接输出文本对应的语音。

基于拼接的语音合成系统,利用语言学标注系统(包含音素级别、音节级别、单词级别等语音信息)对输入文本进行预处理,得到了一串语言学标注。之后会在语音库里进行匹配,匹配在语言学特征与声学特征上类似的音素波形。如果库里存在,则会将语音单元进行拼接;如果找不到,系统会选取退而求其次的音素,按照这种方式,合成语音。该方法的缺点,如果库里的音素切分与语言学标注出错,那显然它最后会匹配错;优点是,真人发音。

基于参数的语音合成系统,它其实是一个文本抽象成语音学特征,再利用统计学模型学习出语音学特征和声学特征的对应关系,再从预测出来的声学特征还原成波形的过程。预测声学特征目前主流是用神经网络做的,然后用声码器(vocoder)生成波形,实现特征到波形这最后一步。这种思路的缺点是,声码器合成的声音,会有损失,听起来不自然;优点是,对于语音库里的标注错误不敏感。

2017年百度发布Deep Voice3,提出了一个全卷积的特征到频谱的架构,它能够对一个序列所有元素进行并行计算,并且使用递归单元使训练速度相比于类似的架构提高很多。在声码器部分,比较了多个信号合成方法合成单个说话人语音的质量,包括WORLD、Griffin-Lim与WaveNet,最终根据MOS(语音质量的评测标准)评分,选取了WaveNet作为声学输出。百度语音合成的不足在于:1.声音机械;2。声音过渡不自然;3.支持发音人数量较少。

Google推出Tacotron用神经网络直接学习文本端到声学特征这一端的对应关系,不需要语言学标注系统标注文本,由编码、解码输出特征序列,经过Griffin-Lim相位重构算法还原波形。17年年底,Google推出Tacotron2,Tacotron2系统包括一个循环序列到序列特征预测网络(把字符嵌入映射到梅尔标度谱图)以及一个改良的WaveNet模型(作为声码器以从这些谱图中合成时域波形)。经过评测,该模型取得了4.53的MOS(语音质量的评测标准)值。Google的语音合成系统只是针对英文的合成,其它国家语种合成出语音语调都是建立在英文的语音语调之上。



技术实现要素:

本发明所要解决的技术问题是克服现有技术的不足,提供一种基于音素的中文语音合成方法。

为解决上述技术问题,本发明提供一种基于音素的中文语音合成方法,其特征在于,包括如下步骤:

步骤1,对文本与音频进行预处理;

步骤2,构造音素集,将常用汉字、词转化为对应的音素组合,做成映射,使每个字词都有可以参照的音素组合;

步骤3,利用one-hot将音素序列转化为字ID,再将字ID训练生成转词向量,经过encoder,将文本序列特征转换为内部学习表征,再经过decoder,生成频谱序列特征;

步骤4,结合频谱序列与音频的语音信息,由声码器合成语音;

步骤5,合成的音频分别去除尾部静音,按一定顺序将音频进行拼接。

所述步骤1中,把文本先分词,再转化成音素组合形式,将音频文件去除首尾部分的静音,输出为.npy文件,然后再在训练时将.npy文件采用队列的形式,一次读入一个batch的数据传给GPU。

所述步骤2中,构造音素集,音素集是由23个声母、39个韵母以及声调构成,是所有汉字音素表示的集合,在语料库中(语料库分为文本数据库与语音数据库),将文本数据库参照音素集将文本转化为音素组合形式,具体是将中文汉字转化为由声、韵母及声调的组合形式。

所述步骤3中,将转化了的音素序列生成对应的字ID,通过character embeddings训练生成词向量,并将词向量带入到Seq2Seq结构(基于encoder-decoder的Seq2Seq的结构)生成频谱序列。

所述步骤4中,通过基于encoder-decoder的Seq2Seq模型输出序列以及提取的音频信号来预测功率谱幅度值,再结合Griffin_Lim相位重构算法获取最优相位,生成waveform,即语音。

所述步骤5中,开多线程进行并行运算,将合成后的音频利用ffmpeg音频处理工具,去除尾部静音,再将去除静音的音频拼接起来;模型合成的音频格式为wav格式,利用ffmpeg工具去除wav格式音频的静音,再将处理后的音频按顺序合并起来,最后统一将wav格式转化为mp3格式。

本发明所达到的有益效果:本方法合成的语音更加贴近于真人发音,以及在区分多音字与确定停顿位置上较传统的都有很大提升,最主要的是合成的准确率可以达到90%以上。

附图说明

图1为本发明的示例性实施例的方法流程简图。

具体实施方式

下面结合附图和示例性实施例对本发明作进一步的说明:

如图1所示,具体步骤如下:

步骤1,对文本与音频进行预处理,把文本先分词,再转化成音素组合形式,将音频文件去除首尾部分的静音,输出为.npy文件,然后再在训练时将.npy文件采用队列的形式,一次读入一个batch的数据传给GPU,这样训练速度相比对音频进行训练提升20%左右。

步骤2,构造音素集,将常用汉字、词转化为对应的音素组合,做成映射,使每个字词都有可以参照的音素组合。所述语料库分为文本数据库与语音数据库,将文本数据库参照音素集将文本转化为音素组合形式,具体是将中文汉字转化为由声、韵母及声调的组合形式。我们的中文语料总共15万条,在语音与文本数据库中,囊括大量的多音字,而这些多音字以及断词会在训练中起到很重要作用。

步骤3,利用one-hot将音素序列转化为字ID,再将字ID训练生成转词向量,经过encoder,将文本序列特征转换为内部学习表征,再经过decoder,生成频谱序列特征。将转化了的音素序列生成对应的字ID,由于字与字之间是有关联的,通过character embeddings训练生成词向量,并将词向量带入到Seq2Seq结构(基于encoder-decoder的Seq2Seq的结构,一般情况我们输入的文本长度不是固定的,对于绝大多数模型而言,输入的特征通常是一个固定大小的矩阵,这就限制了我们输入文本长度必须一致。但在语音合成模型中很难保证,而Seq2Seq结构很好地解决了这个问题,它的输入序列和输出序列的长度是不固定的。)生成频谱序列特征;

步骤4,结合频谱序列与音频的语音信息,由声码器合成语音;经过decoder输出后并没有直接输出音频文件,而是在此基础上添加后处理网络,在后处理网络中预测功率谱幅度值,通过基于encoder-decoder的Seq2Seq模型输出序列以及提取的音频信号来预测功率谱幅度值,再结合Griffin_Lim相位重构算法合成waveform,即语音;

步骤5,为了提升模型性能,开多线程进行并行运算,将合成后的音频利用ffmpeg音频处理工具,去除尾部静音,代码如下:

ffmpeg-y-i xx.wav-af silenceremove=1:0:-100dB:-1:0:-100dB yy.wav;

将去除静音的音频拼接起来,代码如下:

模型合成的音频格式为wav格式,利用ffmpeg工具去除wav格式音频的静音,再将处理后的音频按顺序合并起来,最后统一将wav格式转化为mp3格式(mp3格式的音频所占用存储相对于wav格式的音频更小一些)。

本发明主要用于提供一种基于音素的中文语音合成方法,合成的语音更加贴近于真人发音,以及在区分多音字与确定停顿位置上较传统的都有很大提升,最主要的是合成的准确率可以达到95%以上。

以上实施例不以任何方式限定本发明,凡是对以上实施例以等效变换方式做出的其它改进与应用,都属于本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1