一种半监督瞬态噪声抑制方法与流程

文档序号:22317378发布日期:2020-09-23 01:45阅读:283来源:国知局
一种半监督瞬态噪声抑制方法与流程

本发明涉及单通道语音增强领域,尤其涉及一种半监督瞬态噪声抑制方法。



背景技术:

在人们的交流活动中,语音发挥着主导作用。由于受到形形色色噪声的污染,人耳和相关智能装置收到的是带噪语音,语音的质量和可懂度会有明显的下降,影响了人们的主观听觉感受和智能装置的语音识别率。语音增强技术就是解决这类问题的主要方法。如何从说话人带噪语音中恢复出干净语音一直都是信号处理领域的热点问题。近年来研究者相继提出了一些基于监督学习的单通道语音增强算法,这些算法利用干净语音和干净噪声在时频域上的稀疏特性,通过学习训练数据样本的结构特征并构造相应的字典,将带噪语音在字典上投影,进而估计出干净语音。

在有些情况下,一时难以同时获得说话人的干净语音和干净噪声,只有干净语音和带噪语音样本可供训练,需要研究新的方法来从说话人带噪语音估计出干净语音。随着科技的发展以及居家办公和学习的社会需求,视频会议和网络教学系统发挥着重要的作用。在视频会议和网络教学等场景中经常会突然出现短促的瞬态噪声,如击键、鼠标点击、敲击,关门产生的声音等,会影响时频会议和教学的效果。瞬态噪声主要表现为在时间上的短脉冲性和频率分布的广泛性,这与语音特征有明显差异。



技术实现要素:

针对只有说话人的干净语音训练样本和在瞬态噪声环境中的带噪语音训练样本,本发明的目的是充分利用瞬态噪声与干净语音时频特征的差异,提供一种半监督瞬态噪声抑制方法。在训练阶段,首先构建说话人干净语音和在瞬态噪声环境中的带噪语音训练数据集;然后对干净语音做短时傅里叶变换得到其时频谱,利用稀疏非负矩阵分解方法获得干净语音的基矩阵;接着对带噪语音做短时傅里叶变换得到其时频谱,将最优修正对数谱幅度估计算法(omlsa)用于提取带噪语音中的瞬态噪声,同时用语音活动检测(vad)算子检测干净语音并形成连续干净语音,利用提取的瞬态噪声时频谱与连续干净语音时频谱的相关系数与门限比较,剔除其中的剩余语音成分,获得更干净的噪声时频谱,利用稀疏非负矩阵分解方法获得瞬态噪声的基矩阵;在检测阶段,对带噪语音做短时傅里叶变换,获得时频谱,在干净语音基矩阵和瞬态噪声基矩阵上分解得到相应的权矩阵,通过基矩阵和权矩阵的运算,得到语音和噪声时频谱幅度的初始估计,计算掩码,将其与带噪语音时频谱运算,得到语音时频谱的最终估计,做短时傅里叶逆变换,得到抑制噪声后的时域语音。另外,还利用了估计的瞬态噪声更新其基矩阵,有利于对噪声环境的自适应。

本发明的目的是通过以下技术方案实现的:一种半监督瞬态噪声抑制方法,包括:

步骤一、在训练阶段,首先构建说话人干净语音和说话人在瞬态噪声环境中的带噪语音训练数据集;然后对说话人干净语音做短时傅里叶变换得到其时频谱,提取其幅度,利用稀疏非负矩阵分解方法获得干净语音的基矩阵;接着对说话人带噪语音做短时傅里叶变换得到其时频谱,将最优修正对数谱幅度估计算法(omlsa)用于提取带噪语音中的瞬态噪声,计算提取的瞬态噪声时频谱与连续干净语音时频谱的相关系数,并将其与门限比较,剔除提取的瞬态噪声中的剩余语音成分,获得更干净的噪声,利用稀疏非负矩阵分解方法获得其基矩阵。

步骤二、在检测阶段,对带噪语音做短时傅里叶变换,获得时频谱,提取其幅度,在干净语音基矩阵和瞬态噪声基矩阵上分解得到相应的权矩阵,通过基矩阵和权矩阵的运算,得到语音和噪声时频谱幅度的初始估计,进一步利用掩码得到它们的最终估计,做短时傅里叶逆变换,得到抑制噪声后的时域语音。另外,还利用了估计的瞬态噪声更新其基矩阵,有利于对噪声环境的自适应。

由上述本发明提供的技术方案可以看出,由于瞬态噪声是一类短促噪声,在视频会议和网络教学等场景中经常突然出现,如击键、鼠标点击、敲击等,它与语音特征存在差异,表现在时间上的脉冲性和频率分布的广泛性。在只有说话人干净语音和说话人在瞬态噪声环境中的带噪语音训练数据集的情况下,通过调整最优修正对数谱幅度估计算法(omlsa)的参数,将其用于提取带噪语音中的瞬态噪声,利用稀疏非负矩阵分解方法获得其基矩阵的估计。这种半监督瞬态噪声抑制方法不仅使其应用场景扩大了,而且可以抑制非平稳的瞬态噪声,性能也能接近监督瞬态噪声抑制方法。另外,还利用了估计的瞬态噪声更新其基矩阵,有利于对噪声环境的自适应。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。

图1为本发明实施例提供的一种半监督瞬态噪声抑制方法的流程图。

图2为本发明实验结果,其中横坐标为时间单位为秒(time(s)),纵坐标为幅度(amplitude),(a)为说话人干净语音波形,(b)为说话人在瞬态噪声环境中的带噪语音,(c)为噪声抑制后的说话人语音波形,可以看出瞬态噪声基本上被抑制了。

具体实施方式

下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。

不同于已有的大多数单通道语音分离算法,充分利用瞬态噪声与干净语音时频特征的差异,提供一种半监督瞬态噪声抑制方法。在训练阶段,首先构建说话人干净语音和在瞬态噪声环境中的带噪语音训练数据集;然后对干净语音做短时傅里叶变换得到其时频谱,利用稀疏非负矩阵分解方法获得干净语音的基矩阵;接着对带噪语音做短时傅里叶变换得到其时频谱,将最优修正对数谱幅度估计算法(omlsa)用于提取带噪语音中的瞬态噪声,同时用语音活动检测(vad)算子检测干净语音并形成连续干净语音,利用提取的瞬态噪声时频谱与连续干净语音时频谱的相关系数与门限比较,剔除其中的剩余语音成分,获得更干净的噪声时频谱,利用稀疏非负矩阵分解方法获得瞬态噪声的基矩阵;在检测阶段,对带噪语音做短时傅里叶变换,获得时频谱,在干净语音基矩阵和瞬态噪声基矩阵上分解得到相应的权矩阵,通过基矩阵和权矩阵的运算,得到语音和噪声时频谱幅度的初始估计,计算掩码,将其与带噪语音时频谱运算,得到语音时频谱的最终估计,做短时傅里叶逆变换,得到抑制噪声后的时域语音。另外,还利用了估计的瞬态噪声更新其基矩阵,有利于对噪声环境的自适应。如图1所示,其主要包括:

步骤一、训练阶段

步骤1、构建语音训练数据集。构建说话人干净语音的训练数据集{str(t)}和说话人在瞬态噪声环境中的带噪语音训练数据集{xtr(t)};击键、鼠标点击、敲击等突然出现的短促声音都属于瞬态噪声。

步骤2、训练说话人干净语音str(t),获得干净语音基矩阵sw(tf,f)。

步骤21、对说话人干净语音的训练数据集{str(t)}中的信号str(t)做短时傅里叶变换(stft),得到时频域上的时频谱,即:

str(tf,f)=stft{str(t)},

其中,stft{}为短时傅里叶变换算子,tf和f分别为时间帧和频率点,|str(tf,f)|为str(tf,f)的幅度。

步骤22、采用稀疏非负矩阵分解(snmf)方法学习说话人干净语音时频谱的幅度特征,得到相应的基矩阵sw(tf,f),基矩阵通过如下的分解获得:

|str(tf,f)|=sw(tf,f)sh(tf,f)+μ|sh(tf,f)|1,

其中,sh(tf,f)是说话人干净语音str(t)的时频谱幅度权矩阵,μ为稀疏参数,|·|1表示1范数。

步骤3、训练说话人带噪语音xtr(t)=str(t)+ntr(t),获得瞬态噪声基矩阵nw(tf,f)。

步骤31、对由说话人在瞬态噪声环境中的语音训练数据集{xtr(t)}中的xtr(t)做短时傅里叶变换(stft),得到时频域上的时频谱,即:

xtr(tf,f)=stft{xtr(t)},

其中,stft{}为短时傅里叶变换算子,tf和f分别为时间帧和频率点,|xtr(tf,f)|为xtr(tf,f)的幅度;

步骤32、瞬态噪声与语音相比,时域上变化很快,频域上分布广泛,通过设计参数,将最优修正对数谱幅度估计算法(omlsa)用于从带噪语音xtr(t)时频谱xtr(tf,f)中提取瞬态噪声,即:

其中,omlsa{}为最优修正对数谱幅度估计算子。

步骤33、用语音活动检测(vad)算子检测干净语音,裁剪掉静音段,形成连续干净语音,其时频谱记为按下式计算与str(tf,f)的相关系数:

其中,corr{}为相关系数算子。如果相关系数大于预先给定的门限,说明该帧噪声与语音相似度高,则舍弃该帧噪声;如果相关系数小于预先给定的门限,说明该帧噪声与语音相似度低,则保留该帧噪声;这样能够获得更干净的瞬态噪声,记为ntr(tf,f),|ntr(tf,f)|为ntr(tf,f)的幅度。

步骤34、采用稀疏非负矩阵分解(snmf)方法学习噪声时频谱ntr(tf,f)的幅度特征,得到相应的基矩阵nw(tf,f),基矩阵通过如下的分解获得:

|ntr(tf,f)|=nw(tf,f)nh(tf,f)+μ|nh(tf,f)|1,

其中,nh(tf,f)是瞬态噪声ntr(tf,f)的时频谱幅度权矩阵,μ为稀疏参数,|·|1表示1范数。

步骤二、检测阶段

步骤4、抑制说话人在瞬态噪声环境中的带噪语音y(t)=s(t)+n(t)中的瞬态噪声n(t)。

步骤41、说话人在瞬态噪声环境中的带噪语音y(t)=s(t)+n(t),做短时傅里叶变换,得到时频域上的时频谱,即:

y(tf,f)=stft{y(t)}=s(tf,f)+n(tf,f),

其中,stft{}为短时傅里叶变换算子,tf和f分别为时间帧和频率点,|y(tf,f)|为y(tf,f)的幅度。

步骤42,带噪语音时频谱的幅度|y(tf,f)|在基矩阵sw(tf,f)和nw(tf,f)上进行稀疏非负矩阵分解,获得相应的权矩阵,计算如下:

其中,sh(tf,f)和nh(tf,f)分别是|y(tf,f)|在说话人干净语音基矩阵sw(tf,f)和瞬态噪声基矩阵nw(tf,f)上分解得到的权矩阵,μ为稀疏参数,|·|1表示1范数;

步骤43,对带噪语音中语音和噪声时频谱幅度进行初始估计;

首先,利用在说话人干净语音基矩阵sw(tf,f)分解得到的权矩阵sh(tf,f)估计出说话人干净语音时频谱幅度,如下式所示:

其次,利用瞬态噪声基矩阵nw(tf,f)分解得到的权矩阵nh(tf,f)估计出瞬态噪声时频谱幅度,如下式所示:

步骤45,对干净语音时频谱的最终估计。

依据初始估计结果,计算说话人干净语音的比例掩码:

按下式对干净语音和瞬态噪声时频谱估计:

其中,为矩阵对应元素乘法算子。

步骤46,获得噪声抑制后的时域语音信号。

对估计的语音信号时频谱做短时傅里叶逆变换(istft),得到:

其中,istft{}为短时傅里叶逆变换算子。

步骤47,估计瞬态噪声时频谱用于更新瞬态噪声基矩阵。令:

执行步骤33和步骤34,可以获得更新后的瞬态噪声基矩阵nw(tf,f)。

本发明实施例上述方案,在训练阶段,首先构建说话人干净语音和在瞬态噪声环境中的带噪语音训练数据集;然后对干净语音做短时傅里叶变换得到其时频谱,利用稀疏非负矩阵分解方法获得干净语音的基矩阵;接着对带噪语音做短时傅里叶变换得到其时频谱,将最优修正对数谱幅度估计算法(omlsa)用于提取带噪语音中的瞬态噪声,同时用语音活动检测(vad)算子检测干净语音并形成连续干净语音,利用提取的瞬态噪声时频谱与连续干净语音时频谱的相关系数与门限比较,剔除其中的剩余语音成分,获得更干净的噪声时频谱,利用稀疏非负矩阵分解方法获得瞬态噪声的基矩阵;在检测阶段,对带噪语音做短时傅里叶变换,获得时频谱,在干净语音基矩阵和瞬态噪声基矩阵上分解得到相应的权矩阵,通过基矩阵和权矩阵的运算,得到语音和噪声时频谱幅度的初始估计,计算掩码,将其与带噪语音时频谱运算,得到语音时频谱的最终估计,做短时傅里叶逆变换,得到抑制噪声后的时域语音。另外,还利用了估计的瞬态噪声更新其基矩阵,有利于对噪声环境的自适应。

图2给出了本发明提出的一种半监督瞬态噪声抑制方法实验结果,其中横坐标为时间单位为秒(time(s)),纵坐标为幅度(amplitude),(a)为说话人干净语音波形,(b)为说话人在瞬态噪声环境中的带噪语音,(c)为噪声抑制后的说话人语音波形,可以看出瞬态噪声基本上被抑制了。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例可以通过软件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,上述实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1