具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图和实施例,对本发明进行进一步详细说明,为了便于说明,仅示出了与本发明实施例相关的部分。应当理解,此处所描写的具体实施例,仅仅用于解释本发明,并不用以限制本发明。
本发明实施例提出一种音频去噪方法和系统。所述方法将音频有效数据检测与音频去噪相结合。一方面,通过Mel频率参数音频有效数据检测法,获取噪声谱估计的初始值、估计信噪比、并去除非音频有效数据段的噪声;另一方面,通过估计的信噪比及噪声瞬间变化趋势,确定当前瞬间谱减方程,去除音频有效数据段的噪声,从而达到在提升去噪后的性信噪比及减少“音乐噪声”方面的优化实现。
实施例1
图1是本发明优选实施例的一种音频去噪方法流程图;所述方法包括以下步骤:
S10:对音频数据进行预处理;
即依次进行常规的预加重滤波、分帧、加窗处理,其中,预加重滤波器及窗口函数可选业内通用的任何一种方法。
S11:计算音频数据中所有帧的Mel频域参数。
第t帧音频xt(n)的Mel频域参数MFCCt的计算方法包括以下步骤:
S111:进行快速傅里叶变换,获取第t帧音频xt(n)经过傅里叶变换后的频域帧Xt(k);其中,1≤n≤N,N为帧长;1≤k≤N。其中,xt(n)表示第t帧音频的第n个分量;Xt(k)表示第t帧音频对应频域帧的第k个分量;
快速傅里叶变换的方法为本领域的公知常识,在此不再赘述。
S112:将频域帧Xt(k)用一组三角滤波器进行滤波。
其中,该组滤波器由M个中心频率在Mel频率上均匀分布的滤波器组成,其定义如下:
其中,Hm(k)为第m个三角滤波器的频率响应;
fm为第m个滤波器的中心频率;
Mel(fm)为fm对应的Mel频率,
Mel(fm)=1125ln(1+fm/700),1≤m≤M,M为滤波器个数。
S113:求出每个滤波器的输出对数能量;
其中,Yt(m)表示Xt(k)经过第m个滤波器的输出对数能量。
S12:计算所有频域帧的幅值及相角。
幅值及相角的计算方法为本领域的公知常识,在此不再赘述。
S13:设置当前音频有效数据待判定帧为第T帧,设置当前去噪帧为第一帧。
所有的数据即音频数据;声音信息中一般存在长时间静音段,而人在讲话的时候,也会出现字、词、句之间的停顿。不包含话音间隔及静音数据的为音频有效数据。
其中,T≥10。
S14:进行Mel频率参数音频有效数据检测,获取音频有效数据的起始帧和结束帧。
所述“进行Mel频率参数音频有效数据检测,获取音频有效数据的起始帧和结束帧”具体包括以下步骤(图2是图1中步骤S14所包含的方法流程图):
S141:计算第一判定阈值。
S142:判断下一帧是否存在,若不存在,则结束;否则进入步骤S143;
S143:将下一帧设置为当前音频有效数据待判定帧。
S144:利用Mel频域参数法进行当前音频有效数据段检测。
所述“利用Mel频域参数法进行当前音频有效数据段检测”具体包括以下步骤(图3是图2中步骤S144所包含的方法流程图):
S1441:判断是否当前音频有效数据待判定帧的频域参数大于第一判定阈值,若是则进入步骤S1442,否则,进入步骤S1445。
S1442:设置临时音频有效数据的起始帧为当前音频有效数据待判定帧,然后统计待判定帧的频域参数大于第一判定阈值的连续帧数;
其中,所述“统计待判定帧的频域参数大于第一判定阈值的连续帧数”具体包括以下步骤(图4是图3中步骤S1442所包含的方法流程图):
S14421:令连续帧数等于1;
S14422:判定下一帧是否存在,若是则进入S14423;如果不存在,则进入S1443;
S14423:将下一帧设为当前音频有效数据待判定帧;
S14424:判断是否当前音频有效数据待判定帧的频域参数大于第一判定阈值,如果是则连续帧数加1,然后重新进入S14422,否则进入步骤S14425;
S14425:设置临时音频有效数据的结束帧为当前音频有效数据待判定帧,进入S1443。
S1443:判断是否所述连续帧数大于第二判定阈值,若是则进入步骤S1444,否则,进入步骤S1445。
一般,第二判定阈值大于15。
S1444:确认当前音频有效数据的起始帧即为临时音频有效数据的起始帧的前一帧,当前音频有效数据的结束帧即为临时音频有效数据的结束帧,然后进入S15;
S1445:判定下一帧是否存在,若存在,则令下一帧为当前音频有效数据待判定帧,然后重新进入步骤S1441;否则进入步骤S1446;
S1446:确认临时音频有效数据的起始帧到当前音频有效数据待判定帧均为非音频有效数据,然后进入S16。
S15:计算信噪比参数。
snrp=const1-log(ex/en),
其中,ex=sum((xt(n)-en)2|xt(n)已进行过判断且为有效音频并且1≤n≤N),
snrp为信噪比参数,ex、en为中间变量;其中sum(变量|条件)表示对满足条件的变量求和;const1为第一常量,一般const1≥4,log为以10为底的对数计算。S16:进行音频去噪处理获取所述去噪帧幅值的修正值;
具体包括以下步骤(图5是图1中步骤S16所包含的方法流程图):
S161:如果当前去噪帧为非音频有效数据,则进入S162;否则进入S163。
S162:令当前去噪帧一直到当前音频有效数据的起始帧的前一帧中每一帧的音频数据幅值的修正值Zt m为0(即令当前去噪帧一直到当前音频有效数据的起始帧的前一帧中每一帧的Zt m=0),然后,设置当前去噪帧为当前音频有效数据的起始帧,再进入S163。
S163:计算当前去噪帧幅值的修正值。
其中,nop1、nop2、nop3分别为第一噪声参数、第二噪声参数、第三噪声参数;Zt为当前去噪帧的幅值;Zt m为当前去噪帧的幅值的修正值;
nop2=k1+k2*(noiset-2+noiset-3)/noiset-1;
nop3=k1*noiset-1+k2*(noiset-2+noiset-3);
const2为第二常量,一般const2<0.08;k1、k2为调节因子,一般0<k2<k1<1;
条件1:集合1与集合2的方差小于等于第三判定阈值并且为第一段音频去噪处理;
条件2:集合1与集合2的方差大于第三判定阈值并且为第一段音频去噪处理;
其中,集合1为前T帧音频中,相邻两帧的相关系数;集合2为T+1、T+2、...、当前音频有效数据起始帧的前一帧音频中,相邻两帧的相关系数。
S164:判断是否当前去噪帧为当前音频有效数据的结束帧,若是则进入步骤S165;否则设置当前去噪帧的下一帧为当前去噪帧,然后进入步骤S163。
S165:设置当前音频有效数据待判定帧为当前音频有效数据的结束帧,然后进入S14;
S17:利用幅值的修正值及所述相角进行快速傅里叶反变换。
S18:对所述音频数据进行逆预处理;
即依次进行去窗操作(对应预处理的加窗操作)、合并帧(对应预处理的分帧操作)、去加重操作(对应预处理的预加重操作)。
实施例2
图6是本发明优选实施例的一种音频去噪系统结构图;所述系统包括Mel频域参数计算模块、幅值及相角计算模块、第一设置模块、音频有效数据检测装置、信噪比参数计算模块、音频去噪处理模块、快速傅里叶反变换模块,
Mel频域参数计算模块,用于计算所有帧的Mel频域参数;
幅值及相角计算模块,用于计算所有频域帧的幅值及相角;
第一设置模块,用于设置当前音频有效数据待判定帧为第T帧,设置当前去噪帧为第一帧;
音频有效数据检测装置,用于进行Mel频率参数音频有效数据检测,获取音频有效数据的起始帧和结束帧;
信噪比参数计算模块,用于计算信噪比参数;
snrp=const1-log(ex/en),
其中,ex=sum((xt(n)-en)2|xt(n)已进行过判断且为有效音频并且1≤n≤N),
snrp为信噪比参数,ex、en为中间变量;其中sum(变量|条件)表示对满足条件的变量求和;const1为第一常量,一般const1≥4,log为以10为底的对数计算。
音频去噪处理模块,用于进行音频去噪处理获取所述去噪帧幅值的修正值;
快速傅里叶反变换模块,用于利用幅值的修正值及相角进行快速傅里叶反变换;
进一步地,所述系统还包括音频数据预处理模块、逆预处理模块,
音频数据预处理模块,用于对音频数据进行预处理;
逆预处理模块,用于对音频数据进行逆预处理;
进一步地,(图7是图6中Mel频域参数计算模块的结构图)所述Mel频域参数计算模块还包括频域帧获取模块、滤波模块、对数能量计算模块、频域参数获取模块,
频域帧获取模块,用于进行快速傅里叶变换,获取第t帧音频xt(n)经过傅里叶变换后的频域帧Xt(k);其中,1≤n≤N,N为帧长;1≤k≤N。
滤波模块,用于将频域帧Xt(k)用一组三角滤波器进行滤波。
其中,该组三角滤波器由M个中心频率在Mel频率上均匀分布的滤波器组成,其定义如下:
其中,Hm(k)为第m个三角滤波器的频率响应;
fm为第m个滤波器的中心频率;
Mel(fm)为fm对应的Mel频率,
Mel(fm)=1125ln(1+fm/700),1≤m≤M,M为滤波器个数。
对数能量计算模块,用于求出每个滤波器的输出对数能量;
其中,Yt(m)表示Xt(k)经过第m个滤波器的输出对数能量。
进一步地,(图8是图6中音频有效数据检测装置的结构图)所述音频有效数据检测装置还包括第一判定阈值计算模块、第一帧判断处理模块、音频有效数据段检测模块,
第一判定阈值计算模块,用于计算第一判定阈值;
第一帧判断处理模块,用于判断下一帧是否存在,若是则将下一帧设置为当前音频有效数据待判定帧,若否则结束;
音频有效数据段检测模块,用于利用Mel频域参数法进行当前音频有效数据段检测;
进一步地,(图9是图8中音频有效数据段检测模块的结构图)所述音频有效数据段检测模块还包括第一阈值判断处理模块、连续帧数统计模块、第二阈值判断处理模块、第二帧判断处理模块、第二设置模块,
第一阈值判断处理模块,用于判断当前音频有效数据待判定帧的频域参数是否大于第一判定阈值,若是则进入连续帧数统计模块,否则进入第二帧判断处理模块;
连续帧数统计模块,用于设置临时音频有效数据的起始帧为当前音频有效数据待判定帧,然后统计待判定帧的频域参数大于第一判定阈值的连续帧数;
第二阈值判断处理模块,用于判断是否所述连续帧数大于第二判定阈值,若是则确认当前音频有效数据的起始帧即为临时音频有效数据的起始帧的前一帧,当前音频有效数据的结束帧即为临时音频有效数据的结束帧,进入信噪比参数计算模块,否则进入第二帧判断处理模块;
第二帧判断处理模块,用于判断下一帧是否存在,若是则进入第二设置模块,否则确认临时音频有效数据的起始帧到当前音频有效数据待判定帧均为非音频有效数据,进入音频去噪处理模块,;
第二设置模块,用于将下一帧设置为当前音频有效数据待判定帧,然后进入第一阈值判断处理模块;
进一步地,(图10是图9中连续帧数统计模块的结构图)所述连续帧数统计模块还包括第三设置模块、第三帧判断处理模块、第三阈值判断处理模块,
第三设置模块,用于令所述连续帧数等于1;
第三帧判断处理模块,用于判定下一帧是否存在,若是则将下一帧设为当前音频有效数据待判定帧,进入第三阈值判断处理模块,若否则进入第二阈值判断处理模块;
第三阈值判断处理模块,用于判断是否当前音频有效数据待判定帧的频域参数大于第一判定阈值,若是则所述连续帧数加1,返回第三帧判断处理模块,若否则设置临时音频有效数据的结束帧为当前音频有效数据待判定帧,然后进入第二阈值判断处理模块;
进一步地,(图11是图6中音频去噪处理模块的结构图)所述音频去噪处理模块还包括音频有效数据判断处理模块、第四设置模块、幅值的修正值计算模块、第四帧判断处理模块,
音频有效数据判断处理模块,用于判断是否当前去噪帧为非音频有效数据,若是则进入第四设置模块,若否则进入幅值的修正值计算模块;
第四设置模块,用于令当前去噪帧一直到当前音频有效数据的起始帧的前一帧中每一帧的音频数据幅值的修正值Zt m为0,然后,设置当前去噪帧为当前音频有效数据的起始帧;
幅值的修正值计算模块,用于计算当前去噪帧幅值的修正值;
其中,nop1、nop2、nop3分别为第一噪声参数、第二噪声参数、第三噪声参数;Zt为当前去噪帧的幅值;Zt m为当前去噪帧的幅值的修正值;
nop2=k1+k2*(noiset-2+noiset-3)/noiset-1;
nop3=k1*noiset-1+k2*(noiset-2+noiset-3);
const2为第二常量,一般const2<0.08;k1、k2为调节因子,一般0<k2<k1<1;
条件1:集合1与集合2的方差小于等于第三判定阈值并且为第一段音频去噪处理;
条件2:集合1与集合2的方差大于第三判定阈值并且为第一段音频去噪处理;
其中,集合1为前T帧音频中,相邻两帧的相关系数;集合2为T+1、T+2、...、当前音频有效数据起始帧的前一帧音频中,相邻两帧的相关系数。
第四帧判断处理模块,用于判断是否当前去噪帧为当前音频有效数据的结束帧,若是则设置当前音频有效数据待判定帧为当前音频有效数据的结束帧,然后进入音频有效数据检测装置,若否则设置当前去噪帧的下一帧为当前去噪帧,然后进入幅值的修正值计算模块。
本领域的普通技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序指令相关硬件来完成的,所述的程序可以存储于一计算机可读取存储介质中,所述的存储介质可以为ROM、RAM、磁盘、光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。