具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。
本发明的第一实施方式涉及一种先验信噪比的计算方法,应用于电子设备,例如,终端或服务器。如图1所示,先验信噪比的计算方法包括以下步骤:
步骤101:获取上一帧的滤波器的系数、上一帧降噪处理后的幅度谱、上一帧的噪声幅度谱和当前帧的后验信噪比。
具体地说,上一帧是指上一帧音频,当前帧是指电子设备当前正在处理的音频。上一帧的滤波器的系数是指在对上一帧音频处理过程中,计算得到的滤波器的系数。电子设备通过调取上一帧的处理结果,可以得到上一帧的滤波器的系数、上一帧降噪处理后的幅度谱和上一帧的噪声幅度谱。
需要说明的是,本领域技术人员可以理解,滤波器为维纳滤波器,也可以是其他滤波器,本实施方式不限制滤波器类型。
在一个实施例中,滤波器的系数计算公式如下:
其中,wsf(t,k)表示第t帧第k个频点的滤波器的系数,
表示第t帧第k个频点的先验信噪比,wsf
min表示滤波器的系数的最小取值。
需要说明的是,本领域技术人员可以理解,实际应用中,可以根据对语音失真程度等方面的要求,设置滤波器的系数的最小取值,本实施方式不限制其具体取值。
值得一提的是,对滤波器的系数的仿真取值进行限制,可以避免由于仿真取值太小,处理后语音发生严重失真的情况。
在一个实施例中,电子设备获取当前帧的后验信噪比的过程如下:获取当前帧的带噪幅度谱、上一帧的噪声幅度谱和上一帧噪声估计的波动值;根据当前帧的带噪幅度谱、上一帧的噪声幅度谱和上一帧噪声估计的波动值,以及预设的更新条件,判断是否将上一帧的噪声幅度谱作为当前帧的噪声幅度谱;若确定是,将上一帧的噪声幅度谱作为当前帧的噪声幅度谱;若确定不是,根据上一帧的噪声幅度谱和当前帧的带噪幅度谱,确定当前帧的噪声幅度谱;根据当前帧的带噪幅度谱和当前帧的噪声幅度谱,计算当前帧的后验信噪比。其中,当前帧的带噪幅度谱是指带噪声的原始语音的幅度谱。
值得一提的是,采用加权谱平均算法,对噪声实时追踪,及时更新噪声幅度谱,使得对噪声估计更为准确。
在一个实施例中,电子设备按照公式c:
计算当前帧的后验信噪比。
其中,γ(t,k)表示第t帧第k个频点的后验信噪比,Y(t,k)表示第t帧第k个频点的带噪幅度,
表示第t帧的第k个频点的噪声幅度。
需要说明的是,本领域技术人员可以理解,本实施方式中,以根据及时更新的噪声幅度谱确定后验信噪比的方式,举例说明了后验信噪比的计算方式,实际应用中,也可以采用其他方式计算后验信噪比,例如,取语音信号的前几帧当作噪声帧,对这几帧信号幅度谱求平均作为估计的噪声幅度谱后,基于该噪声幅度谱计算每一帧后验信噪比,本实施方式不限制后验信噪比的计算方法。
在一个实施例中,预设的更新条件为:当前帧的带噪幅度谱与上一帧的噪声幅度谱差值的绝对值小于上一帧的噪声幅度谱的即时波动估计值和预设参数的乘积。即当满足以下条件时,重新计算当前帧的噪声幅度谱:
其中,Y(t,k)表示第t帧第k个频点的带噪幅度,
表示第t-1帧的第k个频点的噪声幅度,ε表示预设参数,var
d(t-1,k)表示第t-1帧的第k个频点的即时波动估计值。
需要说明的是,本领域技术人员可以理解,实际应用中,可以根据需要设置预设参数,例如,可以将预设参数设置为区间[1,3]之间的任意数值,例如,可以将预设参数设置为1.1,本实施方式不限制预设参数的取值。
需要说明的是,本领域技术人员可以理解,实际应用中,可以根据依据其他准则设置更新条件,本实施方式不限制更新条件的具体内容。
在一个实施例中,第t帧的第k个频点的即时波动估计值的计算公式为:
其中,var
d(t,k)表示第t帧的第k个频点的即时波动估计值,δ表示平滑参数,可以在区间[0,1]之间取值,例如,可以取值0.85,var
d(t-1,k)表示第t-1帧的第k个频点的即时波动估计值,Y(t,k)表示第t帧第k个频点的带噪幅度,
表示第t帧的第k个频点的噪声幅度。
在一个实施例中,根据上一帧的噪声幅度谱和当前帧的带噪幅度谱,确定当前帧的噪声幅度谱的过程为:按照公式b,确定当前帧的噪声幅度谱。其中,公式b为:
其中,
表示第t帧第k个频点的噪声幅度,α表示噪声幅度平滑参数,
表示第t-1帧的第k个频点的噪声幅度,|Y(t,k)|表示第t帧第k个频点的带噪幅度。
在一个实施例中,噪声幅度平滑参数可以在区间(0,1)之间的任意数值,本实施方式不作限制。
步骤102:根据上一帧的滤波器的系数、上一帧降噪处理后的幅度谱、上一帧的噪声幅度谱和当前帧的后验信噪比,计算当前帧的先验信噪比。
具体地说,在语音增强算法中,往往需要使用先验信噪比对语音进行增强。通常情况下,在计算先验信噪比时,通过公式d:
计算先验信噪比。而本实施方式中,电子设备在计算先验信噪比时,使用滤波器的系数,对先验信噪比进行滤波处理,降低了语音增强后信号的失真。
在一个实施例中,电子设备根据上一帧的滤波器的系数、上一帧降噪处理后的幅度谱、上一帧的噪声幅度谱和当前帧的后验信噪比,计算当前帧的先验信噪比的过程为:电子设备按照公式a,计算当前帧的先验信噪比;
公式a:
其中,
表示第t帧第k个频点的先验信噪比,max()表示求最大值函数,a表示权重因子,
表示第t-1帧第k个频点降噪处理后的幅度,
表示第t-1帧第k个频点的噪声幅度,wsf(t-1,k)表示上一帧的滤波器的系数,γ(t,k)表示第t帧第k个频点的后验信噪比,ξ
min表示先验信噪比的最小取值。
需要说明的是,本领域技术人员可以理解,实际应用中,可以根据需要选择先验信噪比的最小取值,例如,可以在区间[-30dB,-5dB]之间取值。
需要说明的是,以上仅为举例说明,并不对本发明的技术方案构成限定。
现有技术在小信噪比下,对先验信噪比的估值低,从而导致抑制过度,增强后信号失真较大。与现有技术相比,本实施方式中提供的先验信噪比的计算方法,使用上一帧计算得到的滤波器系数,对历史先验信噪比进行了滤波处理,解决了抑制过度的问题,降低了语音增强后信号的失真,进而提高了语音识别性能。
本发明的第二实施方式涉及一种先验信噪比的计算方法,本实施方式在第一实施方式的基础上做了进一步改进,具体改进之处为:在计算得到先验信噪比后,基于先验信噪比,对当前帧进行语音增强。
具体的说,如图2所示,在本实施方式中,包含步骤201至步骤206,其中,步骤201和步骤202分别与第一实施方式中的步骤101和步骤102大致相同,此处不再赘述。下面主要介绍不同之处:
执行步骤201和步骤202。
步骤203:根据当前帧的先验信噪比和当前帧的后验信噪比,以及先验信噪比、后验信噪比和语音存在概率的约束关系,计算当前帧的语音存在概率。
具体地说,当前帧的语音存在概率是指语音存在的后验概率。
在一个实施例中,约束关系为:
表示第t帧第k个频点的语音存在概率,
ξ
k表示第k个频点的先验信噪比,γ
k表示第k个频点的后验信噪比,q(t,k)表示第t帧第k个频点语音不存在的先验概率。
以下对q(t,k)的确定方法进行举例说明。
在一个实施例中,q(t,k)为固定的经验值,可以在区间[0,1]之间取值,例如,可以取值为0.6,本实施方式不作限制。
在另一个实施例中,q(t,k)是动态变化的,其计算公式为:q(t,k)=min[βqq(t-1,k)+(1-βq)bk,qmax];其中,βq为平滑参数,q(t-1,k)表示第t-1帧第k个频点语音不存在的先验概率,bk为二元判决,根据第t帧第k个频点的后验信噪比的大小确定bk的取值,qmax为预设的q(t,k)的最大取值。
在一个实施例中,根据如下规则做出语音存在与否的二元判决bk:
上式中,M表示频点的分割值,即第1个频点至第M个频点的后验信噪比的门限和第M个频点以后的频点的后验信噪比的门限不同,γ(t,k)为第t帧第k个频点的后验信噪比,γ1为前M个频点后验信噪比的门限,γ2为第M个频点之后的频点的后验信噪比的门限,bk=0表示语音存在,bk=1表示语音不存在。其中,M、γ1和γ2的取值可以根据需要确定,例如,M=40,γ1=6,γ2=0.8。
值得一提的是,由于语音在低频和高频能量差距很大,对于不同频点使用不同的后验信噪比门限,可以提升估计的准确度。
需要说明的是,βq的取值和qmax的取值可以根据需要设置,例如,βq可以设置为0.97,qmax可以设置为0.95,此处不做限制。
值得一提的是,动态估计q(t,k),能有效降低语音失真。
步骤204:根据当前帧的语音存在概率、当前帧的先验信噪比、当前帧的后验信噪比,以及预设的最小均方误差MMSE增益函数,计算当前帧的增益值。
具体地说,在进行语音增强时,需要使用MMSE增益函数对语音进行增强处理。
在一个实施例中,MMSE增益函数为:
其中,G(ξ
k,γ
k)表示第k个频点的增益值,
ξ
k表示第k个频点的先验信噪比,γ
k表示第k个频点的后验信噪比,
表示第t帧第k个频点的语音存在概率,I
0()表示第0阶修正贝塞尔函数,I
1()表示第1阶修正贝塞尔函数。
步骤205:根据当前帧的增益值和当前帧的带噪幅度谱,确定当前帧增强后的语音幅度谱。
具体地说,电子设备可以根据公式:
计算各频点增强后的语音幅度;其中,
表示第t帧第k个频点增强后的语音幅度,G(ξ
k,γ
k)表示第k个频点的增益值,|Y(t,k)|表示第t帧第k个频点的带噪幅度谱。基于当前帧的各频点增强后的语音幅度,确定当前帧增强后的语音幅度。
步骤206:根据当前帧增强后的语音幅度谱,确定输入语音增强后的语音。
具体地说,电子设备获取输入语音的相位谱,将输入语音的相位谱作为输入语音增强后的相位谱,与增强后的语音幅度谱相乘,得到增强信号的完整频谱,并对其进行快速傅立叶逆变换(Inverse Fast Fourier Transform,IFFT)运算,得到增强后的时域信号。电子设备将IFFT得到的增强后的时域信号进行重叠相加,得到增强后的语音。
以下结合远场语音识别的单麦克风语音增强方案,举例说明本实施方式的先验信噪比计算方法在语音增强领域的应用过程。
目前,传统的单麦克风语音增强的方案虽然能降低噪声,但带来的语音失真也很严重,反而会造成语音识别性能的下降。本实施方式中的单麦克风语音增强方法如图3所示。包括以下步骤:
步骤301:分帧加窗。
具体地说,电子设备对输入语音(含噪声)进行分帧、加窗,将输入语音分解为以帧为单位的语音信号。在分帧加窗阶段,对输入语音进行分帧、加窗,得到一帧信号。窗函数可以采用海明窗。窗长度由采样频率决定,以使每帧信号的持续时间在16毫秒左右。分帧时,帧移长度为帧长的一半。
步骤302:快速傅立叶变换(Fast Fourier Transform,FFT)。
具体地说,对每一帧含噪语音进行FFT运算,得到每帧含噪语音的幅度谱和相位谱。其中,FFT变换的采样点点数与加窗阶段的采样点点数保持一致,例如,都为256个采样点。对于输入语音,同时保留幅度谱和相位谱,幅度谱用于噪声估计和MMSE语音增强,相位谱用于在后端恢复时域信号。
步骤303:噪声估计。
具体地说,使用加权谱平均方法来估计每帧语音的噪声幅度谱。在处理每一帧语音的过程中,电子设备将当前帧的带噪幅度谱减去上一帧估计的噪声幅度谱,求绝对值,再与上一帧的噪声幅度谱的即时波动估计值和预设参数的乘积进行比较,绝对值低于乘积时更新噪声幅度谱,否则保持估计噪声幅度谱不变。
在一个例子中,噪声估计算法如下:
步骤304:后验信噪比计算。
具体地说,电子设备将每帧语音的带噪功率谱除以估计的噪声功率谱,得到每帧的后验信噪比。其中,带噪功率谱等于带噪幅度谱的平方,噪声功率谱等于噪声幅度谱的平方。后验信噪比的计算公式为:
步骤305:先验信噪比计算。
具体地说,电子设备使用结合了滤波器的系数的直接判决法计算每帧语音的先验信噪比。其中,先验信噪比计算公式如下:
当前帧的滤波器系数计算公式如下:
步骤306:语音存在概率计算。
具体地说,电子设备利用先验信噪比和后验信噪比计算当前帧语音存在概率,计算公式为:
步骤307:MMSE语音增强处理。
具体地说,使用MMSE估计器,结合语音存在概率,求得语音幅度谱的MMSE增益函数,然后得到增强后的语音幅度谱。由前面计算得到的后验信噪比和先验信噪比,再联合语音存在概率,得到结合了语音存在概率的MMSE增益函数式为:
然后利用增益函数求得增强后的语音幅度谱,计算公式为:
步骤308:IFFT变换。
具体地说,将输入语音的相位谱作为增强后语音的相位谱,与增强后的语音幅度谱
相乘,得到增强信号的完整频谱,并对其进行IFFT运算,得到增强后的时域信号。
步骤309:重叠相加。
具体地说,对IFFT得到的增强后的时域信号进行重叠相加,得到增强后的语音。
值得一提的是,通过本实施方式提及的单麦克风语音增强方法,采用单麦克风,体积小,计算量小,硬件成本低,可应用产品范围广。在使用语音识别应用进行实验过程中,采用该方法对信噪比10dB的400条带噪语料进行识别,CER(字错率)从处理前的18.26%下降到处理后的6.22%,可见本方案对语音识别性能提升明显。
需要说明的是,以上仅为举例说明,并不对本发明的技术方案构成限定。
与现有技术相比,本实施方式中提供的先验信噪比的计算方法,使用上一帧计算得到的滤波器系数,对先验信噪比进行了滤波处理,降低了语音增强后信号的失真,进而提高了语音识别性能。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
本发明第三实施方式涉及一种先验信噪比的计算装置,如图4所示,包括:获取模块401和计算模块402。获取模块401用于获取上一帧的滤波器的系数、上一帧降噪处理后的幅度谱、上一帧的噪声幅度谱和当前帧的后验信噪比;计算模块402用于根据上一帧的滤波器的系数、上一帧降噪处理后的幅度谱、上一帧的噪声幅度谱和当前帧的后验信噪比,计算当前帧的先验信噪比。
不难发现,本实施方式为与第一实施方式相对应的系统实施例,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。
值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。
本发明第四实施方式涉及一种电子设备,如图5所示,包括:至少一个处理器501;以及,与至少一个处理器501通信连接的存储器502;其中,存储器502存储有可被至少一个处理器501执行的指令,指令被至少一个处理器501执行,以使至少一个处理器501能够执行如上述实施方式提及的先验信噪比的计算方法。
该电子设备包括:一个或多个处理器501以及存储器502,图5中以一个处理器501为例。处理器501、存储器502可以通过总线或者其他方式连接,图5中以通过总线连接为例。存储器502作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。处理器501通过运行存储在存储器502中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述先验信噪比的计算方法。
存储器502可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储选项列表等。此外,存储器502可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施方式中,存储器502可选包括相对于处理器501远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个模块存储在存储器502中,当被一个或者多个处理器501执行时,执行上述任意方法实施方式中的先验信噪比的计算方法。
上述产品可执行本申请实施方式所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施方式中详尽描述的技术细节,可参见本申请实施方式所提供的方法。
本发明第五实施方式涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。