一种基于贪婪深度字典学习的单信道语音去混响方法与流程

文档序号:18557622发布日期:2019-08-30 22:49阅读:330来源:国知局
一种基于贪婪深度字典学习的单信道语音去混响方法与流程

本发明涉及的是一种单信道去混响方法。



背景技术:

混响是指在声学上,除延迟时间达到约50ms以上的反应波称为回声外,其余的反射波产生的效应统称为混响。随着互联网发展及智能设备的普及,语音或声音信号的可理解性与可感知性对于人机交互的用户体验变得尤为重要。然而混响严重影响了语音识别的准确率,降低了用户智能交互的体验,同时增加了有听力障碍者对于语音理解的困难度。

语音去混响的目的是抑制或移除混响语音中的混响成分,尽可能的实现源信号的恢复。根据系统麦克风的数量分为:单信道语音去混响和多信道语音去混响。其中单信道语音去混响利用接收位置一点的语音信号时频域特性作为先验信息对混响信号进行处理,具有系统相对简单,计算复杂度低以及成本较为低廉等优势。因此,单信道语音去混响问题具有重要的研究价值。

传统的单信道语音去混响的方法大多通过先建立语音去混响模型,通过加入不同的约束条件在非适定问题中求出可确定的解,从而获得符合条件的估计信号。尽管在求解估计信号时具有可解释性,但这些方法都存在适用范围不足,实际效果不佳等缺点。基于深度学习的语音去混响方法通过训练大量样本,直接学习混响语音和纯净语音之间的非线性映射关系。虽然能取得很好的去混响结果,但具有数据获得困难和参数冗余的缺点,导致其在实际应用中性能下降。



技术实现要素:

本发明的目的在于提供一种能够提高单信道去混响效果的基于贪婪深度字典学习的单信道语音去混响方法。

本发明的目的是这样实现的:

步骤一、将输入的混沌、纯净语音进行信号预处理,进行特征的提取;

步骤二、结合稀疏和贪婪深度字典学习对单信道语音去混响问题进行模型建立;

步骤三、将建立好的模型与提取的特征进行模型训练,得到基本系数;

步骤四、再次输入混沌、纯净语音信号数据进行测试,经过傅里叶逆变换后,最终得到纯净语音。

所述的结合稀疏和贪婪深度字典学习对单信道语音去混响问题进行模型建立具体包括:

1、对单信道语音去混响进行建模,具体描述为:

(1)将n时刻的语音信号利用下式进行描述:

其中d是原始语音,nk是k次反射后的延时单元数,ρk是第k次反射时的发射系数,s(n-knk)是第k次反射后的语音信号,u(n)表示周围环境的噪声,x(n)表示混响语音;

(2)将环境噪声u(n)去掉简化得:

(3)根据单位冲激函数的卷积性质,改为卷积的形式:

其中,h(n)是冲击响应,*是卷积操作符号,δ(n)表示单位冲激函数,h(n)反应混响的物理特征、是位于knk并且都衰减ρk倍后的许多冲击函数δ(n)的叠加,房间脉冲响应h(n)和纯净语音s(n)卷积后获得混响语音x(n);

2、将单信道语音去混响模型转化为基于稀疏表示的单信道语音去混响模型,其转化过程如下:

(1)通过稀疏表示方法对单信道语音去混响进行建模分析,在忽略环境噪声的情况下,利用下式简单描述语音去混响问题:

y=hx

其中y是混响语音,h是rir,且有x=as;

(2)根据x=as,假定纯净语音含有正交基稀疏矩阵表示矩阵a,则单信道语音去混响的稀疏表示为:

其中λ>0是用于控制稀疏性与测量空间的参数;

(3)使用ista算法进行求解;

3、引入深度语音字典,将字典学习问题转化为以下两种表示方法,任选其一:

方法1,将求解目标函数定义为:

x=dz

其中x是纯净语音,d是语音字典,z是稀疏表示矩阵;

字典学习问题表示为求解目标函数:

方法2,采用k-svd字典学习算法,将求解目标函数定义为:

其中zi是矩阵z中的第i列,||.||0表示zi中非零元素的个数,τ表示稀疏程度,用于控制z的每一列中所含非零元素的最大个数;

4、引入深度语音字典后,进行求解,具体描述为:

(1)根据单层字典学习进行求解,在求解过程中利用稀疏编码和字典更新,具体描述如下:

1)稀疏编码,运用larc方法,已知字典d(t-1),在第t次字典学习迭代中稀疏矩阵的每个列向量更新如下表示:

其中x(:,n)表示给定的观测矩阵,d(t-1)表示字典矩阵,表示满足稀疏约束条件的稀疏表示矩阵;

2)字典更新,根据所获得稀疏表示矩阵z,从训练信号集x中寻找当次迭代中更适合训练信号的字典d,字典更新如下式表示:

3)针对每一个原子||d(:,l)||2=1,残差表示为:

式中将dz分解为l个秩为1的矩阵(d(:,l)z(l:,))之和,rl代表除第l个原子之外的原子所带来的残差。通过svd分解找到与rl最为接近的秩为1的矩阵;

4)进行预处理,定义λl为下式:

λl={i|1≤i≤k,c(l,:)(i)≠0}

5)定义m为d×|λl|的矩阵,其中(λl(i),i)设置为1,其他设置为0,则:

上式代表r(l)保留z(l,:)中非零元素所对应的原子所构成的矩阵,代表z(l,:)只保留非零元素所构成的向量,字典更新如下式表示:

6)对进行svd分解得到下式:

7)使用u中的第一列来跟新d(:,l),v的第一列乘以δ(l,l)来更新相应的系数,完成一个原子的更新;

(2)根据深度字典学习进行求解,具体过程如下:

1)由下式描述多层字典学习,

x=d1*d2*z

其中d2,d2分别是双层神经网络中每层的字典;

2)采用逐层训练进行逐层分解,首先训练除第一特征层z1,字典d1:

x=d1*z1

其次对z1进行分解,求解第二层字典d2、特征z2:

z1=d2*z2

之后以此类推,得到更深层的语音字典学习;

3)基于贪婪深度字典学习的单信道语音去混响模型由此建立。

本发明将传统的单信道语音去混响方法与深度字典学习相结合,提高单信道去混响的效果,使其具有良好的去混响效果,提高深度网络结构的可推导性。

附图说明

图1本发明的方法流程图。

图2单层字典学习的示意图。

图3双层学习示意图。

图4贪婪的分层学习示意图。

具体实施方式

下面举例对本发明做更详细的描述。

如图1所示,本发明基于贪婪深度字典学习的单信道语音去混响技术,首先将输入的混沌、纯净语音进行信号预处理,进行特征的提取;其次,对单信道语音去混响问题结合贪婪深度字典学习进行模型的建立,具体描述如下:

1、对单信道语音去混响问题进行数学建模。

通过混响产生的具体的物理原理,对单信道语音去混响问题进行尽可能的数学建模。混响是指在声学上,除延迟时间达到约50ms以上的反应波称为回声外,其余的反射波产生的效应统称为混响。早期的混响会产生一种声染色现象,它会导致语音信号在频域失真。后期混响的存在会导致语音模糊不清,降低语音可懂度。因此,提出该发明能够有效的解决上述问题。具体描述方法如下所示。

(1)将n时刻的语音信号利用下式进行描述:

其中d是原始语音,nk是k次反射后的延时单元数,ρk是第k次反射时的发射系数,s(n-knk)是第k次反射后的语音信号,u(n)表示周围环境的噪声,x(n)表示混响语音。

(2)为了对混响问题进行建模分析,将步骤1中(1)过程的环境噪声u(n)去掉简化得:

(3)根据单位冲激函数de卷积性质,将步骤1中(2)的公式改写为卷积的形式:

其中,h(n)是冲击响应(roomimpulseresponse,rir),*是卷积操作符号,δ(n)表示单位冲激函数,h(n)可以表示混响的物理特征,它是位于knk并且都衰减ρk倍后的许多冲击函数δ(n)的叠加。

h(n)是冲击响应(roomimpulseresponse,rir)也可称为房间脉冲响应。房间脉冲响应是一个由生源位置发出到麦克风位置的脉冲响应撩号,它反映了声学环境所有声学特性。由步骤1中(3)式可知,房间脉冲响应h(n)和纯净语音s(n)卷积后获得混响语音x(n)。因此,去混响的过程就是在混响语音x(n)中去除房间的脉冲响应h(n)的影响,最终获得纯净的语音s(n),因此这一过程的关键点就是求出h(n)的逆。

2、将单信道语音去混响模型转化为基于稀疏表示的单信道语音去混响模型,转化过程如下:

(1)通过稀疏表示方法对单信道语音去混响问题进行建模分析。在忽略环境噪声的情况下,利用下式描述语音去混响问题:

y=hx

其中y是混响语音,h是rir,且有x=as。

(2)根据步骤2中(1)的x=as,假定纯净语音含有正交基稀疏矩阵表示矩阵a,则单信道语音去混响的稀疏表示可以写为:

其中λ>0是用于控制稀疏性与测量空间的参数。

(3)步骤2中的(2)式,使用ista算法进行求解。

3、在步骤2的求解基础上,将深度语音字典引入混响的问题中。为了获得深度语音字典,将字典学习问题可以转化为以下两种表示方法,任选其一:

方法1,将求解目标函数定义为:

x=dz

其中x是纯净语音,d是语音字典,z是稀疏表示矩阵。从矩阵分解角度看字典学习过程:给定样本数据集x,x的每一列表示一个样本。如图2所示,字典的学习目标就是把x矩阵分解为d、z矩阵。

为了获得字典,字典学习问题通常可以表示为求解目标函数:

方法2,根据k-svd字典学习算法,求解目标函数定义为:

其中zi是矩阵z中的第i列,||·||0表示zi中非零元素的个数,τ表示稀疏程度,用于控制z的每一列中所含非零元素的最大个数。

k-svd是一种经典的字典训练算法,依据误差最小原则,对误差进行奇异值分解(singularvaluedecomposition,svd)分解,选择使误差最小的分解项作为更新的字典原子和对应的原子字数,经过不断的迭代从而得到优化的解。

4、引入深度语音字典后,进行问题的求解。具体描述为:

(1)在求解过程中利用稀疏编码和字典更新进行单层字典学习的求解。稀疏编码是指给定观测矩阵x和字典矩阵z,估计满足稀疏约束条件的稀疏表示矩阵z。利用larc的方法,具体描述如下:

1)稀疏编码,已知字典d(t-1),在第t次字典学习迭代中稀疏矩阵的每个列向量更新如下表示:

其中x(:,n)表示给定的观测矩阵,d(t-1)表示字典矩阵,表示满足稀疏约束条件的稀疏表示矩阵。

2)字典更新,根据步骤4(1)中1)所获得稀疏表示矩阵z,从训练信号集x中寻找档次迭代中更适合训练信号的字典d,字典更新如下式表示:

该问题可以通过k-svd字典更新来解决,k-svd字典更新是对字典中的每一个原子逐个更新。

3)针对每一个原子||d(:,l)||2=1,残差可以表示为:

式中将dz分解为l个秩为1的矩阵(d(:,l)z(l,:))之和。rl代表除第l个原子之外的原子所带来的残差。通过svd分解找到与rl最为接近的秩为1的矩阵

4)为了保证编码结果的有效性,在svd分解前,对步骤4(1)中3)式进行预处理,定义λl为下式:

λl={i|1≤i≤k,c(l,:)(i)≠0}

5)定义m为d×|λl|的矩阵,其中(λl(i),i)设置为1,其他设置为0,则步骤4(1)中2)式等价于下式:

上式代表式3)中r(l)保留z(l,:)中非零元素所对应的原子所构成的矩阵。同样代表z(l,:)只保留非零元素所构成的向量,字典更新如下式表示:

6)对上式进行svd分解得到下式:

7)使用u中的第一列来更新d(:,l),v的第一列乘以δ(l,l)来更新相应的系数,至此完成了一个原子的更新。

(2)根据深度字典学习进行求解过程,具体过程如下:

1)由下式描述多层字典学习,其网络结构如图3所示。

x=d1*d2*z

其中d2,d2分别是双层神经网络中每层的字典。

2)采用逐层训练的思想对步骤4(2)中1)进行逐层分解。以双层分解为例进行分解如图4所示,首先训练除第一特征层z1,字典d1:

x=d1*z1

其次对z1进行分解,求解第二层字典d2、特征z2:

z1=d2*z2

之后以此类推,得到更深层的字典学习。

3)先进的基于贪婪深度字典学习的单信道语音去混响模型由此建立。

最后,将建立好的模型与提取的特征进行模型训练,得到基本系数后,再次输入混沌、纯净语音信号数据进行测试,然后经过傅里叶逆变换,最终得到纯净语音。

一种基于贪婪深度字典学习的单信道语音去混响技术将传统的单信道语音去混响方法与深度语音字典学习相结合,能够提高模型的可解释性和可推导性,有效的提高语音去混响的效果。

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