语音数据的调整方法及装置与流程

文档序号:12159488阅读:366来源:国知局
语音数据的调整方法及装置与流程

本发明涉及音频信号处理领域,具体而言,涉及一种语音数据的调整方法及装置。



背景技术:

时间尺度变化算法,英文是Time-scale modification,是一种语音在时域进行拉伸和压缩的方法。比如一个信号用S(t)=sin(2t)来表示,那么改变t的系数把信号变成sin(4t)就是时间尺度变化。时间尺度变化主要用于变速播放和变声领域,也适用于网络抖动、延时和丢包而需要语音修补环境。

在遇到网络抖动、延时和丢包等情况时,通过时间尺度变化算法对语音信号进行拉伸或压缩,可以有效减小恶劣网络环境对语音质量的影响,提高在此环境下的主观听音感受。

人在发浊音时,气流通过声门使声带产生张驰振荡式振动,产生一股准周期脉冲气流,这一气流激励声道就产生浊音,又称有声语音,它携带着语音中的大部分能量。这种声带振动的频率称为基频,相应的周期就称为基音周期(Pitch),它由声带逐渐开启到面积最大(约占基音周期的50%)、逐渐关闭到完全闭合(约占基音周期的35%)、完全闭合(约占基音周期的15%)三部分组成。

基音延时是在一定限制的基础上,使残差信号的自相关函数最大的延时。对每帧的基音延时的计算通过两个估计窗分别进行。第一个估计窗的范围是整个当前帧信号,第二个估计窗的范围是当前帧的后一半和lookahead(预取)部分。在经过这两个估计窗(预测窗)分别得到一个最佳延时参数后,再根据一定的逻辑判断,在两个最佳延时参数中选取一个作为当前帧的延时参数,即基音周期。

在相关技术的调整语音数据的方法中,研究比较多的是同步叠加算法(Synchronization overlap-and-add,简称为SOLA),该算法的原理是:将原始信号按帧间距Sa,帧长N进行分帧,再以帧间距Ss进行合成,Sa和Ss的比值随之决定了语音的拉伸/压缩比例。后来又提出了基音同步叠加算法(Pitch Synchronization overlap-and-add,简称为PSOLA),该算法的主要原理是:首先估计基音周期;接着对输入波形进行基音标记,将原始语音信号与一系列基音同步的窗函数相乘,得到一系列重叠的分析短时信号;然后将分析短时信号按固定比例进行如基频、时长和幅度调整,得到相应的与目标基音曲线同步的一系列短时合成信号序列;最后将合成的短时信号序列与目标基音周期同步排列,重叠累加得到合成的语音波形。

相关技术中,在语音数据的时间尺度调整算法中,存在以下缺点:每帧拉伸/压缩比例相同,不能实时改变等,针对相关技术中的上述缺陷,目前尚没有有效的解决方法。



技术实现要素:

本发明提供了一种语音数据的调整方法及装置,以至少解决相关技术中每帧拉伸/压缩比例相同,不能实时改变,且拉伸/压缩比例受限,不能从整体上把控的技术问题。

根据本发明的一个方面,提供了一种语音数据的调整方法,包括:获取待处理的语音数据中指定帧的参数信息,以及所述指定帧的第一目标拉伸或压缩长度,其中,所述指定帧的参数信息包括:基音周期、第一帧长度、第一修正值;计算所述第一目标拉伸或压缩长度和所述第一修正值的和得到第二目标拉伸或压缩长度;依据所述第二目标拉伸或压缩长度和所述基音周期计算得到所述调整参数,其中,所述调整参数用于指示对所述指定帧进行拉伸或压缩的长度;依据所述调整参数对所述指定帧的长度进行调整得到第二帧长度和第二修正值,并根据所述第二修正值更新执行拉伸或压缩操作的所述指定帧的下一帧的修正值。

进一步地,当所述调整参数指示对所述指定帧进行拉伸处理时,依据所述调整参数对所述指定帧的长度进行调整得到第二帧长度包括:根据所述第一帧长度和所述第二目标拉伸长度对所述指定帧进行调整得到第一子帧长度;计算所述第一子帧长度减去所述第一帧长度得到第一差值;判断所述第一目标拉伸长度减去所述第一差值得到的第二差值是否大于0;在判断结果为否时,确定所述第一子帧长度为所述第二帧长度。

进一步地,所述方法还包括:在判断结果为是时,根据所述第一子帧长度和第三目标拉伸长度对所述第一子帧长度对应的帧进行调整得到所述第二帧长度,其中,所述第三目标拉伸长度为所述第二差值和所述基音周期的差值的绝对值。

进一步地,所述依据所述第二目标拉伸或压缩长度和所述基音周期计算得到所述调整参数包括:将所述第二目标拉伸或压缩长度除以所述基音周期得到商值;比较所述商值和1的大小;若所述商值大于或等于1,将小于或等于所述商值的最大正整数作为所述调整基数;若所述商值小于1,则将1作为所述调整基数;将所述基音周期和所述调整基数的乘积设置为所述调整参数。

进一步地,在所述将所述基音周期和所述调整基数的乘积设置为所述调整参数之后,所述方法还包括:比较所述调整参数和所述第一帧长度的大小;若所述调整参数大于所述第一帧长度,则用所述第一帧长度更新所述调整参数。

根据本发明的另一方面,提供了一种语音数据的调整装置,包括:获取模块,用于获取待处理的语音数据中指定帧的参数信息,以及所述指定帧的第一目标拉伸或压缩长度,其中,所述指定帧的参数信息包括:基音周期、第一帧长度、第一修正值;第一计算模块,用于计算所述第一目标拉伸或压缩长度和所述第一修正值的和得到第二目标拉伸或压缩长度;第二计算模块,用于依据所述第二目标拉伸或压缩长度和所述基音周期计算得到所述调整参数,其中,所述调整参数用于指示对所述指定帧进行拉伸或压缩的长度;处理模块,用于依据所述调整参数对所述指定帧的长度进行调整得到第二帧长度和第二修正值,并根据所述第二修正值更新执行拉伸或压缩操作的所述指定帧的下一帧的修正值。

进一步地,处理模块包括:第一调整单元,用于当所述调整参数指示对所述指定帧进行拉伸处理时,根据所述第一帧长度和所述第二目标拉伸长度对所述指定帧进行调整得到第一子帧长度;第一计算单元,用于计算所述第一子帧长度减去所述第一帧长度得到第一差值;判断单元,用于判断所述第一目标拉伸长度减去所述第一差值得到的第二差值是否大于0;确定单元,用于在判断结果为否时,确定所述第一子帧长度为所述第二帧长度。

进一步地,所述处理模块还包括:第二调整单元,用于在判断结果为是时,根据所述第一子帧长度和第三目标拉伸长度对所述第一子帧长度对应的帧进行调整得到所述第二帧长度,其中,所述第三目标拉伸长度为所述第二差值和所述基音周期的差值的绝对值。

进一步地,所述第二计算模块包括:第二计算单元,用于将所述第二目标拉伸或压缩长度除以所述基音周期得到商值;第一比较单元,用于比较所述商值和1的大小;第一设置单元,用于若所述商值大于或等于1,将小于或等于所述商值的最大正整数设置为所述调整基数;或,用于若所述商值小于1,则将1设置为所述调整基数;第二设置单元,用于将所述基音周期和所述调整基数的乘积设置为所述调整参数。

进一步地,所述第二计算模块还包括:第二比较单元,用于在所述将所述基音周期和所述调整基数的乘积设置为所述调整参数之后,比较所述调整参数和所述第一帧长度的大小;更新单元,用于若所述调整参数大于所述第一帧长度,则用所述第一帧长度更新所述调整参数。

通过本发明,采用获取待处理的语音数据中指定帧的参数信息,以及所述指定帧的第一目标拉伸或压缩长度,其中,所述指定帧的参数信息包括:基音周期、第一帧长度、第一修正值,然后计算所述第一目标拉伸或压缩长度和所述第一修正值的和得到第二目标拉伸或压缩长度,依据所述第二目标拉伸或压缩长度和所述基音周期计算得到所述调整参数,其中,所述调整参数用于指示对所述指定帧进行拉伸或压缩的长度,依据所述调整参数对所述指定帧的长度进行调整得到第二帧长度和第二修正值,并根据所述第二修正值更新执行拉伸或压缩操作的所述指定帧的下一帧的修正值,通过整个待处理的语音数据的每一帧进行逐帧迭代的调整方式,上一帧的调整结果影响下一帧的调整比例,解决了相关技术中每帧拉伸/压缩比例相同,不能实时改变,且拉伸/压缩比例受限,不能从整体上把控的技术问题,进而达到了通过实时改变每帧的拉伸/压缩比例来补偿语音数据在传输通信中的一些突发状况(如,抖动、丢包、延迟)而提高整个语音质量的技术效果,有效减小了恶劣网络环境对语音质量的影响。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的语音数据的调整方法的流程图;

图2是根据本发明实施例的语音数据的调整装置的结构框图;

图3是根据本发明实施例的语音数据的调整装置的可选结构框图一;

图4是根据本发明实施例的语音数据的调整装置的可选结构框图二;

图5是根据本发明实施例的语音数据的调整装置的可选结构框图三;

图6是根据本发明实施例的语音数据的调整装置的可选结构框图四;

图7是根据本发明可选实施例的调整语音数据的流程示意图;

图8是根据本发明可选实施例的拉伸操作流程图;

图9是根据本发明可选实施例的拉伸示意图一;

图10是根据本发明可选实施例的拉伸示意图二;

图11是根据本发明可选实施例的压缩操作流程图;

图12是根据本发明可选实施例的在不同基音周期下进行压缩的三种示意图。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

在本实施例中提供了一种语音数据的调整方法,本实施例可以应用于所有需要进行时间尺度变化的领域和场景中,如在多媒体设备中,通过对多媒体数据的拉伸/压缩来实现变速播放和变声等功能,在数字通信或互联网通信中,通过对语音数据,特别是清音帧做合理的拉伸/压缩,可以有效的应付语音传输过程中突发的延时、抖动和丢包等状况,从而保证语音在创术过程中的质量。图1是根据本发明实施例的语音数据的调整方法的流程图,如图1所示,该流程包括如下步骤:

步骤S102,获取待处理的语音数据中指定帧的参数信息,以及指定帧的第一目标拉伸或压缩长度;

在本实施例中,指定帧可以为整个待处理语音数据中的任意帧,在刚开始处理语音数据时,指定帧为语音数据中按序排列的第一帧,指定帧的参数信息即表示该指定帧自身参数的信息,如,基音周期、第一帧长度、第一修正值,其中第一帧长度表示该指定帧的帧长,第一修正值表示该指定帧帧长的可计算误差,每一帧的修正值在调整前可以默认为0,每一帧的修正值在整个语音数据的帧间可以传递,第一目标拉伸或压缩长度表示该指定帧需要拉伸或压缩的长度,可以预先设置或通过计算得出,在本实施例中,帧长,修正值和基音周期的单位以本领域使用广泛的单位“点”来表示。

步骤S104,计算第一目标拉伸或压缩长度和第一修正值的和得到第二目标拉伸或压缩长度;

可选的,第二目标拉伸或压缩长度表示考虑到修正值后该指定帧的实际需要拉伸或压缩的长度,如第一目标拉伸长度为100点,第一修正值为-20点,则通过计算可以得出实际只需要拉伸80点,由于每帧拉伸或压缩的长度与指定帧的自身参数相关,只能以基音周期的长度为单位进行调整,在每一帧调整过程中,会产生误差,通过将上一帧的误差通过修正值的方式传递到下一帧,有效地将整个语音数据的调整误差降到最小值。

步骤S106,依据第二目标拉伸或压缩长度和基音周期计算得到调整参数,其中,调整参数用于指示对指定帧进行拉伸或压缩的长度;

指定帧的调整参数根据指定帧的调整类型,即,是进行拉伸还是压缩,拉伸或压缩的长度,指定帧的第一帧长度相关,在指定帧通过计算可以只用调整一次就能实现目标调整时,调整参数表示本次拉伸或压缩的长度,而当指定帧需要拉伸多次才能实现目标调整时,调整参数则表示拉伸的次数,每一次需要拉伸的长度。

步骤S108,依据调整参数对指定帧的长度进行调整得到第二帧长度和第二修正值,并根据第二修正值更新执行拉伸或压缩操作的指定帧的下一帧的修正值。

可选的,第二帧长度为该指定帧调整后的长度,第二修正值表示该指定帧的调整误差,通过将上一帧的调整误差以修正值的方式在帧间将其传递到下一帧,解决了相关技术中以整个语音数据为单位进行调整时误差较大的技术问题。

通过本发明,采用获取待处理的语音数据中指定帧的参数信息,以及指定帧的第一目标拉伸或压缩长度,其中,指定帧的参数信息包括:基音周期、第一帧长度、第一修正值,然后计算第一目标拉伸或压缩长度和第一修正值的和得到第二目标拉伸或压缩长度,依据第二目标拉伸或压缩长度和基音周期计算得到调整参数,其中,调整参数用于指示对指定帧进行拉伸或压缩的长度,依据调整参数对指定帧的长度进行调整得到第二帧长度和第二修正值,并根据第二修正值更新执行拉伸或压缩操作的指定帧的下一帧的修正值,通过整个待处理的语音数据的每一帧进行逐帧迭代的调整方式,上一帧的调整结果影响下一帧的调整比例,解决了相关技术中每帧拉伸/压缩比例相同,不能实时改变,且拉伸/压缩比例受限,不能从整体上把控的技术问题,进而达到了通过实时改变每帧的拉伸/压缩比例来补偿语音数据在传输通信中的一些突发状况(如,抖动、丢包、延迟)而提高整个语音质量的技术效果,有效减小了恶劣网络环境对语音质量的影响。

在根据本实施例的可选实施方式中,当调整参数指示对指定帧进行拉伸处理时,依据调整参数对指定帧的长度进行调整得到第二帧长度包括:

S11,根据第一帧长度和第二目标拉伸长度对指定帧进行调整得到第一子帧长度;

S12,计算第一子帧长度减去第一帧长度得到第一差值;

S13,判断第一目标拉伸长度减去第一差值得到的第二差值是否大于0;

S14,在判断结果为否时,确定第一子帧长度为第二帧长度;

在本实施例中,当通过第一帧长度和第二目标长度对指定帧第一次调整得到第一子帧长度后,如果第一子帧的长度和目标要拉伸到的长度的差值过大,则需要再进行再次拉伸处理,具体通过先计算得到第一次拉伸长度,然后再判断第一目标拉伸长度减去第一次拉伸长度的差值,如果差值小于或等于0,如果第一次拉伸长度达到了或超过了第一目标拉伸长度,则将第一次拉伸的结果作为该指定帧的拉伸结果,并继续调整下一帧。

在根据本实施例的可选实施方式中,还存在另外一种情况,在判断第一目标拉伸长度减去第一差值得到的第二差值大于0时,根据第一子帧长度和第三目标拉伸长度对第一子帧长度对应的帧进行调整得到第二帧长度,其中,第三目标拉伸长度为第二差值和基音周期的差值的绝对值。在本实施例中,通过第一次拉伸没有达到指定帧的拉伸要求,没有得到第二帧长度的帧,需要继续拉伸,但是,此次拉伸的目标长度会在第一次拉伸的基础上较少,具体为第二差值和基音周期的差值的绝对值,将该绝对值作为第三目标拉伸长度,进行第二次拉伸,得到该指定帧最终的第二帧长度。

在根据本实施例的可选实施方式中,依据第二目标拉伸或压缩长度和基音周期计算得到调整参数具体可通过以下算法实现,包括:

S21,将第二目标拉伸或压缩长度除以基音周期得到商值;

S22,比较商值和1的大小;

S23,若商值大于或等于1,将小于或等于商值的最大正整数作为调整基数;若商值小于1,则将1作为调整基数;

S24,将基音周期和调整基数的乘积设置为调整参数。

在本实施例中,以第二目标拉伸长度为160点,进行举例说明,如果基音周期为50点,则通过计算得到商值为3.2,大于或等于1,则采用第一套算法,先得到小于或等于3.2的最大正整数3,将该最大正整数和基音周期相乘得到调整参数150;如果基音周期为200点,则通过计算得到商值为0.8,小于1,则采用另外一套算法,直接将1和基音周期相乘得到调整参数200。

在根据本实施例的可选实施方式中,在步骤S106将基音周期和调整基数的乘积设置为调整参数之后,还可以包括:

S31,比较调整参数和第一帧长度的大小;

S32,若调整参数大于第一帧长度,则用第一帧长度更新调整参数。

在本实施例中,可能会因为调整参数过大而导致无法对指定帧进行调整,或者调整效果不好的问题,此时就需要调节调整参数,具体可根据当前指定帧的第一帧长度来调节,如调 整参数为150点,第一帧长度为120点,通比较发现调整参数的长度大于第一帧的长度,则将120更新为调整参数。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM或RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例的方法。

在本实施例中还提供了一种语音数据的调整装置,该装置可设置在可以处理或传输语音数据的设备中,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和或或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图2是根据本发明实施例的语音数据的调整装置的结构框图,如图2所示,该装置包括:获取模块20、第一计算模块22、第二计算模块24、处理模块26,其中,

获取模块20,用于获取待处理的语音数据中指定帧的参数信息,以及指定帧的第一目标拉伸或压缩长度,其中,指定帧的参数信息包括:基音周期、第一帧长度、第一修正值;

在本实施例中,指定帧可以为整个待处理语音数据中的任意帧,在刚开始处理语音数据时,指定帧为语音数据中按序排列的第一帧,指定帧的参数信息即表示该指定帧自身参数的信息,如,基音周期、第一帧长度、第一修正值,其中第一帧长度表示该指定帧的帧长,第一修正值表示该指定帧帧长的可计算误差,每一帧的修正值在调整前可以默认为0,每一帧的修正值在整个语音数据的帧间可以传递,第一目标拉伸或压缩长度表示该指定帧需要拉伸或压缩的长度,可以预先设置或通过计算得出,在本实施例中,帧长,修正值和基音周期的单位以本领域使用广泛的单位“点”来表示。

第一计算模块22,与获取模块20耦合连接,用于计算第一目标拉伸或压缩长度和第一修正值的和得到第二目标拉伸或压缩长度;

可选的,第二目标拉伸或压缩长度表示考虑到修正值后该指定帧的实际需要拉伸或压缩的长度,如第一目标拉伸长度为100点,第一修正值为-20点,则通过计算可以得出实际只需要拉伸80点,由于每帧拉伸或压缩的长度与指定帧的自身参数相关,只能以基音周期的长度为单位进行调整,在每一帧调整过程中,会产生误差,通过将上一帧的误差通过修正值的方式传递到下一帧,有效地将整个语音数据的调整误差降到最小值。

第二计算模块24,与第一计算模块22耦合连接,用于依据第二目标拉伸或压缩长度和基音周期计算得到调整参数,其中,调整参数用于指示对指定帧进行拉伸或压缩的长度;

指定帧的调整参数根据指定帧的调整类型,即,是进行拉伸还是压缩,拉伸或压缩的长 度,指定帧的第一帧长度相关,在指定帧通过计算可以只用调整一次就能实现目标调整时,调整参数表示本次拉伸或压缩的长度,而当指定帧需要拉伸多次才能实现目标调整时,调整参数则表示拉伸的次数,每一次需要拉伸的长度。

处理模块26,与第二计算模块24耦合连接,用于依据调整参数对指定帧的长度进行调整得到第二帧长度和第二修正值,并根据第二修正值更新执行拉伸或压缩操作的指定帧的下一帧的修正值。

可选的,第二帧长度为该指定帧调整后的长度,第二修正值表示该指定帧的调整误差,通过将上一帧的调整误差以修正值的方式在帧间将其传递到下一帧,解决了相关技术中以整个语音数据为单位进行调整时误差较大的技术问题。

图3是根据本发明实施例的语音数据的调整装置的可选结构框图一,如图3所示,该装置除包括图2所示的所有模块外,处理模块26还包括:第一调整单元30、第一计算单元32、判断单元34、确定单元36,其中,

第一调整单元30,用于当调整参数指示对指定帧进行拉伸处理时,根据第一帧长度和第二目标拉伸长度对指定帧进行调整得到第一子帧长度;

第一计算单元32,与第一调整单元30耦合连接,用于计算第一子帧长度减去第一帧长度得到第一差值;

判断单元34,与第一计算单元32耦合连接,用于判断第一目标拉伸长度减去第一差值得到的第二差值是否大于0;

确定单元36,与判断单元34耦合连接,用于在判断结果为否时,确定第一子帧长度为第二帧长度;

在本实施例中,当通过第一帧长度和第二目标长度对指定帧第一次调整得到第一子帧长度后,如果第一子帧的长度和目标要拉伸到的长度的差值过大,则需要再进行再次拉伸处理,具体通过先计算得到第一次拉伸长度,然后再判断第一目标拉伸长度减去第一次拉伸长度的差值,如果差值小于或等于0,如果第一次拉伸长度达到了或超过了第一目标拉伸长度,则将第一次拉伸的结果作为该指定帧的拉伸结果,并继续调整下一帧。

图4是根据本发明实施例的语音数据的调整装置的可选结构框图二,如图4所示,该装置除包括图3所示的所有模块外,处理模块26还包括:第二调整单元40,与判断单元34偶偶和连接,用于在判断结果为是时,根据第一子帧长度和第三目标拉伸长度对第一子帧长度对应的帧进行调整得到第二帧长度,其中,第三目标拉伸长度为第二差值和基音周期的差值的绝对值。

在本实施例中,通过第一次拉伸没有达到指定帧的拉伸要求,没有得到第二帧长度的帧,需要继续拉伸,但是,此次拉伸的目标长度会在第一次拉伸的基础上较少,具体为第二差值和基音周期的差值的绝对值,将该绝对值作为第三目标拉伸长度,进行第二次拉伸,得到该 指定帧最终的第二帧长度。

图5是根据本发明实施例的语音数据的调整装置的可选结构框图三,如图5所示,该装置除包括图2所示的所有模块外,第二计算模块24包括:第二计算单元50,用于将第二目标拉伸或压缩长度除以基音周期得到商值;第一比较单元52,用于比较商值和1的大小;第一设置单元54,用于若商值大于或等于1,将小于或等于商值的最大正整数设置为调整基数;或,用于若商值小于1,则将1设置为调整基数;第二设置单元56,用于将基音周期和调整基数的乘积设置为调整参数。

在本实施例中,以第二目标拉伸长度为160点,进行举例说明,如果基音周期为50点,则通过计算得到商值为3.2,大于或等于1,则采用第一套算法,先得到小于或等于3.2的最大正整数3,将该最大正整数和基音周期相乘得到调整参数150;如果基音周期为200点,则通过计算得到商值为0.8,小于1,则采用另外一套算法,直接将1和基音周期相乘得到调整参数200。

图6是根据本发明实施例的语音数据的调整装置的可选结构框图四,如图6所示,该装置除包括图5所示的所有模块外,第二计算模块还包括:第二比较单元60,用于在第二设置单元56将基音周期和调整基数的乘积设置为调整参数之后,比较调整参数和第一帧长度的大小;更新单元62,用于若调整参数大于第一帧长度,则用第一帧长度更新调整参数。

在本实施例中,可能会因为调整参数过大而导致无法对指定帧进行调整,或者调整效果不好的问题,此时就需要调节调整参数,具体可根据当前指定帧的第一帧长度来调节,如调整参数为150点,第一帧长度为120点,通比较发现调整参数的长度大于第一帧的长度,则将120更新为调整参数。

下面结合根据本发明的可选实施例,结合不同的调整情况,对本方案进行详细说明。

图7是根据本发明可选实施例的调整语音数据的流程示意图,如图7所示,开始流程后,输入待处理的语音数据到缓存中,判断是否需要调整语音数据,如果否,则结果,如果是,则计算获得基音周期和拉伸/压缩的参数,并进行拉伸/压缩,最后输出调整后的语音数据。

为了便于理解,下面可选的拉伸示例和压缩示例中,使用业界广泛使用的专有名词,其中,

PitchTime:基音周期;

FrameTag:目标点数,即需要拉伸/压缩的点数;(相当于第一目标拉伸/压缩长度)

TagRES:目标点数修正值,在帧间传递信息;(相当于修正值)

OptLength:本次拉伸/压缩的点数;(相当于调整参数)

DataLength:当前数据长度;(相当于第一帧长度)

OptRatio:拉伸/压缩比例。(可通过比例计算得到FrameTag)

图8是根据本发明可选实施例的拉伸操作流程图,如图8所示,包括以下步骤:

S71、计算得到信号的基音周期PitchTime;

S72、根据需要拉伸比例OptRatio及帧间信息(如拉伸点数修正值TagRES)计算本帧目标拉伸点数FrameTag,此时当前数据长度DataLength为本帧的数据长度FrameLength;

S73、根据PitchTime,和FrameTag计算得到本次拉伸点数OptLength;

S74、如果计算的到OptLength过大(大于等于原始数据长度)或过小(小于等于0),那么需要用基音周期PitchTime对OptLength修正;

S75、根据DataLength和OptLength对数据进行帧扩展;

S76、用DataLength加上OptLength更新DataLength。用FrameTag减去OptLength来得到新的FrameTag。如果FrameTag小于等于0,则拉伸结束,否则循环上述操作S73~S76直到拉伸结束;

S77、用本帧的拉伸结果与预期结果的偏差值来修正帧间信息如TagRES。

拉伸实例1:

图9是根据本发明可选实施例的拉伸示意图一,如图9所示,说明了基音周期为100、帧长为160的信号拉伸出160个点信号的情况。

根据输入语音获得语音相关信息:TagRES=0,PitchTime=100,FrameTag=160,DataLength=160。

首先依据TagRES更新FrameTag=160,再根据PitchTime和FrameTag计算得到OptLength=100。

接着对数据进行第一次帧扩展。因为此时OptLength大于整个序列长度DataLength的一半,所以取两段分别位于源数据首部和尾部的数据长度为60个点的做平滑。即首先将原始数据s的第1个到第100个点复制到拉伸后语音s′的第1个到第100个点。然后将原始数据s的第1个到第60个点和第101个点到第160个点做平滑后得放到拉伸后语音s′的第101个到第160个点。然后将原始数据s的第61个到第160个点直接复制到拉伸后语音s′的第161个到第260个点。

第一次帧扩展结束后,DataLength=260。FrameTag=60。

因为FrameTag大于0,没有达到拉伸要求,所以需要进行第二次帧扩展。

由FrameTag和PitchTime得到OptLength=100。

然后对数据进行第二次帧扩展。此时OptLength小于整个序列长度DataLength的一半,故将源数据首部开始的连续两段长度为OptLength的数据做平滑。即首先先将原始数据s′的第1个到第100个点复制到拉伸后语音s″的第1个到第100个点。然后将语音数据s′的第1个到第100个点和第101个点到第200个点做平滑后得放到拉伸后语音s″的第101个到第200个点。最后将原始数据s′的第101个到第260个点直接拷贝到拉伸后语音s″的第200点之后。

第二次帧扩展结束后,DataLength=360。FrameTag=-40。

因为FrameTag小于等于0,所以不需要继续进行帧扩展了。

最后更新TagRES=-40。

可以发现最终拉伸后序列的长度是360,不是我们的想要的320,多拉伸了40个样点,但是TagRES已经记录下来。

拉伸实例2:

图10是根据本发明可选实施例的拉伸示意图二,如图10所示,该实例中,表示了基音周期为40、帧长为160的信号拉伸出150个点信号的情况。

根据输入语音获得语音相关信息:TagRES=-40,PitchTime=40,FrameTag=150,DataLength=160。

首先依据TagRES更新FrameTag=110,再根据PitchTime和FrameTag计算得到OptLength=80。

接着对数据进行第一次帧扩展,因为此时OptLength等于整个序列长度DataLength的一半,故将源数据首部开始的连续两段长度为OptLength的数据做平滑。即首先先将原始数据s′的第1个到第80个点复制到拉伸后语音s″的第1个到第80个点。然后将语音数据s′的第1个到第80个点和第81个点到第160个点做平滑后得放到拉伸后语音s″的第81个到第160个点。最后将原始数据s′的第81个到第160个点直接拷贝到拉伸后语音s″的第160点之后。

第一次帧扩展结束后,DataLength=240。FrameTag=30。

因为FrameTag大于0,没有达到拉伸要求,所以需要进行第二次帧扩展。

由FrameTag和PitchTime得到OptLength=0,因为OptLength至少等于PitchTime,所以OptLength=40。

然后对数据进行第二次帧扩展。此时OptLength小于整个序列长度DataLength的一半,故将源数据首部开始的连续两段长度为OptLength的数据做平滑。即首先先将原始数据s′的第1个到第40个点复制到拉伸后语音s″的第1个到第40个点。然后将语音数据s′的第1个到第40个点和第41个点到第80个点做平滑后得放到拉伸后语音s″的第41个到第80个点。最后将原始数据s′的第41个到第240个点直接拷贝到拉伸后语音s″的第80点之后。

第二次帧扩展结束后,DataLength=280。FrameTag=-10。

因为FrameTag小于等于0,所以不需要继续进行帧扩展了。

最后更新TagRES=-10。

本实例是紧跟拉伸实例1后一帧的信号拉伸情况。在拉伸实例1中,拉伸前序列的长度为160,需要拉伸160个点,实际拉伸后序列长度为360,在本实例中拉伸前序列长度为160,

需要拉伸出150个点,但实际拉伸后序列长度为280。

两次合并计算后,累计需要拉伸310个点,而实际拉伸后为360+280=640点,实际拉伸了320点,从整体上把控了拉伸/压缩比例。

图11是根据本发明可选实施例的压缩操作流程图。如图11所示,方法包括以下步骤:

S81、计算得到信号的基音周期PitchTime;

S82、根据需要压缩比例OptRatio及帧间信息(如压缩点数修正值TagRES)计算本帧目标压缩点数FrameTag,此时当前数据长度DataLength为本帧的的数据长度FrameLength;

S83、根据PitchTime,和FrameTag计算得到本次压缩点数OptLength。

S84、如果计算的到OptLength过大(如大于等于原始数据长度)或过小(如小于0),那么需要用PitchTime对OptLength修正。

S85、根据DataLength和OptLength对数据进行帧压缩;

S86、用本帧压缩结果与预期结果的偏差值来修正帧间信息如TagRES。

压缩实例1:

图12是根据本发明可选实施例的在不同基音周期下进行压缩的三种示意图,如题12所示,分别表示基音周期为40、60、100时的三种压缩示意图,其中,in表示原始数据,即处理前的数据,out表示压缩后的数据。

根据输入语音获得语音相关信息:TagRES=0,FrameTag=80,DataLength=160。

可选的,基音周期PitchTime为40时,可以计算得到OptLength=80。

接着对数据进行帧压缩。因为OptLength刚好等于整个序列长度DataLength的一半,所以将源数据前一半和后一半做平滑即可。即原始数据in1的第1个到第80个点和第81个点到第160个点做平滑后得到压缩后的语音out1。

帧压缩后,DataLength=80,TagRES=FrameTag-OptLength=0。

可选的,基音周期PitchTime为60时,可以计算得到OptLength=60。

接着对数据进行帧压缩。此时OptLength小于整个原始序列长度DataLength的一半,故将源数据首部开始的连续两段长度为OptLength的数据做平滑,然后将剩余的数据直接拷贝到平滑后的数据后面即可。即原始数据in2的第1个到第60个点和第61个点到第120个点做平滑后得放到压缩后的语音out2的第1个到第60个点。然后将原始数据in2的第121个到第160个点直接拷贝到语音out2的第60点之后。

帧压缩后,DataLength=100,TagRES=FrameTag-OptLength=20。

可选的,基音周期PitchTime为100时,可以计算得到OptLength=100。

接着对数据进行帧压缩。因为此时OptLength大于整个原始序列长度DataLength的一半,所以取两段分别位于源数据首部和尾部的数据长度为60个点的做平滑即可。即原始数据in3的第1个到第60个点和第101个点到第160个点做平滑后得放到压缩后的语音out3的第1个到第60个点。然后将原始数据in3的第61个到第100个点直接舍弃。

帧压缩后,DataLength=60,TagRES=FrameTag-OptLength=-20。

需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述模块分别位于多个处理器中。

本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的程序代码:

S1,获取待处理的语音数据中指定帧的参数信息,以及指定帧的第一目标拉伸或压缩长度;

S2,计算第一目标拉伸或压缩长度和第一修正值的和得到第二目标拉伸或压缩长度;

S3,依据第二目标拉伸或压缩长度和基音周期计算得到调整参数,其中,调整参数用于指示对指定帧进行拉伸或压缩的长度;

S4,依据调整参数对指定帧的长度进行调整得到第二帧长度和第二修正值,并根据第二修正值更新执行拉伸或压缩操作的指定帧的下一帧的修正值。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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