专利名称:一种快速实现语音信号变速的方法
技术领域:
本发明涉及语音技术,尤其涉及一种快速实现语音信号变速的方法。
背景技术:
语音信号变速操作,指的是在不改变基音、音色等特征的前提下,改变 信号播放的时间信息。现有多种重要的应用,例如,语言学习机,语音合成,
卡拉OK,语音压缩,视频编缉中音视频信号同步等。
现有的变速算法可分为两大类 一类是基于时域叠接相加技术(OLA, Overlap-Add);另一类是基于频域相位声码器(Phase Vocoder)技术。频域 技术使用短时傅里叶变换(STFT, Short time Fourier Transform), 一般适用 于音乐信号和大尺度变速, 一般来说频域技术通常会引入可感知的相位失真, 导致合成后声音不是很自然。时域技术使用叠接相加技术,为了解决叠加时 的相位同步问题,通常需要在分析信号或合成信号中搜索一段同叠加部分波 形相似的部分。时域同步技术利用了语音信号的准周期性特征,可以得到高 质量的合成语音。
但时域技术通常适用于小尺度变速。常见的时域技术有同步叠接相加 技术(SOLA, Synchronized Overlap-Add),基音同步叠接相加技术(PSOLA, Pitch Synchronized Overlap-Add),波形相似叠接相加技术(WSOLA, Waveform Similarity Overlap-Add)。
下面介绍一下采用WSOLA技术的语音信号变速方法,先介绍一下几个 重要参数,请同时参照图1:
W:分析信号窗长度,表示了接受处理的语音信号的长度。
Sa:输入信号帧长,表示了按帧依次截取并进行处理的分析信号的帧长。Ss:输出信号帧长。表示了按帧依次输出的合成信号的帧长。
Km:搜索得到的同步位置。
Wov:分析语音与合成语音相叠加部分的长度。
Kmax:分析窗移动量的最大值。
目前,整个方法的具体的实时处理流程是首先从输入信号buffer里(长 度为2W),从第一个点开始, 一直取W个点,作为一个分析窗;
然后将分析窗中的前Wov个点与输出buffer里(长度为W)的前Wov 个点进行比较,比较它们之间的一致性。记录下比较的情况;
然后整个分析窗向后移动一个样本点,再将新分析窗中的前Wov个点与 输出序列(文中指输出緩存中的样本点序列)中的前Wov个点进行比较,同 时记录下比较结果;
这样依次做Kmax次,然后取出比较结果中最一致即相似度最大的那种 情况;
然后将最一致的那种情况下的分析窗中前Wov个点与输出序列的前 Wov个点按某种方式进行叠加,再将分析窗中剩余的Ss个点存入到输出 buffer中去,并将输出buffer中的前Ss个点移出作为输出信号。
至此完成了一帧语音处理。下一帧语音处理,与上面基本相同,只不过 要先将输入buffer中最老的Sa个点移出,并将新的Sa个点移入。
km是分析窗的移动量,km取值范围是O至Kmax,每次移动量为一个样 本点。对于每一个分析窗口,通过比较分析窗前Wov个点与输出序列中的前 Wov个点的一致性。从中取出一致性最好的那个分析窗,将其前Wov个点叠 加到输出序列中去。设叠加时输入序列(文中指緩入緩存中的样本点序列) 的窗用x(")表示,输出序列用少(w)表示,那么<formula>formula see original document page 6</formula>
公式(1)表明,已经在输出buffer中的前Wov个点通过与输入buffer 中所选定的分析窗中的前Wov个语音点以加4又的方式叠加。叠加后将分析窗中剩余的Ss ( Ss=W-Wov)个点补充到输出序列中去。通过调整Sa的值和Ss 的值就可以达到对语音信号进行时间长度上的变化。
加权窗函数的选取应当使得输入与输出序列之间实现平滑的连4妄。实 验表明,采用简单的斜坡函数也可以达到较好的语音效果。斜坡函数的定义 为
每一个语音帧对应的同步位置km如何确定,关键在于解决时域一致性 的判决标准。采用互相关系数来表示一致性的程度。那么对于第m个语音帧
、=max (《[A:])
其中KW是第m个语音帧中所取的输入序列中分析窗前Wov个点和输 出序列中前Wov个点之间的归一化互相关系数,yt表示分析窗起始位置所在 的样本点序号,0《*《《_,定义如下<formula>formula see original document page 7</formula>其中,《[w为输入序列和输出序列的互相关值,《和《分别是输入序列
和输出序列的自相关值。有
<formula>formula see original document page 7</formula> 在上述算法中,要保证输出信号的质量,需要选择合适参数,其中最重要的是Wov和Kmax。 一般要求保证Wov长度最少为2个基音周期,Kmax 长度最少1个基音周期。语音的基音频率范围在60 500Hz范围内,如果按 60Hz计算,则Kmax长度最少为16ms, Wov长度最少为32ms。以8KHz采 样频率语音信号为例(后面的参数取值都是以8KHz采样频率为例),我们 选择Kmax为128个样本,Wov为256个样本,W为384个样本(对应Ss 为128个样本),Sa则根据变速因子来确定。
从上述算法描述中,可以看到计算量主要集中在Km搜索。在0 Kmax 范围内,如果采用全搜索,则需搜索Kmax点。对于每个搜索点,需要计算 一个长度为Wov序列的互相关《和两个长度为Wov序列的自相关G和,;, 以及一个计算平方根和一个除法操作。其计算的复杂度较高,在以ARM, DSP等低功耗CPU为平台的资源受限的嵌入式设备上难以实现。
发明内容
本发明要解决的技术问题是提供一种快速实现语音信号变速的方法,大 大降低计算复杂度。
采用WSOLA技术的时域变速算法在波形叠加时为了避免引入可感知失 真,需要使用基于波形相似度测量的同步机制。现有大部分时域算法都采用 计算分析信号和合成信号之间归一化的互相关值,选取对应互关值最大的样
本点作为叠加时的同步点。时域变速算法计算量主要是同步点搜索过程(约 占80%以上)。为了减少算法实现复杂度,本发明提出了一种新的时域变速 的方法,主要从两方面入手降低计算复杂度, 一是采用两级快速搜索算法, 以减少搜索点数;二是对归一化的互相关值计算公式进行了简化,降低归一 化互相关系数i :的计算复杂度。在保证合成质量的前提下,大大降低实现计 算复杂度。
为了解决上述问题,本发明提供了一种快速实现语音信号变速的方法, 包括以下步骤
对每一帧语音进行变速处理时,先进行第一级搜索,从输入序列中的分 析窗移动范围内的第一个样本点开始按预设步长移动分析窗,搜索到分析窗 前Wov个样本点与输出緩存前Wov个样本点相似度最大时的第 一 同步位置,然后进行第二级搜索,在第 一 同步位置与相邻的一个或两个移动位置之间逐 点移动分析窗,再次搜索到分析窗前Wov个样本点与输出緩存前WOV个样 本点相似度最大时的第二同步位置,然后将处于第二同步位置的分析窗前
Wov个样本点和输出l爰存前Wov个样本点进行叠加,其中,Wov是分析语
音与合成语音相叠加部分的长度。
进一步地,上述方法还可具有以下特点所述两级搜索过程包括依序执 行的以下步骤
在范围[O, Kmax]内,以d为搜索的预设步长移动分析窗,在每一个移动 位置,计算分析窗前Wov个点和输出序列前Wov个点之间的归一化互相关 系数%, Kmax是分析窗移动量的最大值;
从上一步计算出的值中,选出最大值对应的第 一同步位置Lm;
在以Lm为中心位置,间距为d的范围(Lm-d, Lm+d)内逐点移动分析 窗,并在每一个移动位置k处计算g值,其中Lm等于0时,0<k<d, Lm 等于Kmax时,Kmax-d<k《Kmax,在其它情况下,Lm-d<k<Lm+d;
从上一步计算出的值中,选出《最大值对应的第二同步位置Km。 进一步地,上述方法还可具有以下特点
对第附个语音帧,在移动量为/fc的每一移动位置,0《*《《_,先判断计 算出的输入序列和输出序列的互相关值为正还是为负,只计算为正 时的所述归 一化互相关系数的平方(i^[A:])2;
从得到的所有(巧[yt])M直中选出一个最大值,做第一级搜索时,该最大值 对应的移动位置即为所述第一同步位置,做第二级搜索时,该最大值对应的
移动位置即为所述第二同步位置;
在进行所述叠加时,将分析窗前Wov个样本点与输出緩存前Wov个样 本点直才妄进4亍力口4又叠力口 。
进一步地,上述方法还可具有以下特点对第w个语音帧,在移动量为;t的每一移动位置,o^y^《max,无论计算
出的输入序列和输出序列的互相关值为正还是为负,均计算出所述归一
化互相关系数的平方(i^[/t])2;
从得到的所有(i^[W)2值中选出一个最大值,做第一级搜索时,该最大值
对应的移动位置即为所述第一同步位置,做第二级搜索时,该最大值对应的
移动位置即为所述第二同步位置;
在进行所述叠加时,如果所述第二同步位置对应的-[yt]为负,先将分析 窗样本点的符号变反,再与输出緩存前Wov个样本点进行加权叠加,否则直 才妄进4亍力口4又叠力口。
进一步地,上述方法还可具有以下特点
计算所述归 一化互相关系数的平方(i^[W)2的公式如下
(":)2=(《)2〃
其中,用递推方法计算输入序列的自相关值C,即 ,+1] = O" + K + "『。v] - x2K + W
其中^和< 分别是输入序列和输出序列的自相关值,&为输入信号帧 长,A:为当前的移动量,xM为输入序列中的样本点。
进一步地,上述方法还可具有以下特点
使用在时域上抽取后的部分序列代替原始序列计算输入序列的自相关值 r:和输入序列和输出序列的互相关值r:。
进一步地,上述方法还可具有以下特点
所述方法基于波形相似叠接相加技术,在完成所述叠加后,再将分析窗 中剩余的Ss个点存入到输出緩存中,并将输出緩存中的前Ss个点移出作为 输出信号,至此完成了一帧语音处理,对下一帧语音处理前,将输入緩存中 最老的Sa个点移出,并将新的Sa个点移入,其中Sa为输入信号帧长,Ss为输出信号帧长。
采用本发明在时域WSOLA算法基础上的快速算法,实验结果表明,在 保证合成语音信号质量前提下(SNR只下降0.5犯),计算复杂度降低为原 始算法的1/10以下。适合在以ARM, DSP等低功耗CPU为平台的嵌入式设 备上实现。
图1是现有语音变速算法的示意图。
图2是本发明提出的时域变速的方法实现的流程图。
具体实施例方式
下面结合附图,对本发明的具体实施方式
进行详细说明。
在全搜索算法中,输入信号需要逐个样本点移动分析窗以比较同输出信 号一致性,从中找到对应归一化互相关系数最大的样本点位置,此时得到的 是一种最优搜索结果。本实施例使用一种次优搜索算法,目的是得到一种接 近最优的匹配结果,而且不会引入明显主观听觉失真。基于这个思想,本实 施例采用一种两级搜索方法。第一级粗粒度搜索,可以让搜索步长为一常数, 然后以此步长为单位来移动分析窗以获得粗粒度的同步位置;第二级细粒度 搜索,在上一级搜索获得的位置附近,逐个样本点进行细粒度搜索。下面描 述算法详细步骤
第一步在范围[O, Kmax]内,以d为搜索步长,移动分析窗计算《值; 粗粒度搜索点位置Ln定义如下
Ln=n*d, (Kn《Kmax/d (7)
第二步从第一步计算出的i^值中,选出i :最大值对应的样本点位置;
第三步在以上述选出的样本点为中心位置,间距为d的范围(Lm-d, Lm+d)内逐点移动分析窗以计算《值,细粒度搜索点位置k定义如下(Kk<d, ifLm==0
Kmax-d<k《Kmax, ifLm==Kmax (8) Lm-d<k<Lm+d,其他情况
第四步从第三步计算出的i :值中,选出《最大值对应的样本点位置Km。
从上述算法描述可以看出,快速算法实际搜索的点数Kmax/d+24d。同全 搜索算法相比,可认为计算复杂度下降为原来1/d(因为Kmax d,因此可 忽略2*d)
d值的选取会直接影响搜索算法的精度,大的d值,常常会陷入局部最 优的问题中。通过实验,d值可以选择3 5个样本点,较佳为4个样本点, 对应输出信号SNR值只有0.5dB的下降,而且主观质量没有明显下降。
此外,本实施例还对搜索过程中用于一致性评价的归一化互相关系数的 计算进行简化。
通常嵌入式设备的CPU,如ARM或DSP,都不直接支持开平方根计算。 因此可以直接计算《的平方)2 。
i :计算过程中,需要计算两个自相关值《和《时,因为^值对于所有搜 索点相同,公式(3)可简化为
<formula>formula see original document page 12</formula>
对于C可以采用递推方法进行计算,即
<formula>formula see original document page 12</formula> (9)
但当以(i^)2作为一致性评价准则时,(i^)2最大值有可能对应负的i :值。
此时, 一种处理方法是在按公式(4)先计算出《[yt],如果《[W为负,则不再计 算CR:)2。即只计算《[A:]为正时的(i :)2,从这些(《)M直中选出最大的一个, 认为此时的比较结果最一致,然后基于该最大的(《)2对应的分析窗进行后续的叠力口和其/f也运算。
另一种处理方式是同时考虑《[W为正和为负的情况,即无论《W为正还 是为负均计算出此时的(^)M直,从得到的(i^)2值中选出最大的一个,基于该 最大的(^)2对应的分析窗进行后续运算。但是,在进行叠加时,需要将叠加 公式i务改如下
<formula>formula see original document page 13</formula>(11)
即在该最大的(i^)2对应于正的《[W时,仍采用原来的叠加公式(l),但在 最大的(i^y对应于负的-[/fc]时,则采用上述公式(ll)。上述公式(ll)中,相当
于将公式(l)分析窗样本点的符号变反,再与输出緩存前Wov个样本点进行叠
加。因为为负但值较大时,相比较的两段样本点序列的波形只是在相位 上差异较大,加以延时后两者的波形可能更为相似,因此在公式(ll)中将其符 号取反后再进行叠加。实验结果表明,采用这种处理方式得到的合成语音信 号质量较佳。
此外,在计算《和^时,可以使用在时域上抽取后的序列代替原始序列,
设抽取因子为c,则公式(4)和(5)筒化为<formula>formula see original document page 13</formula>
结合快速搜索算法(搜索步长d为4)和简化后的一致性评价准则(抽取 因子c为2)两项改进后,实验结果表明,在保证合成语音信号质量前提下(SNR只下降0.5dB),计算复杂度降低为原先1/10以下。并且输出信号SNR值和
主观质量没有明显下降。
权利要求
1、一种快速实现语音信号变速的方法,包括以下步骤对每一帧语音进行变速处理时,先进行第一级搜索,从输入序列中的分析窗移动范围内的第一个样本点开始按预设步长移动分析窗,搜索到分析窗前Wov个样本点与输出缓存前Wov个样本点相似度最大时的第一同步位置,然后进行第二级搜索,在第一同步位置与相邻的一个或两个移动位置之间逐点移动分析窗,再次搜索到分析窗前Wov个样本点与输出缓存前Wov个样本点相似度最大时的第二同步位置,然后将处于第二同步位置的分析窗前Wov个样本点和输出缓存前Wov个样本点进行叠加,其中,Wov是分析语音与合成语音相叠加部分的长度。
2、 如权利要求l所述的方法,其特征在于,所述两级搜索过程包括依序 执行的以下步骤在范围[O, Kmax]内,以d为搜索的预设步长移动分析窗,在每一个移动 位置,计算分析窗前Wov个点和输出序列前Wov个点之间的归一化互相关 系数《,Kmax是分析窗移动量的最大值;从上一步计算出的值中,选出最大值对应的第 一同步位置Lm;在以Lm为中心位置,间距为d的范围(Lm-d, Lm+d)内逐点移动分析 窗,并在每一个移动位置;t计算《值,其中Lm等于O时,0<k<d, Lm等于 Kmax时,Kmax-d<k《Kmax,在其它情况下,Lm-d<k<Lm+d;从上一步计算出的值中,选出《最大值对应的第二同步位置Km。
3、 如权利要求2所述的方法,其特征在于对第m个语音帧,在移动量为yt的每一移动位置,0《y^《max,先判断计算出的输入序列和输出序列的互相关值《[/fc]为正还是为负,只计算《[W为正 时的所述归 一化互相关系数的平方(i^[A])2;从得到的所有(i :[yt])2值中选出一个最大值,做第一级搜索时,该最大值 对应的移动位置即为所述第一同步位置,做第二级搜索时,该最大值对应的移动位置即为所述第二同步位置;在进行所述叠加时,将分析窗前Wov个样本点与输出緩存前Wov个样 本点直4矣进4亍力口4又叠力口 。
4、 如权利要求2所述的方法,其特征在于对第附个语音帧,在移动量为A的每一移动位置,02*《《_,无论计算 出的输入序列和输出序列的互相关值为正还是为负,均计算出所述归一 化互相关系凄丈的平方<formula>formula see original document page 3</formula>;从得到的所有(^[/t])M直中选出一个最大值,做第一级搜索时,该最大值 对应的移动位置即为所述第一同步位置,做第二级搜索时,该最大值对应的 移动位置即为所述第二同步位置;在进行所述叠加时,如果所述第二同步位置对应的《[;t]为负,先将分析 窗样本点的符号变反,再与输出緩存前Wov个样本点进行加权叠加,否则直才妻ii^亍力口4又叠力口。
5、 如权利要求3或4所述的方法,其特征在于计算所述归 一化互相关系数的平方(i^[W)2的公式如下<formula>formula see original document page 3</formula>其中,用递推方法计算输入序列的自相关值r:,即<formula>formula see original document page 3</formula>其中C和< 分别是输入序列和输出序列的自相关值,&为输入信号帧 长,;t为当前的移动量,x[w]为输入序列中的样本点。
6、 如权利要求5所述的方法,其特征在于使用在时域上抽取后的部分序列代替原始序列计算输入序列的自相关值 《和输入序列和输出序列的互相关值C 。
7、如权利要求l所述的方法,其特征在于所述方法基于波形相似叠接相加技术,在完成所述叠加后,再将分析窗中剩余的Ss个点存入到输出緩存中,并将输出緩存中的前Ss个点移出作为 输出信号,至此完成了一帧语音处理,对下一帧语音处理前,将输入緩存中 最老的Sa个点移出,并将新的Sa个点移入,其中Sa为输入信号帧长,Ss 为输出信号帧长。
全文摘要
一种快速实现语音信号变速的方法,对每一帧语音进行变速处理时,先进行第一级搜索,从输入序列中的分析窗移动范围内的第一个样本点开始按预设步长移动分析窗,搜索到分析窗前Wov个样本点与输出缓存前Wov个样本点相似度最大时的第一同步位置,然后进行第二级搜索,在第一同步位置与相邻的一个或两个移动位置之间逐点移动分析窗,再次搜索到分析窗前Wov个样本点与输出缓存前Wov个样本点相似度最大时的第二同步位置,然后将处于第二同步位置的分析窗前Wov个样本点和输出缓存前Wov个样本点进行叠加,其中,Wov是分析语音与合成语音相叠加部分的长度。本发明可以大大降低计算复杂度。
文档编号G10L21/04GK101290775SQ200810115568
公开日2008年10月22日 申请日期2008年6月25日 优先权日2008年6月25日
发明者冯宇红, 晨 张 申请人:北京中星微电子有限公司