一种语音数据的去混响方法及装置技术领域
本发明属于通讯领域,尤其基于移动通讯设备的音频处理技术。
背景技术
众所周知,麦克风接收的信号易受到环境混响的影响。比如房间内,语音经过墙壁、天花板以及地面等反射,麦克风接收到的信号是直达的声音信号和反射声音信号的混合信号。混响会导致语音质量下降,在语音识别场景中会使系统性能显著下降。
现有的去混响方法主要是基于反卷积方法来实现。其中一类方法需要提前知道混响环境的冲击响应或传递函数,然后利用这个传递函数构造一个反向滤波器来恢复原始无混响信号。显然,提前获取混响环境传递函数使该类方法在实际应用中受到很大限制。另一类是基于盲反卷积的方法,该类方法试图利用混响语音信号估计出环境传递函数进而通过反卷积运算实现去混响,该类方法需要进行环境传递函数盲估计等操作,计算强度非常大。
已有技术中,申请号200810040707.X、名为“基于维纳滤波的语音去混响的消减方法”的专利,提出一种基于维纳滤波来实现的去混响方法。该方法需进行两次反卷积运算,首先利用预存的“喂”、“Hi”等纯净语音,通过维纳滤波反卷积运算得到混响环境的冲击响应,然后利用得到的混响环境冲击响应估计逆滤波器,对混响语音进行反卷积运算获得去混响的语音信号。该方法无需提前预知混响环境的冲击响应,且计算强度远低于盲反卷积方法。但是由于该方法利用维纳滤波反卷积计算混响环境冲击响应时,需依赖预存的纯净音,使得其应用场景受到很大的限制。
申请号201310398174.3、名为“一种音频混响的抑制装置及其抑制方法”的专利,提出一种基于谱减思想的去混响方法。该方法需要先对混响时间进行估算,然后利用混响时间建立混响统计模型从而得到混响功率谱,再基于功率谱构建谱减函数,最后将经过谱减函数处理得到的前期语音输入复倒谱域滤波模块得到去混响语音。该方法无需进行盲反卷积,但增加了混响时间估计、混响统计模型建立、复倒谱域滤波等操作,计算强度较高。
发明内容
本发明目的在于提供一种语音数据的去混响方法,旨在频域对混响语音进行谱减操作以消除混响干扰,从而解决去混响中依赖环境传递函数以及计算复杂度较高的问题。
为了实现上述发明目的,本发明的一种语音数据的去混响方法,主要包括以下步骤:步骤a:对当前语音帧数据 进行快速傅里叶变换后,将得到的频谱系数进行复功率计算,其中;步骤b:利用所述复功率谱计算谱减增益函数,在频域中利用所述谱减增益函数对混响成分进行抑制;步骤c: 快速傅里叶逆变换,得到时域的去除混响的加窗语音帧数据,并进行幅值补偿处理;步骤d:语音帧输出处理。
优选的,上述步骤b之前还包括以下操作:将复功率谱与所述当前帧的距离在设置的时长范围内某一帧的复功率谱进行平滑处理,得到当前帧复功率谱。
优选的,上述当前帧的谱减增益函数计算公式为:,其中,为到当前帧的距离在设置的时长范围内其中一帧的复功率谱,为谱减增益计算系数。
优选的,上述谱减增益计算系数可通过以下公式进行计算:,其中,取值范围为[0.02, 0.1], , 取值范围为(0, 2.5]。
优选的,上述选为0.06,选为1.25,进而计算得为0.5152, 选取所述当前帧的前面第二帧的复功率谱。
优选的,对所述谱减增益函数进行平滑处理,得到均值谱减增益函数。利用上述均值谱减增益函数对混响成分进行谱减处理:,为去除混响成分后的频谱, 其后对进行傅里叶逆变换:。
优选的,在上述步骤a中,如果采用了非矩形窗的加窗分帧处理,则需进行幅值补偿处理:,其中,为去除混响的加窗语音帧数据,为加窗幅值补偿系数,为幅值补偿后得到的去混响语音帧数据。
优选的,步骤a中,如果采用了矩形窗的加窗分帧处理,需要再次进行加窗处理。
此外,本发明也提供一种语音数据的去混响装置,旨在频域对混响语音进行谱减操作以消除混响干扰,主要包括:加窗分帧预处理单元、快速傅里叶变换单元、复功率谱计算单元、谱减增益计算单元、谱减处理单元、快速傅里叶逆变换单元、幅值补偿单元,以及输出处理单元,其中,该复功率谱计算单元用于进行复功率谱的计算,以及对所述复功率谱进行平滑处理。
优选的,谱减增益计算单元实现谱减增益函数的计算,以及对该谱减增益函数进行平滑处理得到均值的谱减增益函数,谱减增益函数的计算为:,其中,为当前帧的谱减增益函数,为到当前帧的距离在设置的时长范围内某帧的复功率谱,为当前帧复功率谱,为谱减增益计算系数,可通过下式进行计算:,取值范围为[0.04, 0.08],,取值范围为[0.5, 2.5]。
优选的,谱减处理单元负责在频域消除混响成分,即通过以下公式进行处理: ,其中, 为谱减增益函数,为快速傅里叶变换得到的频谱,为去除混响成分后的频谱。
本发明披露的一种语音数据的去混响方法和装置,其仅利用计算当前帧以及到当前帧的距离在设置的时长范围内若干帧的复功率谱得到的谱减增益函数,对混响语音进行谱减处理,实现语音混响成分的去除。此外,本发明方法无需环境及信号的先验知识,无应用场景限制,且计算强度较低,易于实现并可用于实时传输场合。
附图说明
图1为本发明去混响方法的去除语音混响的流程框图;
图2为本发明去混响装置中实现去除语音混响的功能模块图;
图3为混响语音时域波形图;
图4为本发明实施例中去除混响后的语音时域波形图;
图5为混响语音的语谱图;
图6为本发明实施例中去除混响语音的语谱图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明实施例中的技术方案进行清楚、完整的描述。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域的技术人员所获得的所有其他实施例都属于本发明保护的范围。
本发明基本原理是:基于谱减思想的语音去混响新方法,即通过在频域对混响语音数据进行复功率谱计算,对平滑后的复功率谱进行加权及平均处理得到谱减增益函数,将该谱减增益函数施加于语音帧频谱,频谱中的混响成分可以得到较好去除。将去除混响的频域数据转换到时域,得到去除混响的语音数据。
图1为本发明去混响方法的去除语音混响的流程框图。下面结合图1,对本发明方法的具体实施步骤作进一步描述。
步骤1 加窗分帧预处理:
从MIC采集语音信号,该语音信号包含说话者的直达音,也包含经过墙壁、天花板等反射传入MIC的反射音,二者共同构成待处理混响语音。对输入语音数据进行分帧处理,通过加窗处理得到待处理的语音帧数据:
其中,为窗函数。窗函数是用于对信号进行截断的截取函数,常用的窗函数包括汉明窗、海宁窗、高斯窗、矩形窗等等。不同的窗函数对信号频谱的影响也不同,需要根据具体应用场景选择合适的窗函数。本发明实施实例中此处选用矩形窗对语音信号进行截断处理。
对语音信号加窗分帧过程可以理解为使用窗函数在语音信号序列上进行滑动截取的过程,每次截取窗函数非零区域长度的语音数据进行处理,窗函数采用语音信号处理中常用的帧叠方式进行滑动,滑动步长选为半帧。具体实施过程可参照本发明实施实例的操作方式:窗函数长度选为640,即每次截取640个语音采样点,窗函数滑动步长选为320,也即每截取处理长度为640采样点的语音数据后,窗函数向后滑动320个采样点。这样,窗函数每次截取的640个语音数据采样点包含点来自上一帧的320个采样点和320个新数据采样点。
步骤2 快速傅里叶变换:
对加窗处理得到的当前语音帧数据进行已知的快速傅里叶变换,得到当前语音帧的频谱系数
其中为已知的快速傅里叶变换。
步骤3 复功率谱计算:
本发明旨在频域对混响语音进行谱减操作以消除混响干扰,谱减函数的计算需要基于功率谱的分布情况来确定。利用下式对FFT得到的频谱系数进行复功率谱计算
其中为频谱系数的实部,为的虚部,为求得的复功率谱;
将当前帧计算得到的复功率谱与到当前帧的距离在设置的时长范围内某帧的复功率谱进行平滑处理:
其中,为到当前帧的距离在设置的时长范围内某帧的复功率谱, 为复功率谱平滑加权系数,其有效取值范围为[0,0.95],为平滑处理后得到的当前帧复功率谱。本发明实施实例中,选取前一帧的复功率谱与当前帧计算的复功率谱进行平滑处理, 选取为0.92。
步骤4 谱减增益计算:
利用复功率谱计算当前帧的谱减增益函数
其中, 为到当前帧的距离在设置的时长范围内某帧的复功率谱,为谱减增益计算系数,其值可通过下式进行计算
其中取值范围为[0.02, 0.1],,取值范围为(0, 2.5]。
本发明实施实例中,选为0.06,选为1.25,进而计算得为0.5152, 选取当前帧的前面第二帧的复功率谱。
谱减增益函数将会被施加于语音信号频谱上,为避免对语音帧进行谱减增益处理后频谱出现幅度突变等异常现象,将当前帧谱减增益函数与到当前帧的距离在设置的时长范围内若干帧谱减增益函数进行平滑处理,得到均值作为最终施加于语音帧频谱的谱减增益函数
其中为选取的当前帧之前、到当前帧距离在设置时长范围内的帧数, 为当前帧之前第帧的谱减增益函数,为最终求得的谱减增益函数;
本发明实施实例中选取当前帧增益函数及之前4帧的增益函数进行平滑处理,即。
步骤5 谱减处理:
将谱减增益函数施加于语音帧频谱,谱减增益函数与快速傅里叶变换得到的频谱相乘,在频域利用谱减增益函数对混响成分进行抑制
为去除混响成分后的频谱。
步骤6 快速傅里叶逆变换:
对经过谱减处理得到的去除混响成分频谱进行已知的快速傅里叶逆变换
将去除混响干扰的数据从频域变换回时域,得到去除混响的加窗语音帧数据,其中为已知的快速傅里叶逆变换。
步骤7 幅值补偿处理:
步骤1中采用了加窗分帧处理,根据所采用窗函数的不同,步骤7中的处理会有所区别。
7-a:如果在步骤1中采用汉明窗、海宁窗或高斯窗等非矩形窗,会使语音信号幅值受到削减,为恢复原幅值,需要对去除混响后的语音数据进行幅值补偿
为加窗幅值补偿系数,为幅值补偿后得到的去混响语音帧数据;
7-b:如果在步骤1中与本方案实施实例相同采用矩形窗,此处需要再次进行加窗处理,以解决步骤1加矩形窗可能引入的频谱泄露等问题
此处窗函数可采用汉明窗、海宁窗或高斯窗等非矩形窗。加窗后幅值受到削减,与7-a相同,需要对幅值进行补偿
其中,为加窗幅值补偿系数,为去除混响的语音帧数据。
本方案实施实例步骤1中采用矩形窗,在步骤7-b中采用汉明窗,加窗幅值补偿系数选为1.852。
步骤8 语音帧输出处理:
在步骤7中,输出的去混响语音帧分为前后两个半帧和,将上一数据帧输出的去混响语音帧记为,其也分为和 两个半帧,由于在步骤1中采用“帧叠”方式滑动窗函数,所以去混响输出的相邻数据帧和有半帧是相同原始数据的处理结果,即的后半帧和的前半帧是相同原始数据的去混响处理结果,对二者进行平均处理后得到最终输出的语音数据
为最终输出的去混响语音数据,其长度为去混响处理帧长的一半,这与窗函数采用“帧叠”方式以半帧为步长进行滑动的处理方式相一致,也即加窗预处理时每次读入半帧长数量的未处理数据、经过去混响处理后每次输出半帧长数量的去混响数据。
图2为本发明去混响装置中实现去除语音混响的功能模块图。如该图所示,本发明去混响的装置包括:加窗分帧预处理单元、快速傅里叶变换单元、复功率谱计算单元、谱减增益计算单元、谱减处理单元、快速傅里叶逆变换单元、幅值补偿单元,以及输出处理单元。
其中,加窗分帧预处理单元,负责对输入语音数据进行分帧处理,通过加窗处理得到待处理的语音帧数据:。其中,为窗函数,本发明实施实例中此处采用矩形窗。
快速傅里叶变换单元,用于对加窗处理得到的当前语音帧数据进行已知的快速傅里叶变换,得到当前语音帧的频谱,。其中为已知的快速傅里叶变换。
复功率谱计算单元,专门用来进行复功率谱的计算,以及对复功率谱进行平滑处理。本发明旨在频域对混响语音进行谱减操作以消除混响干扰,谱减函数的计算需要基于功率谱的分布情况来确定。利用下式对FFT得到的频谱系数进行复功率谱计算:。其中,为频谱系数的实部,为的虚部,为求得的复功率谱。
将当前帧计算得到的复功率谱与到当前帧的距离在设置的时长范围内某帧的复功率谱进行平滑处理:。
其中,为到当前帧的距离在设置的时长范围内某帧的复功率谱,为复功率谱平滑加权系数,其有效取值范围为[0,0.95],该参数越大其平滑作用越明显。为平滑处理后得到的当前帧复功率谱;本发明实施实例中,选取前一帧的复功率谱与当前帧计算的复功率谱进行平滑处理,选取为0.92。
谱减增益计算单元,实现谱减增益函数的计算,以及对该谱减增益函数进行平滑处理得到均值的谱减增益函数。此时,利用下式计算当前帧的谱减增益函数,。其中,为到当前帧的距离在设置的时长范围内某帧的复功率谱,为谱减增益计算系数,其可通过下式进行计算:。其中,取值范围为[0.04, 0.08],,取值范围为[0.5, 2.5]。在本发明实施实例中,选为0.06,选为1.25,进而计算得为0.5152,选取当前帧的前面第二帧的复功率谱。
将当前帧谱减增益函数与到当前帧的距离在设置的时长范围内若干帧谱减增益函数进行平滑处理,得到均值作为最终施加于谱减单元的谱减增益函数
。
其中, 为选取的当前帧之前的、到当前帧的距离在设置的时长范围内的帧数,为当前帧之前第帧的谱减增益函数,为最终求得的谱减增益函数。
谱减处理单元,负责在频域消除混响成分。将谱减增益函数与快速傅里叶变换得到的频谱相乘,在频域消除混响成分:。为去除混响成分后的频谱。
快速傅里叶逆变换单元,负责对经过谱减处理得到的去除混响成分的频谱进行已知的快速傅里叶逆变换,,得到去除混响的加窗语音帧数据。其中为已知的快速傅里叶逆变换。
幅值补偿单元,消除由于加窗后语音信号幅值的削减,恢复原先幅值。由于在加窗分帧预处理单元中采用了加窗分帧处理,根据所采用窗函数的不同,此处的处理也会有所区别。
处理1:如果在加窗分帧预处理单元中采用汉明窗、海宁窗或高斯窗等非矩形窗,会使语音信号幅值受到削减,为恢复原幅值,需要对去除混响后的语音数据进行幅值补偿:,为加窗幅值补偿系数, 为幅值补偿后得到的去混响语音帧数据。
处理2:如果在加窗分帧预处理单元中与本方案实施实例相同采用矩形窗,此处需要再次进行加窗处理,以解决之前加矩形窗可能引入的频谱泄露等问题:。此处窗函数可采用汉明窗、海宁窗或高斯窗等非矩形窗,加窗后幅值受到削减,与处理1相同需要对幅值进行补偿: 。此处,为加窗幅值补偿系数,为去除混响的语音帧数据。
输出处理单元,负责将去混响处理后得到的语音数据输出。在上述幅值补偿单元中,输出的去混响语音帧分为前后两个半帧和,将上一数据帧输出的去混响语音帧记为,其分为和两个半帧,由于在单元1中采用“帧叠”方式滑动窗函数,所以去混响输出的相邻数据帧和有半帧是相同原始数据的处理结果,即的后半帧和的前半帧是相同原始数据的处理结果,对二者进行平均处理后得到最终输出的语音数据:。输出数据的长度为去混响处理帧长的一半,这与窗函数采用“帧叠”方式以半帧为步长进行滑动的处理方式相一致,也即加窗预处理时每次读入半帧长数量的未处理数据、经过去混响处理后每次输出半帧长数量的去混响数据。
图3为混响语音时域波形图;图4为本发明实施例中去除混响后的语音时域波形图;图5为混响语音的语谱图;图6为本发明实施例中去除混响语音的语谱图。在具体实施实例中,混响信号采集自会议室,声源距离麦克风2m,混响时间约为0.5s,语音数据采样率为16kHz,帧长选为40ms,加窗分帧过程中采用已知的矩形窗,复功率谱计算选取前一帧的复功率谱进行平滑处理,复功率谱平滑加权系数选为0.92,谱减增益计算中选取当前帧之前的第二帧数据进行计算,计算谱减增益系数过程中,选为0.06,选为1.25,进而计算得为0.5152,在进行增益平均计算过程中,选取当前帧及其之前4帧的谱减增益函数进行均值计算,幅值补偿处理采用汉明窗,加窗幅值补偿系数选为1.852。通过对比效果图可以看出,本发明方法能够很好去除语音混响,语音质量得到明显提升。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。