一种用于任意源和目标语音之间的语音转换方法与流程

文档序号:11202331阅读:452来源:国知局
一种用于任意源和目标语音之间的语音转换方法与流程

本发明属于语音转换技术领域,具体涉及一种用于任意源和目标源之间的语音转换方法。



背景技术:

语音信号是语言的声音信号,负载着一定的语言意义,其中包含了多种信息,比如说话人的身份信息、情感状态和语音内容等。

语音转换,是一种用目标说话人的身份信息来替换源说话人的身份信息,但是保持语音内容不变的一种技术。在许多重要的应用方面都涉及语音转换功能:情感识别与转换技术方面,文字信息格式到语音信息格式转换的文语转换系统(tts)方面,谱恢复方法方面,音频带宽扩展技术方面及与帮助发音障碍的人重构语音等。

目前,语音转换的方法有很多种,而最常用的比较经典的方法为以下两种:一类是基于统计方法;一类是基于稀疏表示。

在基于统计参数的语音转换方法中,高斯混合模型被应用得最广,在高斯混合模型算法中,需要用到转换函数来实现加权求平均值,而转换函数的参量用最小均方误差准则(minimummean-squareerror,mmse)或者最大似然准则(maximumlikelihood,ml)估计。这种转换方法虽然简单直观,且效果很好,但存在缺点一是需要大量平行语料进行训练,否则会产生过拟合现象,二是转换后的语音频谱过于平滑,不够自然。

在基于稀疏表示的语音转换方法中,由于稀疏表示被广泛的应用于信号处理中,基于样本的语音转换方法也得到了很大的发展。2001年d.seung等提出了非负矩阵分解(non-negativematrixfactorization,nmf)语音转换算法,该方法首先将源说话人语音稀疏表示化,即表示为语音字典和激励矩阵的乘积。在转换阶段使用目标说话人语音字典代替源说话人语音字典实现语音转换。这种基于nmf的方法可以有效的改进基于统计参数方法所造成的过拟合问题,产生更加自然的语音,并且该方法还有很好的噪声鲁棒性。但是,这种方法也存在以下缺点:需要在每次语音转换之前搜集到足够的源和目标说话人的平行语音用于字典生成的训练阶段,因此在语音转换阶段一旦源说话人身份改变了,也就是无法完成源说话人语音到目标说话人语音的语音转换了。在实际应用中,不可能收集每一个源说话人与目标说话人的大量平行语音段进行训练过程,因此,基于nmf的语音转换算法存在局限性,无法有效快速实现任意源与目标语音的语音转换。



技术实现要素:

本发明的目的是为了解决上述问题,提供一种针对任意源和目标说话人之间的语音转换方法,将语音转换的字典生成的训练过程和语音转换过程分开,在语音转换过程中不需要因为语音转换的源语音和目标语音的身份的变化而去重新训练语音字典。本发明在基于nmf方法的基础上引入了张量的概念,从语料库中选取一个、两个或者多个目标语音作为语音张量字典的基础语音,通过多序列动态时间规整算法使这一个、两个或者多个目标语音的平行语音段对齐,从而建立由一个、两个或者多个二维基础字典构成的张量字典。在语音转换阶段,源、目标说话人语音都可以通过张量字典中各基础字典的线性组合,构造出各自的语音字典,实现了语音转换。

为了达到上述发明目的,本发明采用以下技术方案:一种针对任意源和目标语音之间的语音转换方法,包括以下步骤,

步骤一,建立至少一个基础说话人语音的张量字典;

步骤二,构建目标语音对应的语音字典和任意源的语音字典;

步骤三,重构任意源的语音内容,实现任意源到目标语音的转换。

进一步,所述步骤二为利用张量算法在张量字典中构造目标语音的语音字典和任意源的的语音字典。

进一步,所述步骤一建立至少一个目标语音的张量字典的过程具体如下:

1)从语料库中随机选取出n个目标语音,形成张量字典的基础语音,从这n个目标语音中随机选取语义内容相同的语音信号x1,x2,...,xn,n≥1,x代表语音信号;

2)提取每个语音信号中的特征参数矢量序列s1,s2,…,sn;

3)利用多序列动态时间规整算法将上述特征参数矢量序列s1,s2,…,sn对齐,对齐后的语音特征参数矢量序列为s′1,s′2,…,s′n;

4)从特征参数矢量序列为s′1,s′2,…,s′n随机抽取相同位置的若干语音帧特征矢量s″1,s″2,…,s″n,作为每个目标语音的张量字典的一部分;

5)当每个目标语音的张量字典的大小小于该目标语音的张量字典预设值时,重复步骤(2)到(4);当每个目标语音的张量字典的大小等于该目标语音的张量字典预设值时,停止步骤(2)到(4),形成n个目标语音字典a1,a2,…,an;

6)将n个目标语音字典a1,a2,…,an叠放在一起,组成张量字典a。

更进一步,所述步骤3)中利用多序列动态时间规整算法是指交替式使用多序列动态时间规整同步的方法,目标语音特征参数矢量序列s1,s2,…,sn中的每一个特征参数矢量序列至多参与两次多序列动态时间规整。

进一步,所述步骤二构建目标语音对应的语音字典包含以下过程,

1)针对张量字典a,计算张量字典a内每个目标语音的权重系数α,权重系数α=[α1,α2,…,αn],0<α<1,n≥1;

2)对各个目标语音的张量字典进行加权的线性组合

3)加权的线性组合与激励矩阵h相乘,得到每个目标语音的语音字典s,

其中an表示张量字典a中的第n个目标语音的张量字典,αn(0≤αn≤1)表示第n个目标语音的张量字典的权重系数;

4)计算加权系数α和激励矩阵h的成本函数:

d()选用kl散度‖·‖1表示1范数,λ是稀疏惩罚因子,其中0≤λ≤1,用以保证激励矩阵的稀疏度,h≥0,加权系数α=[α1,α2,…,αn],需要保证

5)保持步骤(4)中的a值大小不变,利用非负矩阵分解算法的乘法更新准则不断

迭代加权系数α和激励矩阵h,通过变化参数α、h使得算法成本函数值达到最小,得到

迭代公式:

其中表示矩阵之间元素逐个相乘,/表示矩阵之间元素逐个相除。t表示矩阵转置,公式中的除号都表示点除,λ是稀疏惩罚因子,1表示:全1矩阵,k表示第k个目标语音;

6)利用公式(1),(3),(4),计算出目标语音的特征矢量序列stgt在在张量字典a下的稀疏表示:

其中,αtgt表示目标语音的特征矢量序列stgt的张量字典加权系数,h2表示目标语音的特征矢量序列stgt的激励矩阵;

7)利用公式(1),(3),(4),计算出任意源的特征矢量序列ssrc在张量字典a下的稀疏表示:

其中,αsrc表示任意源的张量字典加权系数,h1表示任意源的特征矢量序列ssrc的激励矩阵。

更进一步,所述计算任意源的特征矢量序列ssrc和任意目标语音特征矢量序列stgt在张量字典a下的稀疏表示步骤中:当任意源的特征矢量序列ssrc和目标语音特征矢量序列stgt是由源和目标说话人(目标语音)说的相同语音内容的语音提取特征而来,则根据非负矩阵分解算法可知两序列在同一张量字典a下的稀疏表示中的激励矩阵h1和h2近似相等。对于同一个说话人(同一个任意源)的两段不同的语音,例如目标语音特征序列在同一张量字典a下的稀疏表示中的张量字典的加权系数也近似相等,这也很容易理解:张量字典下的加权系数本来的目的就是要选出属于说话人的语音字典,当说话人身份不变时,选出的字典也自然不变。

更进一步,所述步骤三即选择任意需要转换的源语音特征矢量序列ssrc的激励矩阵h1与目标语音字典相乘,重构出转换后的目标语音的特征矢量序列,得到转换后的目标语音:

其中代表转换后的目标语音的特征矢量序列。

进一步,所述步骤一中的张量字典是指通过多序列动态时间规整算法使至少两个目标语音的平行语音段对齐,建立由至少两个二维基础字典构成的张量字典。

进一步,所述步骤一包括建立的张量字典大小的约束,张量字典大小为:基础说话人个数×特征维度×语音帧数,基础说话人的个数和字典语言帧数的选择关系到转换的语音质量和转换的复杂度。当基础说话人个数过少时,线性组合所表示的目标说话人(目标语音)的语音字典就与实际中的语音字典有较大的偏差;当基础说话人个数过多时,又会提升计算的复杂度。实验表面,选择10-20个基础说话人可以很好的重构出目标语音字典同时又不会有很高的计算复杂度。语音帧数的选择同样面临着相似的问题,实验表明,选择3000-3500帧语音时,可以得到较好的语音转换效果,同时没有较高的计算复杂度。

进一步,所述步骤三具体为利用目标语音的语音字典中的特征矢量序列与目标语音的语音字典作线性加权后,与任意源的激励矩阵相乘,实现任意源到目标语音的转换。

本发明与现有技术相比,有益效果是:1、本发明利用在同一张张量字典中,利用任意源、与要转换的目标语音对应张量字典中语音信号,构造出各自的语音字典,实现语音转换;2、无需每次语音转换之前搜集到大量的任意源和目标说话人的平行语音进行训练,实用性及语音转化效率更高,在张量字典基础上,只需要计算任意源、目标语音的特征矢量序列,然后重构任意源的语音内容,实现语音转换;3不需要源和目标说话人的平行语音用于训练字典,所以实验的训练阶段可以独立于实验转换阶段;4当待转换的语音源和目标语音的身份发生改变时,训练出来的张量字典保持不变,能有效实现任意源和目标说话人之间的语音转换。

附图说明

图1是本发明训练阶段中的张量字典生成过程的框架图;

图2是张量字典生成过程中的多矢量序列dtw示意图之一;

图3是张量字典生成过程中的多矢量序列dtw示意图之二;

图4是张量字典生成过程中的多矢量序列dtw示意图之三;

图5是语音转换阶段中的转换过程示意图。

具体实施方式

下面通过具体实施例对本发明的技术方案作进一步描述说明。

实施例1

本实施例公开了一种针对任意源和目标语音之间的语音转换方法,本方案中的任意源是指待转换的不同语音对象发出的不同语音。方法包括以下步骤:

步骤一,建立至少一个目标语音的张量字典;参考图1,具体为,

1)从语料库中随机选取出n个目标语音,形成张量字典的基础语音,从这n个目标语音中随机选取语义内容相同的语音信号x1,x2,...,xn,n≥1,x代表语音信号;

2)提取每个语音信号中的特征参数矢量序列s1,s2,…,sn;

3)利用多序列动态时间规整算法将上述特征参数矢量序列s1,s2,…,sn对齐,对齐后的语音特征参数矢量序列为s′1,s′2,…,s′n;

4)从特征参数矢量序列为s′1,s′2,…,s′n随机抽取相同位置的若干语音帧特征矢量s″1,s″2,…,s″n,作为每个目标语音的张量字典的一部分;

5)当每个目标语音的张量字典的大小小于该目标语音的张量字典预设值时,重复步骤(2)到(4);当每个目标语音的张量字典的大小等于该目标语音的预设的值时,停止步骤(2)到(4),形成n个目标语音字典a1,a2,…,an;

6)将n个目标语音字典a1,a2,…,an叠放在一起,组成张量字典a。

步骤二,在张量字典的基础上构建目标语音对应的语音字典;具体为

1)针对张量字典a,计算张量字典a内每个目标语音的权重系数α,权重系数α=[α1,α2,…,αn],0<α<1;

2)对各个目标语音的张量字典进行加权的线性组合

3)加权的线性组合与激励矩阵h相乘,得到每个目标语音的语音字典s,

其中an表示张量字典a中的第n个目标语音的张量字典,αn(0≤αn≤1)表示第n个目标语音的张量字典的权重系数;

4)计算加权系数α和激励矩阵h的成本函数:

d()选用kl散度,‖·‖1表示1范数,λ是稀疏惩罚因子,用以保证激励矩阵的稀疏度,h≥0,参数α=[α1,α2,…,αn],

5)保持a不变,变化参数α、h使得算法成本函数值达到最小,得到迭代公式:

其中表示矩阵之间元素逐个相乘,/表示矩阵之间元素逐个相除。t表示矩阵转置,公式中的除号都表示点除,λ是稀疏惩罚因子,1表示:全1矩阵,k表示第k个目标语音;

6)利用上述步骤,计算出目标语音的特征矢量序列stgt在在张量字典a下的稀疏表示:

其中,αtgt表示目标语音的特征矢量序列stgt的张量字典加权系数,h2表示目标语音的特征矢量序列stgt的激励矩阵;

7)在张量字典的基础上构建任意源的语音字典;利用公式(1)、(3)、(4),计算出任意源的特征矢量序列ssrc在在张量字典a下的稀疏表示:

其中,αsrc表示任意源的张量字典加权系数,h1表示任意源的特征矢量序列ssrc的激励矩阵;

步骤三,重构任意源的语音内容,实现任意源到目标语音的转换;选择任意源源语音字典ssrc的激励矩阵h1与目标语音字典相乘,得到转换后的目标语音:

其中代表转换后的目标语音的特征矢量序列。

上述步骤二至步骤三参考图5所示。

本发明的语音转换方法的目的是有效快速地任意人说的语音转化为特定的某个目标语音,转换的原理为:

在字典生成的训练阶段,选取n个目标语音作为张量字典的基础语音。从这n个目标语音中提取平行语音段,作为生成张量字典的基础语料;

提取各个语音段的特征矢量,利用多序列动态时间规整算法(multi-dynamictimewarping,multi-dtw)将特征参数矢量对齐;

收集足够帧数的对齐好的特征矢量,将他们生成为n个对称字典,将这n个字典叠放在一起,组成张量字典;

在语音转换阶段,利用基于统一张量字典(unifiedtensordictionary,utd)的语音转换算法,利用utd算法自动在同一张量字典中构造源、目标说话人的语音字典,实现任意源和目标说话人之间的语音转换。

上述方法中,步骤一中的张量字典是指通过多序列动态时间规整算法使n个目标语音的平行语音段对齐,建立一个n个二维基础字典构成的张量字典。

上述方法中,计算任意源的特征矢量序列ssrc和任意目标语音特征矢量序列stgt在张量字典a下的稀疏表示步骤中:当任意源的特征矢量序列ssrc和目标语音特征矢量序列stgt是由源和目标说话人(目标语音)说的相同语音内容的语音提取特征而来,则根据非负矩阵分解算法可知两序列在同一张量字典a下的稀疏表示中的激励矩阵h1和h2近似相等。对于同一个说话人(同一个任意源)的两段不同的语音,例如目标语音特征序列在同一张量字典a下的稀疏表示中的张量字典的加权系数也近似相等,这也很容易理解:张量字典下的加权系数本来的目的就是要选出属于说话人(任意源)的语音字典,当说话人身份不变时,选出的字典也自然不变。

张量字典是指通过多序列动态时间规整算法使至少两个目标语音的平行语音段对齐,建立一个至少有两个二维基础字典构成的张量字典。张量字典的建立包括建立的张量字典大小的约束,张量字典大小为:基础说话人个数×特征维度×语音帧数。基础说话人的个数和字典语言帧数的选择关系到转换的语音质量和转换的复杂度。当基础说话人个数过少时,线性组合所表示的目标说话人(目标语音)的语音字典就与实际中的语音字典有较大的偏差;当基础说话人个数过多时,又会提升计算的复杂度。实验表面,选择10-20个基础说话人可以很好的重构出目标语音字典同时又不会有很高的计算复杂度。语音帧数的选择同样面临着相似的问题,实验表明,选择3000-3500帧语音时,可以得到较好的语音转换效果,同时没有较高的计算复杂度。

实施例2

与实施例1不同的是,生成张量字典过程中,利用多序列动态时间规整算法(multi-dynamictimewarping,multi-dtw)将特征参数矢量对齐,可以参考图2、图3和图4所示,图2、图3和图4是张量字典生成过程中的多矢量序列dtw示意图,图中包括n个序列对齐的第一步,第二步和最后一步。多矢量序列dtw是针对使多个平行语音对齐的动态时间规整算法。我们已知两个语音序列之间的dtw是为了使两个平行语音实现对齐,假设两个语音参数矢量序列s1和s2经过dtw规整之后的变化函数为f1()和f2()。则变化后的语音特征参数矢量为:

s1=f1(s1)(8)

s2=f2(s2)(9)

当有多个平行语音矢量序列s1,s2,…,sn需要对齐时,本文提出的多矢量序列dtw算法是交替式使用dtw同步的方法,每一个特征参数矢量序列至多参与两次dtw。这样可以避免当随机选取一个特征参数矢量序列si为模板与其他n-1个特征参数矢量序列逐个同步而出现的同步后特征参数矢量序列过长、变形等问题。多矢量序列dtw算法的具体过程如下所示:

(1)首先对s1,s2进行dtw,假设每次dtw之后的变化函数都用f1()和f2()表示,则矢量序列的变化如公式(1),(2)。如图2所示,变化前s1,s2未对齐,变化后的s1,s2呈现对齐状态。

(2)接下来对s2,s3进行dtw时,语音参数矢量序列变化为:

s1=f1(s1),s2=f1(s2)(10)

s3=f2(s3)(11)

如图3所示,在对s2,s3进行dtw之前,s1,s2就已经保持对齐状态,所以当s2,s3进行dtw变化时,s1必须和s2保持同样的变化。最终经dtw变化以后,s1,s2,s3都呈现对齐状态。

(3)接下来按照顺序分别对(s3,s4),(s4,s5),…,(sn-1,sn)进行特征参数矢量序列之间的dtw。和如图3一样,对于已经对齐的序列,后续变化必须保持一致性。

(4)最后对sn-1,sn进行dtw,语音参数矢量序列变化如下:

s′1=f1(s1),s′2=f1(s2),...,s′n-1=f1(sn-1)(12)

s′n=f2(sn)(13)

如图4所示,sn-1,sn进行dtw之前,s1,s2,…,sn-1已经是对齐的序列了,所以在sn-1,sn作dtw时,s1,s2,…,sn-1需要保持同样的变化规律。当sn-1,sn作了dtw之后,序列s1,s2,…,sn都实现了对齐,所以此时的序列就变成了对齐后的语音特征矢量序列s′1,s′2,…,s′n。

上面描述是用于实现本发明及其实施例,各步骤均为示例,本领域普通技术人员可以根据实际情况确定要使用的实际步骤,而且各个步骤有多种实现方法,均应属于本发明的范围之内。本发明的范围不应该由该描述来限定。本领域的技术人员应该理解,在不脱离本发明的范围的任何修改或局部替换,均属于本发明权利要求来限定范围。

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