一种结合自然样本挑选与声学参数建模的语音合成方法
万方数据知识服务平台
应用市场
我的应用
会员HOT
万方专利
×

点击收藏,不怕下次找不到~

@万方数据
会员HOT

专利专题

一种结合自然样本挑选与声学参数建模的语音合成方法

引用
本发明公布了一种结合自然样本挑选与声学参数建模的语音合成方法,本发明的特征是在Trainable TTS中引入了自然样本单元挑选的概念,并用决策树进行单元的预选来弥补单纯的数据驱动方法在高层韵律描述不足的缺点,最后通过参数生成算法生成出比较接近自然的参数然后进行语音合成,实现了合成语音在音质、自然度以及平稳性上的一个折中平衡。

发明专利

CN200610039675.2

2006-04-07

CN1835075

2006-09-20

G10L13/08(2006.01)I

安徽中科大讯飞信息科技有限公司

王玉平;凌震华;王仁华

230088安徽省合肥市黄山路616号

合肥华信专利商标事务所

余成俊

安徽;34

1.一种结合自然样本挑选与声学参数建模的语音合成方法,其特征是具体的实现方式如下:(1)、参数建模:运用隐马尔科夫模型对语音信号三个方面的参数进行建模,这三个方面的参数分别是:基频、时长和线谱频率系数LSF;所有模型都在一个语音库上用隐马尔科夫模型进行模型的训练;语音库的规模一般在1000句话左右;(2)、单元预选:是指从所有的自然样本中挑选出那些比较符合条件的自然样本的过程,目的是在基本保持语音合成系统合成效果的情况下减少合成系统所需存储的单元样本数目以及降低系统的运算复杂度;单元预选的过程描述如下:首先运用隐马尔科夫模型模型,对训练语音数据库进行状态切分工作,并把切分好的每个状态都对应到决策树上的一个节点上,把这个状态模型的相关数据作为一个自然样本单元保存到相应的叶子节点下,同时,计算这个自然样本单元与隐马尔科夫模型之间的线谱频率差值,定义为频谱代价,定义式如下:<math-cwu><![CDATA[<math> <mrow> <mi>lst </mi> <mi>cos</mi> <mi>t</mi> <mo>=</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>&mu;</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> <msubsup> <mi>&Sigma;</mi> <mi>i</mi> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msubsup> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>&mu;</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> </mrow></math>]]></math-cwu>xi,μi,∑i分别表示自然线谱频率系数LSF、模型均值和模型方差,N为LSF参数维数;考虑在单元挑选时基频变化特性,在进行单元预选的同时,需要对基频进行用k-means方法来进行聚类;通过预选仅保留一定数目(如30个)的样本单元,并能涵盖了训练数据中的所有的基频变化情况,预选的时候就是结合频谱代价和基频变化来进行的,选择两者只和最小的一些样本作为预选所得的自然样本单元;(3)、单元挑选:单元挑选阶段就是进行在预选所得的自然样本单元中进行Viterbi搜索得到代价最小的自然单元序列;这里需要计算的代价是:基频代价:<math-cwu><![CDATA[<math> <mrow> <mi>f</mi> <mn>0</mn> <mi>cos</mi> <mi>t</mi> <mo>=</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mn>3</mn> </munderover> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mrow> <mi>i</mi> <mo>,</mo> <msub> <mi>f</mi> <mn>0</mn> </msub> </mrow> </msub> <mo>-</mo> <msub> <mi>&mu;</mi> <mrow> <mi>i</mi> <mo>,</mo> <msub> <mi>f</mi> <mn>0</mn> </msub> </mrow> </msub> <mo>)</mo> </mrow> <msubsup> <mi>&Sigma;</mi> <mi>i</mi> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msubsup> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mrow> <mi>i</mi> <mo>,</mo> <msub> <mi>f</mi> <mn>0</mn> </msub> </mrow> </msub> <mo>-</mo> <msub> <mi>&mu;</mi> <mrow> <mi>i</mi> <mo>,</mo> <msub> <mi>f</mi> <mn>0</mn> </msub> </mrow> </msub> <mo>)</mo> </mrow> </mrow></math>]]></math-cwu>频谱代价:<math-cwu><![CDATA[<math> <mrow> <mi>lst </mi> <mi>cos</mi> <mi>t</mi> <mo>=</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>&mu;</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> <msubsup> <mi>&Sigma;</mi> <mi>i</mi> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msubsup> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>&mu;</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> </mrow></math>]]></math-cwu>目标代价:trgcost=lsfcost+f0cost以上xi,f0,μi,f0,∑i分别表示预选所得到的自然样本的基频参数、基频模型的均值、基频模型的方差,其中x1,f0,μ1,f0表示绝对基频值,也可称为静态参数,x2,f0,μ2,f0,x3,f0,μ3,f0表示基频的一阶和二阶差分即动态参数,计算式如下:<math-cwu><![CDATA[<math> <mrow> <msub> <mi>&Delta;c</mi> <mi>t</mi> </msub> <mo>=</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>&tau;</mi> <mo>=</mo> <mo>-</mo> <msubsup> <mi>L</mi> <mo>-</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> </msubsup> </mrow> <msubsup> <mi>L</mi> <mo>+</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> </msubsup> </munderover> <msup> <mi>&omega;</mi> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> </msup> <mrow> <mo>(</mo> <mi>&tau;</mi> <mo>)</mo> </mrow> <msub> <mi>c</mi> <mrow> <mi>t</mi> <mo>+</mo> <mi>&tau;</mi> </mrow> </msub> <mo>,</mo> </mrow></math>]]></math-cwu><math-cwu><![CDATA[<math> <mrow> <msup> <mi>&Delta;</mi> <mn>2</mn> </msup> <msub> <mi>c</mi> <mi>t</mi> </msub> <mo>=</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>&tau;</mi> <mo>=</mo> <mo>-</mo> <msubsup> <mi>L</mi> <mo>-</mo> <mrow> <mo>(</mo> <mn>2</mn> <mo>)</mo> </mrow> </msubsup> </mrow> <msubsup> <mi>L</mi> <mo>+</mo> <mrow> <mo>(</mo> <mn>2</mn> <mo>)</mo> </mrow> </msubsup> </munderover> <msup> <mi>&omega;</mi> <mrow> <mo>(</mo> <mn>2</mn> <mo>)</mo> </mrow> </msup> <mrow> <mo>(</mo> <mi>&tau;</mi> <mo>)</mo> </mrow> <msub> <mi>c</mi> <mrow> <mi>t</mi> <mo>+</mo> <mi>&tau;</mi> </mrow> </msub> </mrow></math>]]></math-cwu>连接代价:由于Viterbi挑选所得的自然样本序列是一系列从自然语句中截取的自然样本的组合,它与自然语句的自然样本序列是不同的,它前后帧的静态参数可能发生了变化,所以在自然语句中计算的动态参数就会发生变化,应该更新动态参数来计算挑选的连接代价,同样按上式进行动态参数的更新;所以连接代价的计算如下:<math-cwu><![CDATA[<math> <mrow> <mi>link </mi> <mi>cos</mi> <mi>t</mi> <mo>=</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mi>pi</mi> </msub> <mo>-</mo> <msub> <mi>&mu;</mi> <mi>pi</mi> </msub> <mo>)</mo> </mrow> <msubsup> <mi>&Sigma;</mi> <mi>pi</mi> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msubsup> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mi>pi</mi> </msub> <mo>-</mo> <msub> <mi>&mu;</mi> <mi>pi</mi> </msub> <mo>)</mo> </mrow> <mo>+</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mi>ci</mi> </msub> <mo>-</mo> <msub> <mi>&mu;</mi> <mi>ci</mi> </msub> <mo>)</mo> </mrow> <msubsup> <mi>&Sigma;</mi> <mi>ci</mi> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msubsup> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mi>ci</mi> </msub> <mo>-</mo> <msub> <mi>&mu;</mi> <mi>ci</mi> </msub> <mo>)</mo> </mrow> </mrow></math>]]></math-cwu>总体代价:cost=trgcost+linkcost这里xpi,μpi,∑pi表示前一帧的自然样本参数和前一个模型的参数,xci,μci,∑ci表示当前帧的自然样本参数和当前模型参数;最后由Viterbi算法得到一组总体代价最小的自然样本序列;(4)、改进参数生成:Viterbi挑选出自然单元序列之后,可以用改进的参数生成算法来对参数进行生成,这种方法就是把自然的参数也当作一个模型来约束最后的参数生成;原始的参数生成算法是基于最大似然的准则下来进行参数生成的:L=logP(O|Q,λ)其中O表示目标矢量参数,Q状态序列,λ表示模型参数;求解上式的最大值就可以得到生成的参数;而经过了自然单元的挑选之后,每帧又有了对应的自然的频谱参数,所以参数生成的时候把自然的频谱参数当作一个简单的约束模型对似然值进行约束,所以似然值计算为:L=log{P(O|Q,λ)*P(C|Ct)α}其中C,Ct分别表示目标矢量参数中的静态参数和自然样本的静态参数;这里简单的把自然的和预测的静态参数之间的欧氏距离作为模型的约束进行计算,所以似然值可以表示为:<math-cwu><![CDATA[<math> <mrow> <mi>L</mi> <mo>=</mo> <mi>log</mi> <mo>{</mo> <mi>P</mi> <mrow> <mo>(</mo> <mi>O</mi> <mo>|</mo> <mi>Q</mi> <mo>,</mo> <mi>&lambda;</mi> <mo>)</mo> </mrow> <mo>*</mo> <mi>P</mi> <msup> <mrow> <mo>(</mo> <mi>C</mi> <mo>|</mo> <msub> <mi>C</mi> <mi>t</mi> </msub> <mo>)</mo> </mrow> <mi>&alpha;</mi> </msup> <mo>}</mo> </mrow></math>]]></math-cwu><math-cwu><![CDATA[<math> <mrow> <mo>=</mo> <mi>log</mi> <mo>{</mo> <mi>P</mi> <mrow> <mo>(</mo> <mi>O</mi> <mo>|</mo> <mi>Q</mi> <mo>,</mo> <mi>&lambda;</mi> <mo>)</mo> </mrow> <mo>[</mo> <msup> <mi>e</mi> <mrow> <mo>-</mo> <mfrac> <mn>1</mn> <mn>2</mn> </mfrac> <mi>D</mi> <mrow> <mo>(</mo> <mi>C</mi> <mo>,</mo> <msub> <mi>C</mi> <mi>t</mi> </msub> <mo>)</mo> </mrow> </mrow> </msup> <msup> <mo>]</mo> <mi>&alpha;</mi> </msup> <mo>}</mo> </mrow></math>]]></math-cwu><math-cwu><![CDATA[<math> <mrow> <mo>=</mo> <mo>-</mo> <mfrac> <mn>1</mn> <mn>2</mn> </mfrac> <msup> <mi>O</mi> <mi>T</mi> </msup> <msup> <mi>U</mi> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msup> <mi>O</mi> <mo>+</mo> <msup> <mi>O</mi> <mi>T</mi> </msup> <msup> <mi>U</mi> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msup> <mi>M</mi> <mo>-</mo> <mfrac> <mn>1</mn> <mn>2</mn> </mfrac> <mi>&alpha;</mi> <msup> <mrow> <mo>(</mo> <msub> <mrow> <mi>C</mi> <mo>-</mo> <mi>C</mi> </mrow> <mi>t</mi> </msub> <mo>)</mo> </mrow> <mi>T</mi> </msup> <mrow> <mo>(</mo> <msub> <mrow> <mi>C</mi> <mo>-</mo> <mi>C</mi> </mrow> <mi>t</mi> </msub> <mo>)</mo> </mrow> </mrow></math>]]></math-cwu><math-cwu><![CDATA[<math> <mrow> <mfrac> <mrow> <mo>&PartialD;</mo> <mi>L</mi> </mrow> <mrow> <mo>&PartialD;</mo> <mi>C</mi> </mrow> </mfrac> <mo>=</mo> <mo>-</mo> <msup> <mi>W</mi> <mi>T</mi> </msup> <msup> <mi>U</mi> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msup> <mi>WC</mi> <mo>+</mo> <msup> <mi>W</mi> <mi>T</mi> </msup> <msup> <mi>U</mi> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msup> <mi>M</mi> <mo>-</mo> <mi>&alpha;</mi> <mrow> <mo>(</mo> <msub> <mrow> <mi>C</mi> <mo>-</mo> <mi>C</mi> </mrow> <mi>t</mi> </msub> <mo>)</mo> </mrow> </mrow></math>]]></math-cwu>令<math-cwu><![CDATA[<math> <mrow> <mfrac> <mrow> <mo>&PartialD;</mo> <mi>L</mi> </mrow> <mrow> <mo>&PartialD;</mo> <mi>C</mi> </mrow> </mfrac> <mo>=</mo> <mn>0</mn> <mo>,</mo> </mrow></math>]]></math-cwu>即得:-WTU-1WC+WTU-1M-α(C-Ct)=0所以(WTU-1W+αI)C=WTU-1M+αCt解上面这个方程就可以得到所要的基于自然单元挑选和参数生成的结果,包括频谱、时长、基频参数;α值选取的不同,得到的效果也就各不相同,α取得过小,那么生成的参数就距离自然的频谱参数很远,合成的语音的音质也没有明显提高,如果α选取过大,那么生成的就很接近自然的频谱参数,这样又会造成状态与状态之间的不连续现象,影响合成语音的听感,而且状态与状态之间和状态内部的α值也应该不一样,这样可以保证状态内部的参数的自然性和状态交接处的参数平滑过渡;经过了上面的流程之后,频谱、时长、基频等参数得以生成,进而最后的语音合成得以实现。
相关文献
评论
法律状态详情>>
2006-11-22实质审查的生效
2015-04-01专利权人的姓名或者名称、地址的变更
2006-09-20公开
2011-06-29授权
相关作者
相关机构