本发明属于多说话人语音分离领域,涉及多声源数目估计、多声源空间定向、波束形成和语音迭代分离,具体涉及一种说话人数未知的多通道语音分离方法。
背景技术:
语音作为人与人之间交流的重要方式,是信息传递的一种重要载体。随着社会信息化的加速,语音也逐渐成为了人与计算机、智能设备等之间的重要交互方式。然而实际生活中,语音在从声源到麦克风的传播中常常会受到环境噪声、其他说话人的声音及封闭环境中混响等干扰的影响,使得接收到的语音的可懂度严重下降。为了提高目标语音的可懂度和感知质量,在一些语音信号处理的前端技术中需要将这些干扰减弱。
很多年以来,很多方法在语音分离方面都进行了尝试,并取得了一些效果。比如典型的单通道语音分离方法有计算听觉场景分析、高斯混合模型-隐马尔可夫模型、非负矩阵分解和基于深度学习的方法;典型的多通道分离方法如独立成分分析、波束形成和基于深度学习的方法。尽管多说话人语音分离在已知说话人数的情况下取得了不错的分离效果,但假设性太强,在实际生活中很难广泛应用。因为这些语音分离方法都具有一个主要问题,即必须已知说话人的个数。同时,对于波束形成的方法,也并不能很好的处理一个方向上有多个说话人的情况。
目前已经有一些方法被提出来去解决这个问题,典型的有基于辅助信息的方法、基于固定数目输出的方法和基于迭代分离的方法。
基于辅助信息的方法就是在做多说话人语音分离的同时,加入说话人的一些指导信息,如引入视觉信息、空间方位信息等来指导语音分离。该方法的优点是能够在某些特定说话人信息的指导下完成分离,但是也存在很多不足。对于说话人嵌入辅助分离的方法,说话人嵌入通常是在句子级别进行估计的,需要足够长的上下文,这使得其很难应用到在线或者因果系统中,而且不准确的嵌入估计会严重影响到分离的性能。对于视觉信息辅助分离的方法,在一些环境比如黑暗的条件下,辅助的视觉信息将很难获得。
基于固定数目输出的方法以置换不变训练网络(permutationinvarianttraining,pit)为基础,训练一个最大说话人数输出的网络,有多少个说话人就有多少路输出。如果实际的混合语音中的说话人数少于最大说话人数,那么网络的输出除了是估计的说话人的掩模外,还会有额外的噪声信号或者静音输出。而对于无效输出的检测可以利用能量阈值的方法进行检测。这一类方法优点是相比于另外两种方法只需要训练一个模型,算法复杂度较低高效。但是该类方法仍然需要最大说话人数这一个先验信息,而且并不能使用与能量无关的指标作为训练目标,如scale-invariantsignal-to-distortionratio(si-sdr),而这一类指标已经有论文证明效果会比使用均方误差的效果好。
基于迭代分离的方法以置换不变训练网络为基础,训练一个两路输出的网络,一路是目标语音信号,另一路则是除去这个说话人外的残差语音信号,也就是说网络每次迭代只从残差语音信号中分离出一个最容易分离的说话人语音。迭代停止的条件是残差语音信号是噪声信号或者静音,可以利用能量阈值或者训练一个二分类网络判断残差语音信号是否是噪声。该类方法的优点是前几次的迭代分离出的目标说话人语音往往会好于固定数目输出方法的平均结果,而且能够使用能量无关的指标作为分离模型的训练目标,使得分离效果更好。但最大的缺点是误差会累积,随着迭代次数的增加每次迭代分离出的目标说话人语音的效果会越来越差。
技术实现要素:
在已知说话人数和未知说话人数的语音分离方法基础上,本发明面向绝大多数语音分离方法必须已知说话人数、如何引入空间信息和一个方向上有多个说话人等问题,提出了一种基于波束信号的语音迭代分离方法。本发明主要工作包括未知声源方向数目的多声源定向、基于方向特征的波束形成、语音迭代分离和基于波束信号的语音迭代分离等,实验结果表明本发明提出的基于波束信号的语音迭代分离方法既规避了语音迭代分离误差随着迭代次数增大而增大的问题,又借助空间稀疏性进一步提高了语音分离的性能。
多通道下的未知说话人数的语音分离是本发明研究的核心。本发明以语音迭代分离方法为基础,充分利用了前面介绍的三种未知说话人数的语音分离方法的优点,避开了其缺点。在迭代分离的基础上引入空间信息,既避免了迭代次数增加带来的误差累积的问题,又避免了固定数目输出方法不能使用能量无关的指标作为训练目标的问题,同时空间信息也可以作为一种辅助信息,进一步增强了语音分离的效果。
本发明分为三部分,如图1所示。第一部分是未知声源数目的多声源定向,其中包括从多通道音频信号中提取时频特征和空间特征、声源方向数目估计和基于深度学习的声源定向等。第二部分是利用方位特征的波束形成,目的是取得每个说话人的空间增益。但是由于一个方向上可能存在有多个说话人,因此需要在波束信号的基础上继续去做第三部分的语音迭代分离,这样既解决了波束形成无法处理一个方向上有多个说话人的情况,又避免了语音迭代分离误差累积的问题。
本发明的技术方案为:
一种说话人数未知的语音迭代分离方法,其步骤包括:
1)首先,利用麦克风阵列采集目标空间中的多通道音频信号;
2)在得到多通道音频数据后,分别提取多通道音频信号的时频特征和空间特征;
3)利用提取出时频特征和空间特征估计出目标空间中说话人所在方向的数目;
4)利用提取出时频特征、空间特征及估计出的方向数目,获得目标空间中说话人所在的目标方向;
5)利用估计出的各目标方向设计方向特征,并结合时频特征和空间特征从多通道音频信号中提取出每一个目标方向上的语音信号;
6)对每一目标方向上的混合语音迭代分离,得到每一个目标方向上可能存在的多个说话人语音。
本发明提出的说话人数未知的多通道语音分离基本框架如图1所示,该方法主要包括以下几个部分:
多通道数据获取利用麦克风阵列获取多说话人的混合多通道音频数据。
多通道音频信号特征提取在提取的多通道音频信号基础上,分别提取信号的时频特征和空间特征。其中时频特征是参考麦克风采集到的信号的幅度谱,空间特征是其余麦克风和参考麦克风之间的相位差的正弦值和余弦值的拼接。
声源方向数目估计利用深度神经网络强大的非线性建模能力,将输入的时频特征和空间特征分别映射到各自的嵌入空间,将两个嵌入空间融合到同一个嵌入空间后通过特征值分解获得估计的声源方向数目n。
声源方向估计将方向离散化,将输入的视频特征和空间特征拼接输入深度神经网络,获得每个时频点的方向概率图,结合前面一步估计得到的声源方向数目n对生成的方向概率图进行谱峰搜索,最后取概率最大的声源方向数目n个峰值作为估计出的所有目标方向。
引入方向特征的波束形成在获得所有的声源目标方向以后,根据每一目标方向和麦克风阵列拓扑结构计算得到的相位差和麦克风阵列观测到的相位差之间的差的余弦值,设计出方向特征,并将方向特征和时频特征、空间特征结合,利用深度神经网络提取出对应目标方向上的语音。
基于波束信号的语音迭代分离由于一个方向上可能存在多个说话人,因此上一步获得的波束信号中可能还存在多个说话人,为了不丢失目标说话人的信息,利用语音迭代分离方法并结合目标方向上的混合语音信号,对波束信号做进一步的分离。波束信号既为迭代分离引入了空间方向辅助信息,又增加了语音信号的稀疏性,使得语音分离效果进一步提高。
与现有技术相比,本发明的积极效果为:
本发明充分利用了麦克风阵列采集到信号的时频空域的稀疏性,分别提取出时频特征、空间特征和方向特征,完成了说话人数未知情况下的语音分离。基于波束信号的语音迭代分离方法既规避了迭代分离误差随着迭代次数增大而增大的问题,又借助空间增益进一步提高了分离性能;既能在未知说话人数目的情况下完成多说话人语音分离,又能处理空间中一个方向上有多个说话人的情况。
附图说明
图1为本发明提出的说话人数未知的多通道语音分离方法框架图;
图2为基于嵌入空间融合的方向数目估计示意图;
图3为基于深度学习的声源定向框图;
图4为目标方向上的语音提取框图;
图5为基于波束信号的语音迭代分离示意图;
图6为仿真麦克风阵列示意图。
具体实施方式
下面参照本发明的附图,更详细地描述本发明的最佳实施例。图1所示为本发明提出的基于多通道联合学习的竞争说话人数量估计系统,本发明方法的具体实现步骤包括多通道数据获取、多通道音频信号特征提取、声源方向数目估计、声源方向估计、引入方向特征的波束形成和基于波束信号的语音迭代分离。各步骤的具体实现过程如下:
1.多通道数据获取
设计麦克风阵列,可以是线阵等一维麦克风阵列,可以是等边三角形阵、t型阵、均匀圆阵、均匀方阵、同轴圆阵、圆形/矩形面阵等二维麦克风阵列,也可以是四面体阵、正方体阵、长方体阵、球型阵等三维麦克风阵列。而本发明在后面验证的时候采用的是8麦克风均匀线阵。利用这些麦克风阵列采集多说话人的混合语音数据。
2.多通道音频信号特征提取
由于人耳对语音的频谱、能量及频谱分量的感知强度在频域上表现为与幅度谱的对数成正比关系,所以通常使用对数频谱幅度作为深度神经网络的输入特征和输出预测目标。时频特征是混合语音信号的对数幅度谱,表示为[log(|yp|)]。
对于空间特征,给定一组麦克风p和q,它们之间的间距是随机的。则两个麦克风接收到的语音的stft的比值为
cosipd=cos(∠yp-∠yq)(1)
sinipd=sin(∠yp-∠yq)(2)
空间特征是这三个特征在频率轴的拼接,可以表示为[cosipd;sinipd;ild]。当麦克风的数量m>2时,以第一个麦克风作为参考,所有麦克风对的特征拼接在一起,sinipd和cosipd都将是f×(m-1)×t的二维矩阵,其中f是频率的个数,t是帧数;f×(m-1)是矩阵的行数,t是矩阵的列数。
空间特征代表说话人所在的空间方位,时频特征代表了说话人的说话内容,二者互为补充,在后续的实验中可以发现会比单一的特征效果更好。当说话人在空间中相距较远时,空间特征能起到更大作用;当说话人相距较近的时候,时频特征会起到较大的作用。
3.声源方向数目估计
假设x是观察到的混合信号的时域表示,即麦克风阵列采集的多通道信号,xi表示x做stft后得到的幅度谱的第i个时频点,将声源定向看作一个分类问题,y={yi,c}是第i个时频点在c个目标方向的one-hot表示,如果第i个时频点属于第c个方向,则有yi,c=1。使用a=yyt(gram矩阵)可以描述各个时频点之间的相似性,即有第i,j个时频点属于同一个方向时,有ai,j=1,否则ai,j=0。同时这样一个矩阵应该是具有置换不变的性质的,即对于任意一个置换矩p,应有:
(yp)(yp)t=yyt(4)
gram矩阵可以看做特征之间的偏心协方差矩阵(即没有减去均值的协方差矩阵),因此在特征图中,每个数字代表一个特征的强度,gram矩阵计算的实际上是两两特征之间的相关性。在这里的gram矩阵也就代表了各个时频点在空间方向上的相似性。
假设神经网络输入的语音信号特征为x(就本发明而言,特征x是指时频特征或空间特征;如果输入是时频特征,输出就是嵌入时频特征),输出d维的深度嵌入空间特征v,希望能有一种映射关系将x映射到v,即:
v=fθ(x)∈rn×d(5)
其中n是时频点的个数,v是一个n行d列的矩阵(即rn×d),fθ(*)是一个映射函数,在本发明所使用的就是深度神经网络。
每一个时频点vi∈rd应满足|vi|2=1的单位化要求。同时,希望映射到高维空间的表示v依然能够描述时频点的相似性,也就是如果时频点n和n′由不同的方向主导,则第n个时频点的嵌入向量vn=(v1,v2,…,vd)t将和v′n正交,即
在具体实现的时候,以整句训练时,v∈rn×d,那么在计算vvt∈rn×n时,显存很快就会爆掉,因此可以采用等价的计算方式:
事实上,n比d大几个数量级,采用公式(7)的计算方式就避免了显式的构造n×n的矩阵,从而提高了运算速度。由于v的低秩结构,导数计算如下:
在神经网络估计得到方向的嵌入空间v后,可以通过对嵌入空间的所有嵌入向量的平均协方差进行特征值分解所得的秩的个数来判断声源方向数目。假设一个时频点所对应的嵌入向量为vn,所有时频点的平均协方差矩阵为re,n是时频点的个数。则有:
对协方差矩阵re进行特征值分解:
re=uλuh(10)
其中u表示特征向量,λ表示特征值:
λ=diag(λ1,λ2,…,λd)(11)
理论上来说协方差矩阵re的秩就等于声源方向的数量,因此在实际计算时可以通过一个特征值的阈值th来估计声源方向的数量:
其中n(*)是估计方向数量的操作,
由于时频特征和空间特征具有一定的互补性,因此本发明提出的基于嵌入空间融合的方向数目估计方法将时频特征和空间特征在嵌入空间进行融合,如图2所示。
首先,麦克风阵列采集到多个说话人的混合语音,分别提取时频特征和空间特征。两类特征经过两层blstm和一个全连接层被分别映射到各自的嵌入空间,接着通过一个注意力(attention)机制将两个嵌入空间进行融合,从而得到一个新的嵌入空间。同样的,计算这个新的嵌入空间中的所有嵌入向量的平均协方差矩阵,进行特征值分解,从而得到估计的方向数量。
对于嵌入空间的融合,假设时频特征和空间特征代表的嵌入向量中的嵌入向量分别是vs和vθ,则它们之间的相关关系为rt,t′,其中t,t′∈[1,t],t表示帧数:
rt,t′=vstvθ(13)
attention权重at,t′为rt,t′的softmax:
融合后的嵌入特征为:
其中ft是时频特征对应的一个嵌入向量对应和空间特征对应的一个嵌入向量融合以后的嵌入向量,所有的嵌入向量一起组成了融合后的新的嵌入空间。最后通过融合后的嵌入空间的平均协方差矩阵的特征值分解即可得到估计的方向数量。与基于嵌入空间的多通道方法相比,基于嵌入空间的多通道方法可以看作是将特征在网络输入层进行了拼接,而基于嵌入空间融合的方法则是在嵌入空间进行的融合。
4.声源方向估计
在获得声源方向的数目后,接下来会利用深度神经网络对声源所在的所有方向进行估计。由于在进行定向时可能会存在伪峰,因此声源方向的数目对声源方向的估计非常重要。
将声源定向问题看作一个分类问题,也就是将空间角度离散化。本发明中实验所扫描的角度是0°到180°,每5°一个间隔,一共有37个方向,也就是一个方向的one-hot向量是37维。根据语音信号的时频稀疏性和短时正交特性(w-disjointorthogonality,w-do),假设每个时频点仅属于一个方向,只不过不同的是输出并不是嵌入向量,而直接是某个方向的one-hot向量,通过这个one-hot向量就可以判断一个时频点所属的方向。方法的结构如图3所示。
由于监督信息t∈rn×c也是方向的one-hot编码,因此训练时的损失函数为二者之间的二范数:
其中
由于空间特征代表的是声源的方向,对空间定向起到的作用比时频特征更大,因此基于深度学习的声源定向方法输入的特征是时频和空间特征的在频率轴的拼接。
5.引入方向特征的波束形成
考虑到前面已经通过声源定向计算出每个目标方向,又已知麦克风阵列的几何形状,可以计算出不同方向的信号在通道间形成的时延,进而获得不同的相位差;与此同时,观测到的麦克风阵列信号在stft变换后也可以计算出相位差。在这个基础上,根据二者相位差之间的关系,可以设计方向特征,并利用深度神经网络帮助滤除目标方向外的干扰信号,如图4所示。
假设声场模型为远场模型,声音在麦克风处以平面波形式进行传播,麦克风p和麦克风q之间的间距为l,目标声源的传播方向为θ,则两个麦克风之间的采样点偏移是:
其中c是声速,fs是麦克风的采样率。以n点的帧长做快速傅立叶变换(fastfouriertransformation,fft),则目标语音各个频带在两个通道间形成的相位差为:
理论上来说,如果某个时频点被目标方向的语音主导甚至能量差异较大时,在这个时频点上相当于只有目标语音成分,那么麦克风阵列观测信号的ipd应当等于两个通道间形成的相位差。因此,两个通道之间的方向特征(directionalfeature,df)可以设计为两通道在目标方向的方向特征设计为该两通道在观测信号在目标方向上时的信号相位差的余弦值,即:
其中(∠yp(t,f)-∠yq(t,f))是观测信号在麦克风p和q之间在对应的时频点(t,f)形成的ipd。
当麦克风的个数m>2时,通常取一个麦克风q为参考通道,则方向特征为非参考麦克风p和参考麦克风q之间的方向特征的平均:
其中p为所有非参考麦克风和参考麦克风之间匹配对的个数。
从以上这两个公式可以看到,如果一个时频点被目标方向的语音主导,则dfp(t,f)为1,否则将远小于1。本发明设计的方向特征对目标说话人占主导的时频点能有很好的指向性,可以帮助筛选具有目标方向语音的时频点,从而帮助完成目标方向上的语音提取,也就是波束形成的核心思想。
在获得目标方向的方向特征后,深度模型需要从提取的时频特征和空间特征中分离出目标方向上的语音,相应的模型结构如图4所示。
网络的输入是参考麦克风的时频特征、麦克风阵列的空间特征和目标方向的方向特征,在输入到网络时,这些特征逐帧拼接在一起。网络使用两层blstm进行建模,输出是目标方向p上的时频掩模,本发明使用的是相位敏感掩模(phasesensitivemask,psm)。监督信息是目标方向上的说话人的直达声的对数幅度谱,实际在计算的时候会将估计出的时频掩模与原混合语音相乘。则对于有混响的数据而言,网络除了有分离的功能外,还需要起到抑制混响的作用。
6.基于波束信号的语音迭代分离
由于一个方向上可能存在多个说话人,使得一个波束信号中的说话人可能不止一个,因此有必要进行进一步的分离,而语音迭代分离刚好可以做到从一个波束信号中分离出能量最大的说话人的语音。语音迭代分离在每一次的迭代分离中,随着迭代次数的增加,分离出的目标说话人的效果会越差,这是由于语音迭代分离缺乏指导信息,比如空间说话人的方向信息、每一次迭代分离后残差信号中的目标说话人信息不完整等等。因此,有必要给语音迭代分离加入说话人的空间信息,既较少了分离迭代的次数,又给语音迭代分离带来了空间增益,进一步提高了最终语音分离的效果。
在前面得到每个目标方向上的波束信号后,接下来利用语音迭代分离对波束信号继续进行分离。以图5为例,麦克风阵列拾取到多个说话人的混合语音后,利用前面所讲的波束形成方法,得到两个波束信号。在每一个波束信号上,利用语音迭代分离方法每次从残差信号(包括最初的波束信号)从分离出一个最容易分离的说话人语音,同时得到除去这个说话人外的残差语音信号。由于得到的每个方向的波束信号中可能会丢失某些说话人的信息,因此在语音迭代分离的时候会将波束信号和原混合语音直接在时域上直接进行拼接训练,这样能让模型自动从原混合语音中去学习波束信号中可能丢失的说话人信息。
本发明中语音迭代分离采用分离效果很好的两说话人的convtasnet分离网络,训练的方式依然采用置换不变训练方法(pit),损失函数为:
其中,
对于语音迭代分离停止的条件,一种是根据残差信号的能量设置一个阈值,进而判断残差信号是否是噪声信号或静音;第二种就是训练一个二分类网络,判断残差信号是否是噪声信号或者静音,如果是,则迭代停止。由于能量阈值是一个计算值,在实际应用时往往准确率很低,因此本发明采用第二种方案。
仿真数据与结果
实验数据来自《华尔街日报》(wsj0)语料库。我们首先生成了2-3个说话人的单通道混合语音数据集,每个说话人的数据集均被分成了训练集(20,000个句子,约30小时),验证集(5000个句子,约10小时)和测试集(3000个句子,约5小时)。训练集和验证集都是用文件夹“si_tr_s”中的音频文件随机混合而来的,测试集则是用其余两个文件夹中的音频文件随机混合的。所有音频数据都降采样到8khz,以减少存储和计算成本。所有数据集都是以0至5db的信噪比(snr)随机混合的。
1.深度神经网络训练设置
在本发明中,深度嵌入网络具有两个blstm层,每层有600个单元。使用的adam学习算法的初始学习率为0.0005,而所有模型均包含dropout,dropout率为0.5。tanh激活函数后面是嵌入层。模型使用深度学习框架pytorch实现的。stft的窗口长度和窗口偏移分别为256ms和64ms。
此外,在训练过程中的成本计算中忽略了时频点的静音区域。静音区域被定义为幅度小于最大混合幅度的-40db的时频点。
2.麦克风阵列及多通道仿真数据生成
为了生成仿真的多通道数据集,本发明将脉冲响应与语音信号进行卷积,并使用房间脉冲响应(rir)生成器来空间化数据集。如图6所示,本发明使用了8麦克风“2-2-2-2-2-2-2”cm的均匀线阵。所有的说话人被随机的放在从0°到180°间隔为15°的方向上,并且距阵列中心1m和2m的随机位置上。房间的长度和宽度均从5.0m至10.0m中随机选择,而高度则从3.0m至4.0m中随机选择。此外,对于混响数据集,混响时间t60(声源停止发声后,声压级减少60db所需要时间)均在[0.2,0.7]s范围内随机选取,而无混响数据集的t60值为0.0s。各项仿真参数如表1所示。
表1为各项仿真参数取值范围
多通道仿真数据的句子数和单通道是一致的。测试集中的说话人都没有出现在训练集和验证集中,因此本发明所有的实验都是说话人无关的。
3.对比方法
本发明在两个和三个说话人的无混响和有混响数据集上将多通道的pit方法和多通道的深度聚类方法(deepclustering,dpcl)作为基线模型。
4.实验结果
在无混响和有混响数据集上,本发明评测了基于波束信号的语音迭代分离方法的性能及其与波束形成、多通道pit和dpcl方法的对比,分别如表3和表4所示。
在评价分离性能时,分离指标采用源失真比(source-to-distortionratio,sdr)、短时客观可懂度(short-timeobjectiveintelligibility,stoi)和语音感知质量评估(perceptualevaluationofspeechquality,pesq)等三个指标,其中sdr衡量语音分离的程度,stoi和pesq分别是一个衡量分离语音可懂度和感知质量的客观指标。
表2首先计算了在无混响和有混响两个数据集上两个和三个说话人混合语音的原始指标。从表3和表4可以看到,随着说话人的增多,语音信号稀疏性遭到破坏,语音分离会更加困难,混响的存在也使得语音分离更加困难。与两个基线模型相比,基于波束信号的语音分离方法具有更好的分离效果,这也证实了本发明提出的基于波束信号的语音迭代分离方法的有效性。
表2为两个和三个说话人的多通道数据原始指标
表3为本发明在无混响数据集上的性能评估及对比
表4为本发明在有混响数据集上的性能评估及对比
为了验证本发明更好的性能,实验将进一步评测该系统在更多的说话人数据集上的分离性能。本部分实验仿真了2个到9个说话人的混合语音数据集,训练集、验证集和测试集依然分别是20000、5000和3000个句子,只不过2到9个说话人混合的句子数在三个数据集上是平均的。本部分实验所用数据集不带有混响。其他的仿真参数前面实验是一致的。
从表5和表6可以看到,随着说话人数的增加,sdr、stoi和pesq都逐渐下降,说明混合语音中的说话人数越多,语音的稀疏性破坏越严重,分离越困难,人耳也越来越难听清楚分离出的说话人语音的内容。同时还计算了sdr提高值(sdrimprovement,sdri),具体计算方法就是用分离后的说话人语音的sdr平均值减去原混合语音的sdr值。可以看到,随着说话人数的增加,尽管绝对的sdr越来越差,但sdri可以保持在10db以上,说明本发明提出的基于波束信号的语音迭代分离方法随着说话人数的增多并不会崩溃,在一定程度上依然可以完成语音分离。这也证实了本发明在说话人数较多的情况下依然能够保持比较好的分离效果。
表5为2到9个说话人数据集的原始指标
表6为本发明在2到9个说话人数据集上的分离指标
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。