公开/公告号CN113257268A
专利类型发明专利
公开/公告日2021-08-13
原文格式PDF
申请/专利权人 成都启英泰伦科技有限公司;
申请/专利号CN202110748679.2
申请日2021-07-02
分类号G10L21/0208(20130101);G10L21/0232(20130101);
代理机构
代理人
地址 610041 四川省成都市高新区天府五街200号菁蓉汇4号楼A座12层
入库时间 2023-06-19 12:13:22
技术领域
本发明属于人工智能技术领域,涉及语音识别,具体涉及一种结合频率跟踪和频谱修正的降噪和单频干扰抑制方法。
背景技术
语音通话场景的需求日益增加,不同的应用场景往往都是伴随着噪声的,在某些会议场景下,还会由于硬件限制、硬件故障等出现单频干扰并严重影响听觉感受。这些语音听觉场景需要对语音的背景噪声有一个较为舒适的滤除,并对单频干扰的抑制有一定需求。因此需要一种方法,其一能对背景噪声进行滤除并提升听觉体验,其二能够通过软件手段对单频干扰进行检测并滤除。
发明内容
为克服现有技术存在的缺陷,本发明公开了一种结合频率跟踪和频谱修正的降噪和单频干扰抑制方法。
本发明所述结合频率跟踪和频谱修正的降噪和单频干扰抑制方法,包括以下步骤:
S1.对输入的带噪语音进行逐帧处理,每帧数据对其进行短时快速傅里叶变换后得到频谱Y(k,l),其中k为频点频率,l为帧数;
S2.设置固定窗,对窗内逐帧计算每一个频点的噪声功率谱,并求得该帧每一个频点的语音概率;
S3.根据S2 得到的噪声功率谱求得后验信噪比,平滑后得到先验信噪比并求得最优幅度谱增益估计;
S4.根据单频干扰中心频点跟踪算法找出带噪功率谱最强的若干个频点作为单频干扰中心频点;
S5.对单频干扰中心频点及其邻近频点的频谱进行修正得到输出频谱;
S6.对输出频谱进行合窗和反傅里叶变换,得到更新后的频谱。
优选的:所述步骤S2中,噪声功率谱更新方式如下:
S21.以第一帧的每个频点的频谱幅度| Y(k,l)|
始值;
S22.从第二帧开始到固定窗尾,把该帧每个频点的频谱幅度
| Y(k,l)|
若比值大于第一阈值TH1则判断为语音,根据(1)式更新语音概率;
p(k,l)=1+α
若比值不大于第一阈值TH1;根据(2)式更新语音概率;
p(k,l)= α
p(k,l)是第l帧第k个频点的语音概率;
p(k,l-1)是第l-1帧第k个频点的语音概率;
α
S23.通过(3)式计算噪声功率谱值;
噪声功率谱值λ(k,l)=α
其中,α
α
α
优选的:所述步骤S3具体为:
S31.根据公式(4)更新后验信噪比:
后验信噪比post_snr(k,l)= α
α
S32.根据公式(5)更新先验信噪比:
先验信噪比
pri_snr(k,l)= α
α
pri_snr(k,l) 和pri_snr(k,l-1)分别表示第l帧和第(l-1)帧第k个频点的先验信噪比;
S33.再根据公式(6)求出初步最优幅度谱增益估计gain1(k,l):
gain1(k,l)=pri_snr(k,l)/[1+pri_snr(k,l)] ----(6)
S34.再根据公式(7)求出最终最优幅度谱增益估计gain2(k,l):
gain2(k,l)=p(k,l)*gain1(k,l)+(1-p(k,l))*gain_min ----(7)
p(k,l)是第l帧第k个频点的语音概率;gain_min是增益最小限定值。
优选的:所述步骤S4中单频干扰中心频点跟踪的方法如下:
S41.将步骤S1得到的频谱划分为若干个频带,对每一频带,重复以下步骤S42-S44,得到各个频带的单频干扰中心频点bin
划分频带宽度和边界的依据为:根据可能出现的单频干扰中心频点位置,使划分的每一频带尽可能只出现一个单频干扰中心频点;
对每一频带,重复以下步骤S42-S44进行最大单频干扰中心频点跟踪:
S42.找出该频带内的最大带噪功率谱值的最大频点max_index及其带噪功率谱值psd_max;带噪功率谱最大值计数器数组用max_cal表示;
所述带噪功率谱最大值计数器数组max_cal中包括多个带噪功率谱计数器,每一带噪功率谱计数器对应一个频点,且带噪功率谱计数器初始值均为0;
设置频率跟踪标志位detect_flag,定义当找到单频干扰中心频点时该值为1,未找到则为零。
S43.如当前频率跟踪标志位detect_flag为0,对当前频带的最大带噪功率谱值所在的最大值频点max_index进行逐帧统计,设置帧计数器count初始值为零;
帧计数器count逐帧加1,在帧计数器count小于统计长度LENGTH 且当前帧的带噪功率谱值psd_max与当前最小噪声功率谱值λmin比值大于第二阈值TH2时,对各帧的每一最大值频点,设定该最大值频点对应的带噪功率谱计数器 max_cal(max_index)值加1,当count值等于统计长度LENGTH时,统计各个带噪功率谱计数器中max_cal(max_index)中的最大值;
如最大值大于次数门限COUNT_TH,则将该频点置为单频干扰中心频点bin
S44.如当前频率跟踪标志位detect_flag为1,判断当前得到的该频带的功率谱值最大的最大值频点是否和已找到的单频干扰中心频点bin
如果相同则不作处理;如果不同,则对最大值频点对应的带噪功率谱计数器max_cal(max_index)值减1,直到当max_cal(max_index)=0时,将频率跟踪标志位detect_flag重新置为0,开始重新跟踪单频干扰中心频点;
重复以上步骤S42-S44,得到各个频带的单频干扰中心频点记为bin
优选的:所述步骤S5具体为:
对单频干扰中心频点及其邻近频点进行以下操作:
S51.对正频率频点部分的修正量如下
compensate(bin
λ(bin
对负频率频点处的修正量计算如下:
compensate(FFTSize-bin
其中FFTSize为傅里叶变换长度,α
对于正频率频点,修正后频谱
Y
Y(bin
对于负频率频点,修正后频谱
Y
S52.修正后频点的新相位new_phase(bin
new_phase(bin
S53.降噪幅度谱根据(10)式求得:
|fft_out(bin
gain2(bin
将(10)式中得到的降噪幅度谱乘之前得到的新相位new_phase(bin
fft_out(bin
本发明利用固定窗背景噪声估计,结合维纳滤波对噪声进行降噪的同时,在各个频带进行单频干扰检测,并通过估计的噪声功率谱来对相位带噪语音的相位进行修正得出新相位,从而在降噪的同时实现了指定频点的单频干扰抑制。
附图说明
图1是本发明所述降噪和单频干扰抑制方法的一个具体实施方式流程示意图;
图2是根据本发明实施方式得到的一个实际场景处理效果。
具体实施方式
下面对本发明的具体实施方式作进一步的详细说明。
本发明所述的结合频率跟踪和频谱修正的降噪和单频干扰抑制方法,包括以下步骤:
S1.对输入的带噪语音进行逐帧处理,每帧数据对其进行短时快速傅里叶变换后得到频谱Y(k,l),其中k为频点频率,l为帧数;
S2.设置固定窗,对窗内逐帧计算每一个频点的噪声功率谱,并求得该帧每一个频点的语音概率;
S3.根据S2 得到的噪声功率谱求得后验信噪比,平滑后得到先验信噪比并求得最优幅度谱增益估计;
S4.根据单频干扰中心频点跟踪算法找出带噪功率谱最强的若干个频点作为单频干扰中心频点;
S5.对单频干扰中心频点及其邻近频点的频谱进行修正得到输出频谱;
S6.对输出频谱进行合窗和反傅里叶变换,得到更新后的频谱。
如图1所示为本发明一个具体实施方式的整体流程示意图,步骤S1中,对输入的带噪语音y进行逐帧处理,每帧数据对其进行短时快速傅里叶变换后得到频谱值Y(k,l);
其频谱幅度为| Y(k,l)|
步骤S2具体为,
S21.以第一帧的每个频点的频谱幅度| Y(k,l)|
S22.从第二帧开始到固定窗尾,把该帧每个频点的频谱幅度
| Y(k,l)|
若比值大于第一阈值TH1则判断为语音,再根据
p(k,l)=1+α
更新语音概率;p(k,l)是第l帧第k个频点的语音概率,p(k,l)初始值为0,并进行逐帧更新。
若比值不大于第一阈值TH1;
则按照p(k,l)= α
α
S23.最终通过如下公式计算噪声功率谱值;
噪声功率谱值λ(k,l)=α
α
α
α
更新噪声功率谱值λ(k,l);本具体实施方式中把第一阈值TH1设置为5,α
以下给出步骤S3中先验信噪比的平滑以及最优估计的一个具体流程:
S31.根据公式(4)更新后验信噪比:
后验信噪比post_snr(k,l)= α
α
S32.并根据公式(5)更新先验信噪比:
先验信噪比pri_snr(k,l)= α
α
本具体实施中的α
S33.再根据公式(6)求出初步最优幅度谱增益估计
gain1(k,l)=pri_snr(k,l)/[1+pri_snr(k,l)] ----(6)
S34. 根据公式(7)求得最终最优幅度谱增益估计:
gain2(k,l)=p(k,l)*gain1(k,l)+(1-p(k,l))*gain_min ----(7)
p(k,l)是第l帧第k个频点的语音概率;gain_min是增益最小限定值
以下给出步骤S4中单频干扰中心频点跟踪算法的一个具体流程:
S41.将频谱划分为若干个频带,例如将0-8000Hz的频谱划分为0-2000Hz/2000-4000Hz/4000-8000Hz三个频带,分别对应频点1-64,65-128,129-256。
频带的边界和宽度根据可能出现的单频干扰中心频点设定,使每一频带尽可能只出现一个单频干扰中心频点,从而满足后续跟踪过程中的算法环境。
例如0-8000Hz的频谱范围内,可能出现的单频干扰中心频点为500 Hz,2500 Hz,5000Hz,则可以划分为0-2000Hz/2000-4000Hz/4000-8000Hz三个频带;使每一频带包括一个可能的单频干扰中心频点。
对每一频带,重复以下步骤S42-S44进行最大单频干扰中心频点跟踪:
S42.找出该频带内的最大带噪功率谱值的最大频点max_index及其带噪功率谱值psd_max;带噪功率谱最大值计数器数组用一计数器数组max_cal来表示。
带噪功率谱最大值计数器数组max_cal中包括多个带噪功率谱计数器,每一带噪功率谱计数器对应一个频点,例如对256个频点组成的三个频带, max_cal包括256个带噪功率谱计数器,且带噪功率谱计数器初始值都为0。
设置频率跟踪标志位detect_flag,定义当找到单频干扰中心频点时该值为1,未找到则为零。
S43.如当前频率跟踪标志位detect_flag为0,对当前频带的最大带噪功率谱值所在的最大值频点max_index进行逐帧统计,设置帧计数器count初始值为零;
帧计数器count逐帧加1,在帧计数器count小于统计长度LENGTH 且当前帧的带噪功率谱值psd_max与当前最小噪声功率谱值λmin比值大于第二阈值TH2时,对各帧的每一最大值频点,设定该最大值频点对应的带噪功率谱计数器 max_cal(max_index)值加1。本实施例中的第二阈值TH2可设置为3.5;统计长度LENGTH为设定的参数值,例如可以设置为20;最小噪声功率谱值λmin为步骤2中求得的噪声功率谱最小值。
当count值等于统计长度LENGTH时,统计各个带噪功率谱计数器中max_cal(max_index)中的最大值;
如最大值大于次数门限COUNT_TH,则将该频点置为单频干扰中心频点bin
例如在4000-8000Hz频带中,该频带对应max_cal计数器数组中的第129-256位计数器,统计长度LENGTH=20帧,逐帧统计各帧的每一最大值频点max_index,达到统计长度LENGTH后,带噪功率谱计数器max_cal[150]值为15,max_cal[200]为3,max_cal[220]为2。即第150频点是 max_cal(max_index)中的最大值,第150个频点就是4000-8000Hz频带内的单频干扰中心频点。
由于单频干扰所在的中心频点的功率谱值极强且几乎连续在同一频点附近出现,因此以单频点内带噪功率谱计数器max_cal(K)中的最大值对应的频点作为单频干扰中心频点 bin
无单频干扰出现时, 功率分布比较分散,不会像单频干扰那样集中在单频干扰中心频点,无单频干扰情况下,每一帧的最大带噪功率谱所在频点不固定,即每一帧的max_index频点大概率不同。
同时设置第二阈值TH2和次数门限COUNT_TH的目的是滤除部分能量不大的频点,没有单频干扰的情况下, 每一帧的max_index频点都可能不同,即使偶然接近或相同的,也很难同时满足第二阈值TH2和次数门限COUNT_TH两个条件。这样在没有单频干扰的情况下,不会误定义出单频干扰中心频点。
找到单频干扰中心频点后,标记detect_flag为1。
S44.如当前频率跟踪标志位detect_flag为1,即已经有一个单频干扰中心频点bin
如果相同则表示单频干扰中心频点未变化,则不作处理;如果不同,则对最大值频点对应的带噪功率谱计数器max_cal(max_index)值减1,直到当max_cal(max_index)=0时,此时将频率跟踪标志位detect_flag重新置为0,既开始重新跟踪单频干扰中心频点。
上述S44步骤的意义在于:detect_flag=1标志着已在S43步骤中找到单频干扰中心频点 bin,此时只需要对比当前帧的功率谱最大值所在的频点max_index是不是S43步骤中找到的单频干扰中心频点 bin,如果相同表示还处于单频干扰中心频点的区间;如果不同则对max_cal(K)减1,直到减为0,即退出找到单频干扰中心频点的状态,detect_flag重新回归为零;表示当前没有单频干扰。
在单频干扰频点附近,可能出现个别不是最大值的频点,因此不适宜在偶然未达到最大值时将detect_flag重新迅速回归为零,但是在没有单频干扰的情况下,特别是由于频带划分使每一频带通常只出现一个单频干扰频点的情况下,极不可能出现连续密集分布的多个最大值,在没有单频干扰的情况下功率分布趋于分散,不会出现单频干扰或类似情况,即不会出现连续多个功率谱最大值, max_cal(max_index)持续降低,减到0后再将detect_flag置零。
重复以上步骤,得到各个频带的单频干扰中心频点记为bin
根据前面步骤S2求得的噪声功率谱值λ(k,l),对各个单频干扰中心频点的频谱进行修正,以下给出通过频谱修正来实现单频干扰抑制的一个具体流程:
在步骤S5中,考虑到频谱泄露,需要对单频干扰中心频点及其临近若干个频点的频谱按照如下方式进行修正并重新计算相位,α
S51.对正频率频点部分的修正量如下
compensate(bin
对负频率频点处的修正量计算如下:
compensate(FFTSize-bin
其中FFTSize为傅里叶变换长度,例如可以设置为512。
本具体实施例中的α
具体的频点修正公式:
对于正频率频点,修正后频谱
Y
对于负频率频点,修正后频谱
Y
S52.修正后频点的新相位用new_phase(bin
new_phase(bin
S53.降噪幅度谱根据如下式可求得:
|fft_out(bin
将(10)式中得到的降噪幅度谱乘之前得到的新相位new_phase(bin
fft_out(bin
输出频谱消除了单频干扰,实现降噪降单频干扰一体化。
最终得到输出频谱fft_out(bin
本发明通过噪声估计求得最优估计,以及对语音单频干扰中心频点的频谱进行修正后,得出新的相位取代原始带噪语音的相位,更新后的频谱在实现降噪的同时实现单频干扰抑制,具体效果如图2,图2为一张语谱图,上半部分是原始录制语音,下半部分是降噪加降单频干扰后的语音,箭头所指的地方为单频干扰,从图2中可以看出图2下半部分的单频干扰几乎被完全消除,且语谱图中的背景噪声已经被抑制。
前文所述的为本发明的各个优选实施例,各个优选实施例中的优选实施方式如果不是明显自相矛盾或以某一优选实施方式为前提,各个优选实施方式都可以任意叠加组合使用,所述实施例以及实施例中的具体参数仅是为了清楚表述发明人的发明验证过程,并非用以限制本发明的专利保护范围,本发明的专利保护范围仍然以其权利要求书为准,凡是运用本发明的说明书内容所作的等同结构变化,同理均应包含在本发明的保护范围内。
机译: 雷达频谱发生器,雷达抑制生成模块的频谱方法和消除外部干扰的方法
机译: 与多肽结合的分离抗体,分离抗体,抑制细胞生长的方法,检测tat188多肽水平的方法,干扰RNA,表达载体,宿主细胞,物质组成,工业化制品,抑制癌细胞生长的方法以及治疗或预防方法细胞增殖功能障碍
机译: 动态频谱接入系统中的干扰抑制方法和装置