具体实施方式
针对现有技术中存在的问题,本发明中提出一种实现音频变调的方案,通过改变采样频率来改变音频信号的频率,并对改变频率后的音频信号进行数据复制和数据删除等处理,从而不但保持了音频信号的播放时间不变,而且有效地实现了升调和降调。
图1为本发明实现音频变调的方法实施例的流程图。如图1所示,包括以下步骤:
步骤11:根据接收到的变调模式d,确定变调因子α,并进一步确定将变调因子α用分数形式进行表示后的分子q和分母p。
本步骤中,用户可根据自身需要输入变调模式d,比如,+2或-5等;然后,系统通过查询表一,可确定出用户输入的变调模式d对应的变调因子α,以及将变调因子α用分数形式进行表示后的分子q和分母p。
d |
α |
q |
p |
-12 |
0.5 |
1 |
2 |
-11 |
0.529732 |
1461 |
2758 |
-10 |
0.561231 |
857 |
1527 |
-9 |
0.594604 |
1785 |
3002 |
-8 |
0.629961 |
635 |
1008 |
-7 |
0.667420 |
1477 |
2213 |
-6 |
0.707107 |
985 |
1393 |
-5 |
0.749154 |
2434 |
3249 |
-4 |
0.793701 |
504 |
635 |
-3 |
0.840896 |
1501 |
1785 |
-2 |
0.890899 |
1527 |
1714 |
-1 |
0.943874 |
1379 |
1461 |
0 |
1.0 |
1 |
1 |
1 |
1.05946 |
1461 |
1379 |
2 |
1.12246 |
1714 |
1527 |
3 |
1.18921 |
1785 |
1501 |
4 |
1.25992 |
635 |
504 |
5 |
1.33484 |
3249 |
2434 |
d |
α |
q |
p |
6 |
1.41421 |
1393 |
985 |
7 |
1.49831 |
2213 |
1477 |
8 |
1.58740 |
1008 |
635 |
9 |
1.68179 |
3002 |
1785 |
10 |
1.78180 |
1527 |
857 |
11 |
1.88775 |
2758 |
1461 |
12 |
2.0 |
2 |
1 |
表1变调模式d、变调因子α,以及分子q和分母p的对应关系
表1中的各取值均为本领域公认的经验值。当变调模式d取值为0时,表示不进行音频变调,即既不升调也不降调。
步骤12:基于q和p,对每一音频信号输入帧X进行时域上的重采样滤波。
图2为本发明方法实施例中的重采样滤波过程示意图。如图2所示,首先,对音频信号输入帧X进行p倍的线性插值;然后,将进行线性插值后的音频信号输入帧X通过低通滤波器进行低通滤波,低通滤波器的增益为p,截止频率为π/q和π/p中的较小值,之后,将进行低通滤波后的音频信号输入帧X进行q倍的采样。
经过本步骤的处理后,进行重采样滤波后的音频信号输入帧X的采样频率将变为音频信号输入帧X的采样频率的q/p倍。
步骤13:对进行重采样滤波后的音频信号输入帧X进行清、浊音判决,并确定进行重采样滤波后的音频信号输入帧X的基音周期。
人类的发音过程通常有三类不同的激励方式,因而能产生三类不同的声音,即浊音、清音和爆破音。当气流通过声门时声带的张力刚好使声带发生较低频率的张弛振动,形成准周期性的空气脉冲时,这些空气脉冲便激励声道产生“浊音”;如果声道中某处面积很小,气流高速冲过此处时产生湍流,当气流速度与横截面积之比大于某个门限(临界速度)时,便产生“摩擦音”,即“清音”;如果声道某处完全闭合建立起气压,然后突然释放而产生的声音就是爆破音。通常遇到最多的就是浊音和清音。
基音是指产生浊音时声带振动所引起的周期性,基音周期的倒数称为基音频率。
本步骤中,计算
其中,s(n)表示音频信号强度,N表示进行重采样滤波后的音频信号输入帧X的长度,τ表示延迟参数,为正整数,取值范围预先设定,通常,在8kHz的采样频率下,τ的取值范围为[20,140],具体确定方式为现有技术,不再赘述。
确定不同的τ对应的ρ(τ)中的最大值,并将该最大值与预先设定的阈值(经验值)进行比较,如果该最大值小于阈值,则确定进行重采样滤波后的音频信号输入帧X为清音帧,否则,为浊音帧,并将该最大值对应的延迟参数τ确定为进行重采样滤波后的音频信号输入帧X的基音周期。
步骤14:根据变调模式d确定需要升调还是降调,如果需要升调,则基于清、浊音判决结果,对进行重采样滤波后的音频信号输入帧X进行以基音周期为单位的数据复制处理,如果需要降调,则基于清、浊音判决结果,对进行重采样滤波后的音频信号输入帧X进行以基音周期为单位的数据删除处理。
如果步骤11中用户输入的变调模式d的取值大于0,则说明需要升调,如果变调模式d的取值小于0,则说明需要降调。
根据需要升调或降调的不同,后续采用不同的处理方式,下面结合附图,对升调和降调过程的具体实现分别进行详细说明。
图3为本发明方法实施例中的升调过程示意图。如图3所示,包括:
步骤31:将进行重采样滤波后的音频信号输入帧X平均分为4个子块,确定进行重采样滤波后的音频信号输入帧X是否为突变帧,并记录下发生突变的子块位置。
本步骤中,计算每个子块的能量,并比较每两个相邻子块的能量大小,如果存在突变,即存在后一子块的能量为与其相邻的前一子块的能量的12倍的情况,则确定进行重采样滤波后的音频信号输入帧X为突变帧,并记录下发生突变的子块位置,比如第4子块的能量是第3子块的能量的12倍,则记录下发生突变的子块位置为第4子块。通常一帧中只会发生一次突变。
如何计算每个子块的能量为现有技术,不再赘述。
步骤32:将进行重采样滤波后的音频信号输入帧X拼接在所保存的超出前一音频信号输出帧长度的数据之后。
前一音频信号输出帧是指紧邻音频信号输入帧X的前一音频信号输入帧对应的经过变调后的音频信号输出帧。
步骤33:计算需要复制的数据的长度CL。
CL=OutLen-(OL+InLen),其中,InLen表示进行重采样滤波后的音频信号输入帧X的长度,OutLen表示音频信号输入帧X对应的音频信号输出帧X’的长度,
符号
表示向下取整,OL表示所保存的超出前一音频信号输出帧长度的数据的长度,初始值设置为0。
步骤34:确定CL是否大于0,如果是,则执行步骤35,否则,执行步骤311。
步骤35:如果进行重采样滤波后的音频信号输入帧X为浊音帧,则根据CL以及基音周期,计算需复制基音周期的个数R,然后执行步骤36,如果为清音帧,则执行步骤310。
步骤36:如果进行重采样滤波后的音频信号输入帧X为突变帧,且发生突变的子块位置为第4子块,则执行步骤37,如果发生突变的子块位置不是第4子块,则执行步骤38。
步骤37:以第3子块的结束位置作为复制起始点,将位于该复制起始点之前,且紧邻该复制起始点的基音周期数据作为复制源,进行R次复制,并将第4子块的数据拼接在复制的基音周期数据之后,之后,将本步骤中拼接后的数据进一步拼接在步骤32中拼接后的数据之后,然后执行步骤39。
步骤38:以第4子块的结束位置作为复制起始点,将位于该复制起始点之前,且紧邻该复制起始点的基音周期数据作为复制源,进行R次复制,并将复制的基音周期数据拼接在步骤32中拼接后的数据之后,然后执行步骤39。
步骤39:计算当前拼接出的数据超出音频信号输出帧X’的长度OL,然后执行步骤312。
OL=R*pitch-CL,其中,pitch表示基音周期。音频信号输出帧X’表示音频信号输入帧X对应的音频信号输出帧。
本实施例中,在针对每一音频信号输入帧进行处理时,均需要用本次生成的OL替换之前所保存的处理前一音频信号输入帧时生成的OL。
步骤310:以第4子块的结束位置作为复制起始点,复制该复制起始点之前,且紧邻该复制起始点的长度为CL的数据,并将复制的长度为CL的数据拼接在步骤32中拼接后的数据之后,然后将OL设置为0,之后执行步骤313。
由于本步骤中复制的数据长度就是步骤33中计算出的需要复制的数据长度,所以OL的取值将为0。
步骤311:将OL设置为CL的相反数,然后执行步骤312。
本步骤中,将OL设置为-CL。
步骤34中提到,如果步骤33中计算出的需要复制的数据长度CL小于0(等于0可按任一方式进行处理),则执行步骤311,而CL小于0,说明步骤32中拼接后的数据长度已经超出音频信号输出帧X’的长度,超出的长度即为CL的相反数(因为CL为负数)。
步骤312:将超出音频信号输出帧X’长度的数据进行保存,然后执行步骤313。
步骤313:输出音频信号输出帧X’,即升调后的音频信号。
图4为本发明方法实施例中的降调过程示意图。如图4所示,包括:
步骤41:将进行重采样滤波后的音频信号输入帧X平均分为4个子块,确定进行重采样滤波后的音频信号输入帧X是否为突变帧,并记录下发生突变的子块位置。
本步骤中,计算每个子决的能量,并比较每两个相邻子块的能量大小,如果存在突变,即存在后一子块的能量为与其相邻的前一子块的能量的12倍的情况,则确定进行重采样滤波后的音频信号输入帧X为突变帧,并记录下发生突变的子块位置。
如何计算每个子块的能量为现有技术,不再赘述。
步骤42:计算需要删除的数据的长度DL。
DL=InLen-OutLen,其中,InLen表示进行重采样滤波后的音频信号输入帧X的长度,OutLen表示音频信号输入帧X对应的音频信号输出帧X’的长度,
符号
表示向下取整。
步骤43:如果进行重采样滤波后的音频信号输入帧X为浊音帧,则根据DL以及基音周期,计算需复制基音周期的个数R,然后执行步骤44,如果为清音帧,则执行步骤47。
步骤44:如果进行重采样滤波后的音频信号输入帧X不是突变帧,则执行步骤45,否则,执行步骤46。
步骤45:将距离进行重采样滤波后的音频信号输入帧X的起始点长度为已保存的SL的位置作为音频信号输出帧X’的起始点,输出长度为OutLen的数据,OutLen表示音频信号输入帧X对应的音频信号输出帧X’的长度,删除未输出的其余数据(起始点之前和输出终点之后的数据),然后计算新的SL,并利用新计算出的SL更新已保存的SL,之后执行步骤48。
SL=old_SL+R*pitch-DL,其中,old_SL表示已保存的SL,初始值设置为0。
步骤46:基于DL和发生突变的子块位置,确定音频信号输出帧X’的起始点,输出长度为OutLen的数据,删除未输出的其余数据,并将已保存的SL设置为0,之后执行步骤48。
本步骤中,如果发生突变的子块位置距离进行重采样滤波后的音频信号输入帧X的起始点的距离小于DL,则以进行重采样滤波后的音频信号输入帧X的起始点作为音频信号输出帧X’的起始点,否则,以距离进行重采样滤波后的音频信号输入帧X的起始点DL的位置作为音频信号输出帧X’的起始点。
步骤47:将进行重采样滤波后的音频信号输入帧X的起始点作为音频信号输出帧X’的起始点,输出长度为OutLen的数据,删除未输出的其余数据,并将已保存的SL设置为0,之后执行步骤48。
步骤48:利用低通滤波器对音频信号输出帧X’进行低通滤波。
低通滤波器的截止频率为音频信号输入帧X的采样频率的0.5*q/p倍,音频信号输入帧X的采样频率为已知的。通过本步骤的处理,可滤除超出降调后带宽的频谱。
至此,即完成了本发明方法实施例所示流程。
图5为本发明实现音频变调的装置实施例的组成结构示意图。如图5所示,包括:
确定单元51,用于根据接收到的变调模式d,确定变调因子α,并进一步确定将变调因子α用分数形式进行表示后的分子q和分母p;
处理单元52,用于针对每一音频信号输入帧X,分别进行以下处理:
基于q和p,对音频信号输入帧X进行时域上的重采样滤波;
对进行重采样滤波后的音频信号输入帧X进行清、浊音判决,并确定进行重采样滤波后的音频信号输入帧X的基音周期;
根据变调模式d确定需要升调还是降调,如果需要升调,则基于清、浊音判决结果,对进行重采样滤波后的音频信号输入帧X进行以基音周期为单位的数据复制处理,如果需要降调,则基于清、浊音判决结果,对进行重采样滤波后的音频信号输入帧X进行以基音周期为单位的数据删除处理。
其中,处理单元52中可具体包括:
重采样滤波子单元521,用于对音频信号输入帧X进行p倍的线性插值,将进行线性插值后的音频信号输入帧X通过低通滤波器进行低通滤波,低通滤波器的增益为p,截止频率为π/q和π/p中的较小值,将进行低通滤波后的音频信号输入帧X进行q倍的采样;
判决子单元522,用于计算
其中,s(n)表示音频信号强度,N表示进行重采样滤波后的音频信号输入帧X的长度,τ表示延迟参数,为正整数,取值范围预先设定;确定不同的延迟参数τ对应的ρ(τ)中的最大值,并将最大值与预先设定的阈值进行比较,如果最大值小于阈值,则确定进行重采样滤波后的音频信号输入帧X为清音帧,否则,为浊音帧,并将最大值对应的延迟参数τ确定为进行重采样滤波后的音频信号输入帧X的基音周期;
确定子单元523,用于根据变调模式d确定需要升调还是降调,如果变调模式d的取值大于0,则确定需要升调,如果变调模式d的取值小于0,则确定需要降调;
变调子单元524,用于当确定需要升调时,基于清、浊音判决结果,对进行重采样滤波后的音频信号输入帧X进行以基音周期为单位的数据复制处理,当确定需要降调时,基于清、浊音判决结果,对进行重采样滤波后的音频信号输入帧X进行以基音周期为单位的数据删除处理。
变调子单元524中又可进一步包括(为简化附图,未图示):
升调子单元,用于基于清、浊音判决结果,对进行重采样滤波后的音频信号输入帧X进行以基音周期为单位的数据复制处理,包括:
A1、将进行重采样滤波后的音频信号输入帧X平均分为4个子块,并计算每个子块的能量,比较每两个相邻子块的能量大小,如果存在突变,即存在后一子块的能量为与其相邻的前一子块的能量的12倍的情况,则确定进行重采样滤波后的音频信号输入帧X为突变帧,并记录下发生突变的子块位置;
A2、将进行重采样滤波后的音频信号输入帧X拼接在所保存的超出前一音频信号输出帧长度的数据之后,前一音频信号输出帧为紧邻音频信号输入帧X的前一音频信号输入帧对应的音频信号输出帧;
A3、计算需要复制的数据的长度CL;
A4、确定CL是否大于0,如果是,则执行步骤A5,否则,执行步骤A11;
A5、如果进行重采样滤波后的音频信号输入帧X为浊音帧,则根据CL以及基音周期,计算需复制基音周期的个数R,然后执行步骤A6,如果为清音帧,则执行步骤A10;
A6、如果进行重采样滤波后的音频信号输入帧X为突变帧,且发生突变的子块位置为第4子块,则执行步骤A7,如果发生突变的子块位置不是第4子块,则执行步骤A8;
A7、以第3子块的结束位置作为复制起始点,将位于复制起始点之前,且紧邻复制起始点的基音周期数据作为复制源,进行R次复制,并将第4子块的数据拼接在复制的基音周期数据之后,之后,将本步骤中拼接后的数据进一步拼接在步骤A2中拼接后的数据之后,然后执行步骤A9;
A8、以第4子块的结束位置作为复制起始点,将位于复制起始点之前,且紧邻复制起始点的基音周期数据作为复制源,进行R次复制,并将复制的基音周期数据拼接在步骤A2中拼接后的数据之后,然后执行步骤A9;
A9、计算当前拼接出的数据超出音频信号输出帧X’的长度OL,然后执行步骤A12;
A10、以第4子块的结束位置作为复制起始点,复制复制起始点之前,且紧邻复制起始点的长度为CL的数据,并将复制的长度为CL的数据拼接在步骤A2中拼接后的数据之后,降OL设置为0,之后执行步骤A13;
A11、将OL设置为CL的相反数,然后执行步骤A12;
A12、将超出音频信号输出帧X’长度的数据进行保存,然后执行步骤A13;
A13、输出升调后的音频信号输出帧X’;
降调子单元,用于基于清、浊音判决结果,对进行重采样滤波后的音频信号输入帧X进行以基音周期为单位的数据删除处理,包括:
B1、将进行重采样滤波后的音频信号输入帧X平均分为4个子块,并计算每个子块的能量,比较每两个相邻子块的能量大小,如果存在突变,即存在后一子块的能量为与其相邻的前一子块的能量的12倍的情况,则确定进行重采样滤波后的音频信号输入帧X为突变帧,并记录下发生突变的子块位置;
B2、计算需要删除的数据的长度DL;
B3、如果进行重采样滤波后的音频信号输入帧X为浊音帧,则根据DL以及基音周期,计算需复制基音周期的个数R,然后执行步骤B4,如果为清音帧,则执行步骤B7;
B4、如果进行重采样滤波后的音频信号输入帧X不是突变帧,则执行步骤B5,否则,执行步骤B6;
B5、将距离进行重采样滤波后的音频信号输入帧X的起始点长度为已知的SL的位置作为音频信号输出帧X’的起始点,输出长度为OutLen的数据,OutLen表示音频信号输入帧X对应的音频信号输出帧X’的长度,删除未输出的其余数据,然后计算新的SL,利用新计算的SL更新已保存的SL,之后执行步骤B8;
B6、基于DL和发生突变的子块位置,确定音频信号输出帧X’的起始点,输出长度为OutLen的数据,删除未输出的其余数据,并将已保存的SL设置为0,之后执行步骤B8;
B7、将进行重采样滤波后的音频信号输入帧X的起始点作为音频信号输出帧X’的起始点,输出长度为OutLen的数据,删除未输出的其余数据,并将已保存的SL设置为0,之后执行步骤B8;
B8、利用低通滤波器对音频信号输出帧X’进行低通滤波,低通滤波器的截止频率为音频信号输入帧X的采样频率的0.5*q/p倍。
图5所示装置实施例的具体工作流程请参照图1所示方法实施例中的相应说明,不再赘述。
总之,采用本发明的技术方案,有效地实现了音频信号的升调和降调。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。