一种语音降噪方法

文档序号:2823450阅读:784来源:国知局
专利名称:一种语音降噪方法
技术领域
本发明涉及语音降噪领域,特别涉及一种应用于车内噪声谱缓慢变化环境下的语 音降噪方法。
背景技术
随着科技的发展,现代化交通工具座舱中的噪声污染成为人们关注的话题。如何 在这种相对封闭的环境中尽量降低由于发动机运转、气流与车身摩擦及空调风扇等所带来 的噪声污染,从而得到令人满意的休息和语音交流的环境,成为国内外研究的热点。针对这一需求,就要采用以提高车内语音信噪比(Signal to NoiseRatio,SNR)为 目标的信噪分离技术。为此,现有技术中提出了基于小波的噪声检测技术、基于麦克风阵列 的降噪方法以及基于噪声谱相减的信噪分离技术。通过上述方法和技术提高了车内语音信 噪比,减少了噪声污染。发明人在实现本发明的过程中,发现上述现有技术至少存在以下缺点和不足小波技术由于过于复杂,难以在当前数字信号处理器上实现;而麦克风阵列降噪 受限于麦克风数量和阵列形状,不适合头戴式耳机的应用。由于车内噪声谱在一段时间内 趋近于平稳,当前针对这一特点,采用噪声谱相减技术可以较容易的提高语音信号的信噪 比,具体方法为在无语音通信阶段提前统计出稳态噪声的谱特性,在有语音段从语音和噪 声的混合信号中减去噪声谱,从而得到纯净的语音信号。但是,车内噪声的稳态性并不是绝 对的,在一段时间内会产生缓慢变化,并且在不同车速和路况条件下其谱分布也并不相同。 因此若单纯采用此种方法在实际应用中会产生较大的误差,甚至进一步降低输入信号的信 噪比。

发明内容
为了能更准确的获取到语音信号,提高输出信号的信噪比,本发明提供了一种语 音降噪方法,所述方法包括以下步骤(1)将输入的信号按照分帧规则进行分帧;(2)判断当前帧的开始是否为一段语音信号的起始点,如果是,执行步骤(3);如 果否,更新起始点之前的噪声平均功率谱,并准备处理下一帧,执行步骤(2);(3)获取当前帧混合信号的功率谱;(4)根据步骤(2)中获取到的噪声平均功率谱和步骤(3)中获取到的混合信号的 功率谱,获取纯净语音信号的功率谱,获取并输出时域波形,并准备处理下一帧;(5)判断当前帧的开始是否为语音信号的终止点,如果是,执行步骤(6);如果否, 执行步骤⑶;(6)清空上次计算噪声平均功率谱过程中得到的NXFrame_Length长度缓冲区中 的数据,执行步骤(9),其中,N为帧的数量,Frame_Length为一帧采样点数;(7)判断当前帧开始是否为语音信号的起始点,如果是,执行步骤⑶;如果否,执行步骤(9);(8)判断无语音段是否达到固定长度NXFrame^ength,如果是,使用当前更新得到的噪声平均功率谱,执行步骤(3);如果否,将上一无语音段中获取到的噪声平均功率谱 作为当前的噪声平均功率谱,执行步骤(3);(9)将所有的N帧数据左移一帧,将当前帧作为第N帧数据,更新噪声平均功率谱, 并准备处理下一帧,执行步骤(7)。步骤(8)中的所述如果否,将上一无语音段中获取到的噪声平均功率谱作为当前 的噪声平均功率谱,具体为无语音段小于固定长度,为一段连续语音的短暂停顿或是由于语音动态检测误将 语音段误判为噪声段,造成对噪声平均功率谱统计错误,不进行噪声平均功率谱更新,将上 一无语音段中获取到的噪声平均功率谱作为当前的噪声平均功率谱。步骤(9)中的所述将所有的N帧数据左移一帧,将当前帧作为第N帧数据,具体 为将所有的N帧数据左移1帧,舍弃原有的第1帧数据,原有的第2帧数据作为当前 的第1帧数据,以此类推,最后将当前帧作为第N帧数据。步骤⑵、(5)、(7)和⑶中所述的判断方法,具体为语音动态检测。步骤(2)、(8)和(9)中所述的更新噪声平均功率谱,具体为获取每一帧的功率谱,再对所有帧的功率谱取平均,将平均后的功率谱作为更新 后的噪声平均功率谱。本发明实施例提供的技术方案的有益效果是通过采用语音端点检测,获取到语音段的起始和终止位置,并通过在无语音段时 实时更新噪声谱的方式跟踪噪声的变化,由于在语音段总是采用之前最新更新的噪声谱进 行功率谱相减,因此能够最大限度减小噪声不断缓慢变化所带来的误差;同时在语音动态 检测后设置了噪声最短长度限制,最大程度的避免了在连续语音段中将语音误检为噪声, 造成对噪声平均功率谱统计错误的情况,从而进一步地获取到更准确的语音信号,提高输 出信号的信噪比,满足了实际应用中的需要。


图1是本发明实施例提供的语音降噪方法的流程图;图2是本发明实施例提供的N0ISEX-92噪声库中Volvo汽车内噪声频谱;图3是本发明实施例提供的录制的长安汽车内噪声频谱;图4是本发明实施例提供的更新噪声及获得当前噪声功率谱示意图;图5是本发明实施例提供的输出信噪比的对比示意图;图6是本发明实施例提供的输出信噪比的对比示意图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方 式作进一步地详细描述。为了能更准确的获取到语音信号,提高输出信号的信噪比,本发明实施例提供了一种语音降噪方法,参见图1,该方法内容如下本发明实施例提供的语音降噪方法基于语音动态检测(Voice ActivityDetection, VAD)技术和噪声谱相减技术。VAD技术最早应用于语音识别系统,通 过准确判断单词、词组的起始点和终止点,可以更好的提取语音中的参数信息并且和语音 库中的参数信息相比较,提高语音识别的准确性。VAD技术主要依赖于一帧信号的能量和 ZCR(Zero Crossing Rate,过零率)两个特征参数,其依据是背景噪声与语音的短时段能量 和ZCR特征从统计上看存在有相当大的区别。将VAD技术和噪声谱相减技术相结合,通过合理的噪声模型更新方式,就可以在无语音时段统计、更新噪声模型,而在有语音时段从混合信号的谱中减去当前最新的噪声 谱,从而获得纯净的语音信号。语音动态检测技术由于帧长划分、参数选择、判决模式的不同而不可避免的存在 误差。针对以语音通信为目标的应用,就要人为设置一定条件,避免在语音通信过程中单词 之间,短句之间存在过多的间断,保持语音通信的连续性;同时为了避免在统计噪声模型时 被语音信号所干扰,就要避免将语音误判为噪声的情况,而适当允许将噪声误判为语音的 情况。因此,这样的应用场合也对该方法提出了特殊的要求。详细的实现方法参见下文描述101 将输入的信号按照分帧规则进行分帧;上述分帧规则具体为每一帧具有相同的采样点数,可以表示为Frame_Length。102:通过语音动态检测判断当前帧的开始是否为一段语音信号的起始点,如果 是,执行步骤103 ;如果否,更新起始点之前噪声平均功率谱,并准备处理下一帧,重新执行 步骤102 ;具体地,上述语音动态检测方法可以为双门限判决法、LSPE (Least-Square Periodicity Estimator,最小均方差周期估计法)、GAET (Geometrically Adaptive Energy Threshold,几何自适应能量阈值法)等检测方法,具体实现时,本发明实施例对此不做限 制。在实际应用中,通常需要经过多次检测才会获取到起始点,对起始点之前的噪声 平均功率谱进行更新。例如经过3次检测才获取到起始点,即第3帧的开始为语音信号的 起始点,所经历的过程具体为第1帧时,通过语音动态检测判断出没有获取到语音信号的 起始点,则计算第1帧噪声的功率谱;按照分帧规则进行分帧,第2帧时,通过语音动态检测 判断出没有获取到语音信号的起始点,则计算第2帧噪声的功率谱;按照分帧规则进行分 帧,第3帧时,通过语音动态检测判断出获取到了语音信号的起始点,则执行步骤103,并将 前两帧的噪声功率谱进行平均,(第1帧噪声的功率谱+第2帧噪声的功率谱)/2,来获取 到第1帧和第2帧的噪声平均功率谱。103 获取当前帧混合信号的功率谱;104 根据步骤102中获取到的噪声平均功率谱和步骤103中获取到的混合信号的 功率谱,获取纯净语音信号的功率谱;具体地,根据噪声平均功率谱、混合信号的功率谱,采用谱减法,获取纯净语音信 号的功率谱,也可以采用自适应滤波等方法获取到纯净语音信号的功率谱,具体实现时,本 发明实施例对此不做限制,本发明实施例优选地通过谱减法获取纯净语音信号的功率谱。
由于在语音段总是采用之前最新更新的噪声平均功率谱进行功率谱相减,因此能 够最大限度减小噪声不断缓慢变化所带来的误差,从而获取到更准确的语音信号。105 对步骤104中获取到的纯净语音信号的功率谱进行傅立叶反变换,获取当前 帧语音信号的时域波形,并将获取到的波形输出,并准备处理下一帧;具体地,上述将获取到的波形输出表明当前帧数据处理完。
106:通过语音动态检测判断当前帧的开始是否为语音信号的终止点,如果是,执 行步骤107 ;如果否,重新执行步骤103 ;具体地,当检测到语音信号的起始点后,又检测到语音信号的终止点,则,表明这 一段语音信号处理完毕,进入无语音段,即,语音段和无语音段交替排列。其中,上述判断当 前帧的开始是否为语音信号的终止点可以采用步骤102中所描述的通过语音动态检测判 决来实现,在此不再赘述。107 清空上次计算噪声平均功率谱中得到的NXFrame_Length长度缓冲区中的 数据,执行步骤110;其中,N为帧的数量,Frame_Length为一帧采样点数,N的取值和实际应用中的混 合信号的采样率、环境噪声的稳定程度等因素有关,具体实现时,本发明实施例对此不做限 制。108:通过语音动态检测判断当前帧的开始是否为语音信号的起始点,如果是,执 行步骤109 ;如果否,执行步骤110 ;109 以NXFrame_Length为固定长度,判断无语音段是否达到固定长度,如果是, 使用当前更新得到的噪声平均功率谱,并重新执行步骤103 ;如果否,则将上一无语音段中 获取到的噪声平均功率谱作为当前的噪声平均功率谱,并重新执行步骤103,直到输入的信 号结束;当无语音段长度没有达到固定长度,S卩小于固定长度时,则视为一段连续语音的 短暂停顿,进而不进行噪声平均功率谱更新,仍然使用上一次噪声平均功率谱。由于在语音动态检测后设置了噪声长度限制,最大程度的避免了在连续语音段中 将语音误检为噪声的情况,提高了噪声模型的准确性,进一步获取到更准确的语音信号。110 将所有的N帧数据左移一帧,将当前帧作为第N帧数据,更新噪声平均功率 谱,并准备处理下一帧,重新执行步骤108。将所有的N帧数据左移一帧,将当前帧作为第N帧数据,具体为将所有的N帧数 据左移1帧,舍弃原有的第1帧数据,原有的第2帧数据作为当前的第1帧数据,以此类推, 最后将当前帧作为第N帧数据。例如以N为20为例,当已经检测了 20帧没有获取到起始点,则已经达到固定长 度(即缓冲区中20帧数据已经排满),此时再检测第21帧,通过语音动态检测判断出还没 有获取到起始点(即第21帧仍为噪声),则,将原有的20帧数据左移1帧,从而舍弃原有 的第1帧数据,即原有的第2帧数据作为当前的第1帧数据,将当前帧(即第21帧)作为 第20帧数据,即以第2帧到第21帧这20帧数据,计算当前噪声平均功率谱(即先计算每 一帧的功率谱,再对这20帧的功率谱取平均,将平均后的功率谱作为更新后的噪声平均功 率谱)。综上所述,本发明实施例提供了一种语音降噪方法,该方法通过采用语音端点检测,获取到语音段的起始和终止位置,并通过在无语音段时实时更新噪声谱的方式跟踪噪 声的变化,由于在语音段总是采用之前最新更新的噪声谱进行功率谱相减,因此能够最大 限度减小噪声不断缓慢变化所带来的误差;同时在语音动态检测后设置了噪声最短长度限 制,最大程度的避免了在连续语音段中将语音误检为噪声,造成对噪声平均功率谱统计错 误的情况,从而进一步提高了噪声模型的准确性,从而获取到更准确的语音信号,提高输出 信号的信噪比,满足了实际应用中的需要。本发明 实施例以2个简单的试验来验证本发明实施例提供的方法的有效性。本实 验是基于PC机matlab6. 5环境下的,实验所用的噪声分别为N0ISEX-92噪声库中volvo汽 车内部噪声(120km/h,雨天环境,浙青路面)文件V0lV0_n. wav和自己录制的长安汽车内部 噪声(Okm/h,晴天)文件changarun. wav,均为16kHz采样,持续时长26秒,其频谱分别如 图2、3所示;语音信号为16kHz采样的英文对话,持续时长26秒,其时域波形如图4所示。实验1:本实验测试在噪声频谱分布不变情况下,信噪比缓慢变化时本方法的性能。读取V0lV0_n. wav文件中噪声信号并乘以一线性函数(斜坡函数、三角波函数), 再与语音信号叠加作为输入信号,使其输入信噪比在Odb至20db之间缓慢变化,共生成4 个测试输入信号,分别为输入信号1 信噪比从开始的Odb缓慢增大到最后的20db ;输入信号2 信噪比从开始的20db缓慢减小到最后的Odb ;输入信号3 信噪比从开始的Odb缓慢增大到中间的20db,再缓慢减小到最后的 Odb ;输入信号4 信噪比从开始的20db缓慢减小到中间的Odb,在缓慢增大到最后的 20db。读取输入混合信号,以长度Frame_Length = 256进行分帧,帧移Frame_Inc = 128,采用双门限判决法进行语音动态检测,设定能量门限ampl = 10,amp2 = 2,过零率门 限 zcrl = 10,zcr2 = 5,设定 N = 20。图5中给出了在相同的语音动态检测机制及参数的情况下,采用本发明实施例提 供的方法和采用固定噪声模型方法得到的输出信噪比的示意图,图5中的曲线1为采用本 发明实施例提供的方法得到的输出信噪比,曲线2为采用固定噪声模型方法得到的输出信 噪比,从图5中可以看出,采用本发明实施例提供的方法可以获取到较高的信噪比,满足了 实际应用中的需要。实验2 本实验测试在信噪比不变情况下,噪声频谱分布变化时本方法的性能。实验步骤与实验1相同,所不同的是输入的是噪声信号,该噪声信号是V0lV0_ η. wav和changarun. wav两种噪声交替出现的信号,且保持输入信噪比不变,具体描述参见 表1 表1输入的噪声信号 注V表示加入该噪声,X表示不加入该噪声图6中给出了在相同的语音动态检测机制及参数的情况下,采用本发明实施例提 供的方法和采用固定噪声模型方法得到的输出信噪比的示意图,图6中的曲线1为采用本 发明实施例提供的方法得到的输出信噪比,曲线2为采用固定噪声模型方法得到的输出信 噪比,从图6中可以看出,采用本发明实施例提供的方法可以获取到较高的信噪比,满足了 实际应用中的需要。通过上述2个实验验证,可以看出本发明实施例提供的方法的可行性,可以获取 到较高的信噪比,满足了实际应用中的需要。本领域技术人员可以理解附图只是一个优选实施例的示意图,上述本发明实施例 序号仅仅为了描述,不代表实施例的优劣。以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和 原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
一种语音降噪方法,其特征在于,所述方法包括以下步骤(1)将输入的信号按照分帧规则进行分帧;(2)判断当前帧的开始是否为一段语音信号的起始点,如果是,执行步骤(3);如果否,更新起始点之前的噪声平均功率谱,并准备处理下一帧,执行步骤(2);(3)获取当前帧混合信号的功率谱;(4)根据步骤(2)中获取到的噪声平均功率谱和步骤(3)中获取到的混合信号的功率谱,获取纯净语音信号的功率谱,获取并输出时域波形,并准备处理下一帧;(5)判断当前帧的开始是否为语音信号的终止点,如果是,执行步骤(6);如果否,执行步骤(3);(6)清空上次计算噪声平均功率谱过程中得到的N×Frame_Length长度缓冲区中的数据,执行步骤(9),其中,N为帧的数量,Frame_Length为一帧采样点数;(7)判断当前帧开始是否为语音信号的起始点,如果是,执行步骤(8);如果否,执行步骤(9);(8)判断无语音段是否达到固定长度N×Frame_Length,如果是,使用当前更新得到的噪声平均功率谱,执行步骤(3);如果否,将上一无语音段中获取到的噪声平均功率谱作为当前的噪声平均功率谱,执行步骤(3);(9)将所有的N帧数据左移一帧,将当前帧作为第N帧数据,更新噪声平均功率谱,并准备处理下一帧,执行步骤(7)。
2.根据权利要求1所述的方法,其特征在于,步骤(8)中的所述如果否,将上一无语音 段中获取到的噪声平均功率谱作为当前的噪声平均功率谱,具体为无语音段小于固定长度,为一段连续语音的短暂停顿或是由于语音动态检测误将语音 段误判为噪声段,造成对噪声平均功率谱统计错误,不进行噪声平均功率谱更新,将上一无 语音段中获取到的噪声平均功率谱作为当前的噪声平均功率谱。
3.根据权利要求1所述的方法,其特征在于,步骤(9)中的所述将所有的N帧数据左移 一帧,将当前帧作为第N帧数据,具体为将所有的N帧数据左移1帧,舍弃原有的第1帧数据,原有的第2帧数据作为当前的第 1帧数据,以此类推,最后将当前帧作为第N帧数据。
4.根据权利要求1所述的方法,其特征在于,步骤(2)、(5)、(7)和(8)中所述的判断 方法,具体为语音动态检测。
5.根据权利要求1所述的方法,其特征在于,步骤(2)、(8)和(9)中所述的更新噪声 平均功率谱,具体为获取每一帧的功率谱,再对所有帧的功率谱取平均,将平均后的功率谱作为更新后的 噪声平均功率谱。
全文摘要
本发明公开了一种语音降噪方法,涉及语音降噪领域,通过采用语音端点检测,获取到语音段的起始和终止位置,并通过在无语音段时实时更新噪声谱的方式跟踪噪声的变化,由于在语音段总是采用之前最新更新的噪声谱进行功率谱相减,因此能够最大限度减小噪声不断缓慢变化所带来的误差;同时在语音动态检测后设置了噪声最短长度限制,最大程度的避免了在连续语音段中将语音误检为噪声,造成对噪声平均功率谱统计错误的情况,从而进一步地获取到更准确的语音信号,提高输出信号的信噪比,满足了实际应用中的需要。
文档编号G10L11/02GK101866652SQ20101016909
公开日2010年10月20日 申请日期2010年5月11日 优先权日2010年5月11日
发明者冯砚儒, 张涛, 张雯, 李海, 赵亮 申请人:天津大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1