一种基于K均值聚类的多声源方位估计方法与流程

专利2022-05-09  73


本发明属于语音识别技术领域,涉及声源定位技术,具体涉及一种基于k均值聚类的多声源方位估计方法。



背景技术:

近年来,随着人工智能技术的深入发展和智能产品的不断普及,远场语音交互场景也逐渐从单一特定说话人交互演变到多人同时说话的嘈杂交互环境,如咖啡馆噪声、卖场噪声、多人会议等。因此,基于麦克风阵列的多声源方位估计技术也不断发展,以获取不同说话人的准确位置,为后续目标语音增强、混合语音信号分离、特定说话人声纹识别等处理提供先验信息。

常见的基于麦克风阵列的多声源方位估计算法包括srp-phat(steeredresponsepowerwithphattransform)和gcf(globalcoherencefield)。一般来说,为提高声源方位估计准确度,许多学者会在srp-phat和gcf等通用算法上进行更深入的研究或者利用深度学习等新技术手段。但在方位准确度提升的同时,大多数算法会带来计算复杂度、算法内存及算力增加,这使得多数算法在实时性上无法满足产品应用要求。

相比于通过在信号处理方面的深入研究而带来的复杂度和算力的增加,数学处理手段具有占用内存小,运行速度快,适合应用于实时问题和嵌入式系统等优点,例如常见的卡尔曼滤波、粒子滤波等。



技术实现要素:

为克服现有方案技术存在的缺陷,本发明公开了一种基于k均值聚类的多声源方位估计方法。

本发明所述基于k均值聚类的多声源方位估计方法,包括如下步骤:

s1.利用多麦克风阵列采集模拟语音信号,并通过adc采样将模拟语音信号转化为数字语音信号;

然后对数字语音信号进行分帧加窗,并对每帧信号进行短时傅里叶变换,使语音信号从时域转换到频域;

s2.将空间方位角[-180°180°]均分为q1等份,获得第q个方位角的波束s(q)为:

其中:ωk=2π*(k-1)*fs/k为各个频点的弧度角,τ(m1,m2)为任意两个麦克风m1和m2的时延,j表示虚部,exp表示求自然指数,x(k,l)表示第k个时频点第l帧的频域信号,x的下标m1和m2表示对应的麦克风,*表示取复共轭;k为时频点总数,k表示第k个时频点,l表示第l帧语音信号,m为多麦克风阵列的麦克风总数;

麦克风m1和m2的时延τ(m1,m2)=(m2-m1)*d*cosθ/c,θ为第q个方位角索引对应的方位角度,c为声音在空气中的传播速度;

遍历空间q1个方位角度,得到全空间波束seng为:

seng=[s(1),s(2),…s(q),…s(q1)];

s3.对全空间波束seng进行归一化处理,计算归一化处理后的波束均值和方差;

经归一化处理后的空间波束值seng_norm、波束均值snorm_mean及波束方差snorm_var分别为:

seng_norm=[s(1)norm,s(2)norm,…,s(q1)norm]

其中s(q)norm表示第q个归一化波束;

max表示求最大值算子,min表示求最小值算子;

s4.设置均值阈值α1、方差阈值α2,筛选出均值小于均值阈值α1且方差大于方差阈值α2的波束作为有效波束,

再设置有效波束波峰阈值α3,

从有效波束中筛选出大于α3的一个或者多个波峰位置,则各个波峰位置对应的角度为有效方位角度值,将有效方位角度值以单帧样本y形式储存,则单帧样本:

y={θ1,…θnum}

其中:num为每帧语音信号输出的有效方位角度值个数;

s5.设置样本集合长度n,取n帧语音信号中每帧语音输出的有效方位角度为样本集合

y={y1,y2,…yn};

s6.不断随时间循环更新步骤s1至s5;循环更新过程中,即时根据语音识别系统的识别反馈,获取唤醒时刻,到达唤醒时刻时停止所述循环更新;

唤醒时刻的样本集合中的有效方位角度值为唤醒词语音段的有效方位角度值,将唤醒词语音段的样本集合y1作为k均值聚类的样本集合;

s7.对唤醒词语音段的样本集合y1进行k均值聚类,以k均值各类的平均值作为最终的方位角度值θc_mean。

优选的:步骤s7具体为:

设置唤醒词语音段的样本集合y1中第一帧样本的有效方位角度值θ1、θ2…θnum为初始聚类中心,并计算y1中其他帧样本到初始聚类中心的距离,以欧氏距离的平方作为样本之间的距离d(yi,j,θj),即

d(yi,j,θj)=‖yi,j-θj‖2

其中:i=1,2…n,j=1,2…num

设置样本距离阈值为α4,如果d(yi,j,θj)>α4,则该样本成为一个新的聚类中心,如果d(yi,j,θj)<α4,则将该样本指定到与其最近的类中,得到一个聚类结果,然后更新每个类的样本均值,作为类的新的中心;最后以k均值各类的平均值作为最终的方位角度值θc_mean;

其中:cn为类中元素的个数,θc为类中的元素。

本发明采用k均值聚类方法对估计的声源方位进行聚类,输出精确度更高的方位角度值,利用数学处理手段速度快,占用内存小的优点,可实时应用在智能语音产品多说话人交互场景,并提高多声源定位的准确度和实时性。

附图说明

图1是本发明所述多声源方位估计方法的一个具体实施方式示意图;

图2是本发明一个具体实施例中doa值分布的一个示意图;

图2中横坐标为时间帧数,纵坐标为角度值,单位为度;

图3是采用本发明对图2所示的doa值分布进行处理后得到的声源定位角度,图3横坐标为声源方位角度值,单位为度,纵坐标为声源方位角度值,单位为度。

图4是静音段和语音段的一个典型波束图;

图4中横坐标为角度,纵坐标为波束值。

具体实施方式

下面对本发明的具体实施方式作进一步的详细说明。

如图1所示,本发明首先利用多麦克风阵列采集模拟语音信号,并通过adc采样将模拟语音信号转化为数字语音信号;

然后对数字语音信号进行分帧加窗,并对每帧信号进行短时傅里叶变换,使语音信号从时域转换到频域。

再利用基于最大输出功率的可控波束形成的声源定位算法,形成每帧语音信号的波束。然后对波束进行归一化处理,求当前帧波束的均值和方差。并经过统计分析,设置均值阈值和方差阈值,筛选出有效波束。

设置有效波束波峰阈值,获取大于有效波束波峰阈值的一个或多个波峰位置,即可获得有效方位角度(doa)值。

设置有效方位角度值存储的缓冲区长度为n帧。

再利用语音识别系统的识别反馈,获取唤醒时刻。

最后根据唤醒时刻回退n帧语音信号,获取唤醒词语音段的方位角度值,并利用k均值聚类对唤醒词语音段输出的方位角度值进行聚类,输出最终方位角度值。

s1步骤具体为:设置多麦克风阵列中麦克风数为m,阵元间距为d;

设置阵列各个阵元接收到的时域信号为zi,i=1,2,…m。设置每帧信号采样点长度为k,帧移为k/2,采样率为fs;

对时域信号zi进行分帧加窗及短时傅里叶变换(stft),得到频域信号xi(k,l)。其中,k表示第k个时频点,l表示第l帧语音信号。

s2.将空间方位角[-180°180°]均分为q1等份,则每一个方位角索引q=1,2,...,q。根据srp-phat算法,可获得第q个方位角的波束s(q)为:

其中:ωk=2π*(k-1)*fs/k为各个频点的弧度角,τ(m1,m2)为任意两个麦克风m1和m2的时延,j表示虚部,exp表示求自然指数,x的下标m1和m2表示对应的麦克风,*表示取复共轭。

其中麦克风m1和m2的时延τ(m1,m2)=(m2-m1)*d*cosθ/c;

θ为第q个方位角索引对应的方位角度,c为声音在空气中的传播速度

遍历空间q1个方位角度,得到全空间波束seng为:

seng=[s(1),s(2),…s(q),…s(q1)]

s3.对全空间波束seng进行归一化处理,计算归一化处理后的波束均值和方差。

经归一化处理后的空间波束值seng_norm、波束均值snorm_mean及波束方差snorm_var分别为:

seng_norm=[s(1)norm,s(2)norm,…s(q1)norm]

其中s(q)norm表示第q个归一化波束;

max表示求最大值算子,min表示求最小值算子。

s4.设置均值阈值α1=0.5,方差阈值α2=0.1,筛选出方差大于方差阈值且均值小于均值阈值的波束作为有效波束,再设置经s3步骤归一化处理后的有效波束的波峰阈值α3=0.5,筛选出有效波束中大于α3的一个或者多个波峰位置,则各个波峰位置对应的角度为有效方位角度值,将有效方位角度值以单帧样本y形式储存,则单帧样本:

y={θ1,…θnum}

其中:num为每帧语音信号输出的有效方位角度值个数。

上述筛选目的是为了剔除由于静音段、连续语音间歇停顿段等原因导致的无效波束,去除由于无效波束产生的干扰源。

筛选的原理是由于静音段音频的波束波动频繁,其均值大,方差值小,而语音段波束波峰较少,均值小,方差值大。设置波峰阈值的原因在于,当多个声源存在时,会产生声波叠加的虚假波峰源,设置波峰阈值,可去除虚假源或者非主导声源的影响。例如一个典型的静音段和语音播放段对比的波束值,从图4可见,典型的静音段存在较多波峰,而波峰与波峰之间差值相对不明显,即均值大、方差小,而即使是在静音段,也存在多个波峰波束,个别波峰波束值较高;同时在语音段,波峰数量较少,但与波谷差值较大,即均值小,方差大,通过同时设置均值阈值和方差阈值,可以去除静音段波峰造成的干扰。

s5.设置样本集合长度n,取n帧语音信号中每帧语音输出的有效方位角度为样本集合

y={y1,y2,…yn},并不断随时间循环更新。循环更新即从步骤s1开始不断更新样本集合y。

n的取值可以根据唤醒词的帧长决定,例如一个唤醒词有4个汉字,正常语速读完1秒,可以设置n=60。

s6.循环更新过程中,即时根据语音识别系统的识别反馈,获取唤醒时刻,即语音识别系统识别到唤醒词时。此时的样本集合中的有效方位角度值为唤醒词语音段的有效方位角度值,将唤醒词语音段的样本集合y1作为k均值聚类的样本集合。

s7.对唤醒词语音段的样本集合y1进行k均值聚类,具体为

设置y1中第一帧样本的有效方位角度值θ1、θ2…θnum为初始聚类中心,并计算y1中其他帧样本到初始聚类中心的距离,一般以欧氏距离的平方作为样本之间的距离,即

d(yi,j,θj)=‖yi,j-θj‖2

其中:i=1,2…n,j=1,2…num

设置样本距离阈值为α4=100,如果d(yi,j,θj)>α4,则该样本成为一个新的聚类中心,如果d(yi,j,θj)<α4,将每个样本指定到与其最近的类中,得到一个聚类结果,然后更新每个类的样本均值,作为类的新的中心。最后以k均值方法求得各类的平均值作为最终的方位角度值θc_mean。

其中:cn为聚类时类中元素的个数,θc为所述类中的元素。

采用k均值聚类方法,由于其原理简单,所需内存和算力小,易于工程应用。且将k均值聚类方法应用于多声源doa估计,不仅便于选取出唤醒词语音段占主导的一个或者多个声源,而且由于该算法自身特性,采用平均值作为最终方位角度值,可以选取更精确的doa值,而其它算法如基于srp-phat的doa算法,为减少计算耗时和内存,一般都会设置较大的空间角度分辨率,如5°或者10°,此时估算出的doa值最小分辨率为5°或者10°。但经k均值聚类方法处理后,可以得到更精确的doa值达到1°的分辨率。

一个具体实施例中,利用4个麦克风组成的圆阵对3个声源进行定位。在语音识别系统识别出唤醒时刻后,每帧语音信号的方位角度(doa)值如图2所示。正常情况下,可以选取doa值数量最多的几个值作为目标声源,如-50°和40°目标角度比较容易选取。但对于130°的目标角度,如图2所示,现有技术doa算法定位出的角度在130°上下浮动较频繁且各个角度的个数相差不大甚至相同,此时难以选取出更精确的角度,但采用本发明所述估计方法后,就可得到更精确的目标角度,如图3所示,可以清楚的看出三个聚类点分别为131度,39度和负51度。

前文所述的为本发明的各个优选实施例,各个优选实施例中的优选实施方式如果不是明显自相矛盾或以某一优选实施方式为前提,各个优选实施方式都可以任意叠加组合使用,所述实施例以及实施例中的具体参数仅是为了清楚表述发明人的发明验证过程,并非用以限制本发明的专利保护范围,本发明的专利保护范围仍然以其权利要求书为准,凡是运用本发明的说明书内容所作的等同结构变化,同理均应包含在本发明的保护范围内。


技术特征:

1.一种基于k均值聚类的多声源方位估计方法,其特征在于,包括如下步骤:

s1.利用多麦克风阵列采集模拟语音信号,并通过adc采样将模拟语音信号转化为数字语音信号;

然后对数字语音信号进行分帧加窗,并对每帧信号进行短时傅里叶变换,使语音信号从时域转换到频域;

s2.将空间方位角[-180°180°]均分为q1等份,获得第q个方位角的波束s(q)为:

其中:ωk=2π*(k-1)*fs/k为各个频点的弧度角,τ(m1,m2)为任意两个麦克风m1和m2的时延,j表示虚部,exp表示求自然指数,x(k,l)为第k个时频点第l帧的频域信号,x的下标m1和m2表示对应的麦克风,*表示取复共轭;k为时频点总数,k表示第k个时频点,l表示第l帧语音信号,m为多麦克风阵列的麦克风总数;

麦克风m1和m2的时延τ(m1,m2)=(m2-m1)*d*cosθ/c,θ为第q个方位角索引对应的方位角度,c为声音在空气中的传播速度;

遍历空间q1个方位角度,得到全空间波束seng为:

seng=[s(1),s(2),…s(q),…s(q1)];

s3.对全空间波束seng进行归一化处理,计算归一化处理后的波束均值和方差;

经归一化处理后的空间波束值seng_norm、波束均值snorm_mean及波束方差snorm_var分别为:

seng_norm=[s(1)norm,s(2)norm,…,s(q1)norm]

其中s(q)norm表示第q个归一化波束;

max表示求最大值算子,min表示求最小值算子;

s4.设置均值阈值α1、方差阈值α2,筛选出均值小于均值阈值α1且方差大于方差阈值α2的波束作为有效波束,

再设置有效波束波峰阈值α3,

从有效波束中筛选出大于α3的一个或者多个波峰位置,则各个波峰位置对应的角度为有效方位角度值,将有效方位角度值以单帧样本y形式储存,则单帧样本:

y={θ1,…θnum}

其中:num为每帧语音信号输出的有效方位角度值个数;

s5.设置样本集合长度n,取n帧语音信号中每帧语音输出的有效方位角度为样本集合

y={y1,y2,…yn};

s6.不断随时间循环更新步骤s1至s5;循环更新过程中,即时根据语音识别系统的识别反馈,获取唤醒时刻,到达唤醒时刻时停止所述循环更新;

唤醒时刻的样本集合中的有效方位角度值为唤醒词语音段的有效方位角度值,将唤醒词语音段的样本集合y1作为k均值聚类的样本集合;

s7.对唤醒词语音段的样本集合y1进行k均值聚类,以k均值各类的平均值作为最终的方位角度值θc_mean。

2.根据权利要求1所述基于k均值聚类的多声源方位估计方法,其特征在于:步骤s7具体为:

设置唤醒词语音段的样本集合y1中第一帧样本的有效方位角度值θ1、θ2…θnum为初始聚类中心,并计算y1中其他帧样本到初始聚类中心的距离,以欧氏距离的平方作为样本之间的距离d(yi,j,θj),即

d(yi,j,θj)=‖yi,j-θj‖2

其中:i=1,2…n,j=1,2…num

设置样本距离阈值为α4,如果d(yi,j,θj)>α4,则该样本成为一个新的聚类中心,如果d(yi,j,θj)<α4,则将该样本指定到与其最近的类中,得到一个聚类结果,然后更新每个类的样本均值,作为类的新的中心;最后以k均值各类的平均值作为最终的方位角度值θc_mean;

其中:cn为类中元素的个数,θc为类中的元素。

技术总结
一种基于K均值聚类的多声源方位估计方法,包括如下步骤:S1.利用多麦克风阵列采集语音信号,并使语音信号从时域转换到频域;S2.获得第q个方位角的波束;遍历空间得到全空间波束;S3.对全空间波束进行归一化处理,计算归一化处理后的波束均值和方差;S4.筛选出有效波束;S5.选取有效DOA值作为样本集合并不断随时间循环更新。S6.将唤醒词语音段的样本集合Y1作为K均值聚类的样本集合;S7.对唤醒词语音段的样本集合Y1进行K均值聚类。本发明采用K均值聚类方法对估计的声源方位进行聚类,输出精确度更高的方位角度值,可实时应用在智能语音产品多说话人交互场景,并提高多声源定位的准确度和实时性。

技术研发人员:曾帆;刘文通;高君效
受保护的技术使用者:成都启英泰伦科技有限公司
技术研发日:2021.07.05
技术公布日:2021.08.03

转载请注明原文地址:https://doc.8miu.com/read-10976.html

最新回复(0)