宠物声源定位算法设计

2023-09-21 01:36骆润卿张双彪佘怡欣游凯卉
物联网技术 2023年9期
关键词:麦克风声源时延

骆润卿,张双彪,陈 晨,佘怡欣,游凯卉

(北京信息科技大学 信息与通信工程学院,北京 100101)

0 引 言

智能宠物陪伴机器人是一类具有智能喂食、宠物监护、与宠物互动等功能的机器人,其设计目的是帮助外出的主人陪伴、监护家中宠物。智能宠物陪伴机器人大多配备有摄像头,便于主人远程查看宠物动态。而宠物在家中的活动范围较大,可能出现宠物不在摄像头范围内的情况,此时主人便无法通过摄像头远程查看宠物动态。解决上述问题的方案之一是:机器人首先定位家中宠物,然后控制移动机构到达宠物附近,使得摄像头范围内有宠物。而目前已有的智能宠物陪伴机器人缺少对宠物进行室内定位的技术路线或功能模块。本文提出利用基于麦克风阵列的声源定位技术路线设计解决机器人对宠物室内定位的问题。单个麦克风易受噪声干扰,为了增强声音信号的采集、定位等,多数研究采用麦克风阵列形式,即多个麦克风以不同几何结构排列组合而成的阵列。较之单个麦克风,麦克风阵列在减少环境噪声干扰等方面具有明显优势。基于麦克风阵列的声源定位技术利用麦克风阵列采集声音信号,运用数字信号处理技术处理所得样本,采取合适声源定位算法对处理后的数据进行计算得出位置信息、声源相对位置坐标及角度等[1]。基于麦克风阵列的声源定位算法主要有基于可控波束形成的声源定位算法、基于高分辨率频谱估计的声源定位算法及基于到达时间差的声源定位算法,其中基于到达时间差(Time Difference Of Arrival, TDOA)的声源定位算法相对来说实时性好、计算量小,具有较高的实用性[2]。基于TDOA 的定位算法通过计算所收集的声源信号到达麦克风阵列的时间差进行时延估计,再通过构成麦克风阵列的几何形状建立声源定位模型,最后通过算法求解相对位置从而进行定位估计。已有将基于TDOA 的声源定位算法应用于室内实时定位系统中的研究[3]。本文将介绍宠物音频信号的预处理方法,以及基于麦克风阵列对宠物声源进行室内定位的声源定位算法。

1 音频信号预处理

采集到的宠物声音信号会由于宠物的发声器官本身和用于采集音频信号的设备产生混叠、高频和高次谐波失真等,被降低音频质量。在对声音信号进行预加重、分帧、加窗、端点检测等预处理操作后,得到的信号更均匀、平滑,能提取效果更好的信号参数,更加有效地进行宠物声音信号的分析与处理,提高音频信号的质量和处理音频信号的效率。

1.1 预加重处理

通常来说,语音信号的频率范围为300 ~3 400 Hz,猫的叫声的频率范围为760 ~1 500 Hz,而狗的叫声的频率范围为452 ~1 800 Hz。因为猫狗声音的频率范围均在语音信号的频率范围内,所以对宠物发出的声音进行预加重处理可以采用语音信号的处理方法。

1.1.1 预加重处理目的

由于语音信号s(n)的平均功率谱受声门激励和口鼻辐射的影响,大约在200 ~500 Hz 范围内,以6 dB/倍频程衰减,并且随着频率的升高,对应的分量也变得更少,因此要在对语音信号s(n)进行分析前对其高频部分进行改进,使其始终处于由低频率至高频率的全频段,在同样的信噪比条件下可以方便地进行频谱分析和声道参数分析。

1.1.2 预加重处理方法

宠物发声与语音信号类似,口鼻辐射在高频段较为明显,而对低频段的影响较小。因为口鼻辐射所引起的能量损耗与辐射阻抗的实部成正比,所以辐射模型R(z)为一阶类高通滤波的形式,是一阶后向差分,表达式为:

为使声门脉冲的影响减到最小,保留声道部分,便于后续进行声道参数的分析,结合辐射模型,在取样后插入一个一阶高通滤波器。

预加重处理采用一阶FIR 高通数字滤波器来实现[4],其输出和输入的语音信号s(n)的关系式为:

式中,α为预加重系数,通常取0.9 ~1.0,音频信号预加重处理中α取0.937 5。一阶FIR 高通数字滤波器幅频特性、相频特性曲线如图1 所示。

图1 一阶FIR 高通数字滤波器的幅频、相频特性

1.2 分帧处理

音频信号是时变的,但是在很短的时间内(一般认为在10 ~30 ms 内),其特性基本上没有改变,即相对稳定,因此可将其看作是一个准稳态过程,即声音信号的短时平稳。短时分析技术贯穿语音分析的整个过程,对音频信号进行分割,每个片段被称作“帧”,而帧长度通常是10 ~30 ms,对每帧的特性参数进行分析,从而在整体上分析出每个特征参数的时间序列。

1.3 加窗处理

加窗的目的是对抽样n附近的音频波形进行加强,同时削弱其他波形。使用最多的3 种窗函数分别为矩形窗、汉明窗(Hamming)和汉宁窗(Hanning),由于汉明窗相对另两种窗函数能更好地保留原始音频信号的频谱特性,所以在短时分帧后,宠物音频信号利用汉明窗口对声音信号进行处理。

汉明窗定义公式为:

1.4 端点检测

端点检测的目的主要是实现对宠物语音信号的起始和终止点的自动检测。宠物音频信号的端点检测采用了双门限比较方法[5]。利用双门限比较方法,将短时能量E和短时平均过零率Z相结合,提高了检测精度,有效地缩短了系统的运行周期,排除了静音部分的噪声,提高了音频信号的处理性能。

1.4.1 短时能量

短时能量序列反映了声波的振幅和能量随时间而逐渐改变的一种规律,表达式为:

音频信号的短时平均能量如图2 所示。

图2 音频信号短时平均能量

1.4.2 过零率

短时过零率表示在一帧语音信号中,其波形穿过零点的次数,可以在一定程度上反映频率的高低,适用于音频信号噪声较高的情况。音频信号的短时过零率如图3 所示。

图3 音频信号短时过零率

2 基于TDOA 的声源定位算法

基于TDOA 的声源定位算法通常分为两步,首先利用时延估计算法求出声源达到两麦克风的时延值,然后利用位置解算算法根据时延值对声源进行定位。

2.1 TDOA 的信号模型

在空间中仅有一个声源s(t)(位于S位置),将两个麦克风m1、m2所在位置记为M1、M2。TDOA 时延计算模型如图4 所示。

图4 TDOA 计算模型

所接收信号记为xi(t),τi为声源到达麦克风的延迟时间,ni(t)为加性噪声,则有:

式中:

由此可以算出声源信号到达两个麦克风的TDOA 为:

2.2 时延估计算法

时延估计算法采用广义相关函数(Generalized Cross-Correlation Function, GCCF),为了减少噪声和混响使用,在互功率谱域使用加权函数加权,然后经过IFFT 运算后找到峰值估计时延[6]。

两个麦克风之间的到达时间(Time Of Arrival, TOA)可以等效为能够使麦克风输出的滤波信号之间的互相关函数最大的时间间隔,表达式为:

广义互相关函数(Generalized Cross Correlation, GCC)计算公式为:

式中,ψ12为频域加权函数,常见的有互相关函数(Cross-Correlation, CC)、平滑相关函数、PHAT(PHAse Transformation)加权等。此处将CC 与PHAT 进行对比。

广义互相关函数有多种不同的变形,其中广义互相关- 相位变换(Generalized Cross Correlation PHAse Transformation, GCC-PHAT)方法应用最为广泛[7-10]。

2.3 位置解算算法

在不同声场下的声源信号应采用不同的处理模型,需要根据实际来确定选择近场或是远场模型,从而实现较为精准的定位。当声源与麦克风之间的距离r符合式(13)的条件时,则为远场模型。

式中,λmin为声源最高频率语音的波长,即声源的最小波长[2]。远场模型如图5 所示。

图5 远场模型

由于距离较远,可以将声源信号传播视为平面波,两个麦克风的距离为d,声源传播到两个阵元的方位角均为θR(z),以m1作为参考阵元,使用简单的几何知识,可得:

图6 近场模型

3 仿真分析

用MATLAB 对移动声源的定位进行仿真,并对比在不同信噪比条件下CC 算法和GCC-PHAT 算法的表现。

3.1 仿真设定条件

3.1.1 声源信号

使用audioread()函数读取一段音频作为宠物声源,采样频率fs=48 kHz,得到声源信号。声源信号时域波形如图7所示。

图7 声源信号时域波形

3.1.2 麦克风阵列

采用由水平方向和垂直方向共9 个麦克风组成的麦克风阵列对移动的声源定位。麦克风在直角坐标系中的位置坐标见表1 所列。麦克风在空间中的分布如图8 所示。

表1 麦克风坐标

图8 麦克风位置分布

3.2 声源定位算法

3.2.1 比较GCC-PHAT 算法和CC 算法

用MATLAB 对二麦克风模型下的固定声源定位进行仿真,并对比在不同信噪比条件下CC 算法和GCC-PHAT 算法的表现。

(1)建立模型

设置声源位置s(sx,sy)、麦克风位置M1(Mx1,My1)、M2(Mx2,My2),并计算s(sx,sy)与M1(Mx1,My1)间的距离distance1,以及s(sx,sy)与M2(Mx2,My2)间的距离distance2。计算∠sM1M2并画出图像,如图9 所示。

图9 声源与麦克风坐标

这里设置s(10, 10)、M1(0, 0)、M2(2, 0)。计算得出distance1=14.142 135 623 730 951 m,distance2=12.806 248 474 865 697 m,angle=45°。

(2)模拟声源

加载MATLAB 自带的chirp(扫频余弦信号)来拟合宠物的声音,采样频率fs=48 kHz。为模拟真实场景,用delayseq()函数给声源设置时延,用awgn()函数给声源添加噪声。原始声源信号的时域波形如图10 所示。

图10 声源信号波形

(3)声源定位

设置两组信噪比(SNR)值。第一组为110 dB,即大信噪比的情况下,分别用GCC-PHAT 算法和CC 算法计算声源的到达角(Angle Of Arrival, AOA),与真实值angle=45°对比,比较两种算法定位的准确度;再画出GCC 函数和CC 函数的图像,根据互相关函数的特点,在M1(0, 0)处峰值越突出,效果越好,以此来比较两种算法实现声源定位的效果。第二组设置SNR=1 dB,即小信噪比情况下,仿真步骤同第一组。仿真结果如下:

① 高信噪比情况

添加的高斯白噪声信号波形如图11 所示。

图11 噪声信号波形(SNR=110 dB)

GCC-PHAT 算法计算得出AOA=44.900 5°,CC 算法计算得出AOA=44.612 3°。GCC-PHAT 算法函数图像如图12所示。CC 算法函数图像如图13 所示。

图12 GCC-PHAT 函数图像(SNR=110 dB)

图13 CC 函数图像(SNR=110 dB)

从AOA 的计算结果可以看出,GCC-PHAT 算法比CC 算法准确。由函数图像可以看出,在大信噪比情况下,GCC-PHAT的函数图像在M1(0, 0)尖峰突出,其他位置函数值为0;而CC 的函数图像虽在麦克风位置尖峰突出,但在其他位置处仍有函数值。故在大信噪比情况下,GCC-PHAT 算法优于CC 算法。

② 低信噪比情况

用delayseq()函数给声源设置时延,用awgn()函数给声源信号添加噪声。绘制出原始声源信号波形、含噪声信号波形、延迟含噪声信号的波形,如图14 所示。

图14 声源信号(上)、含噪信号(中)、延迟含噪信号(下)(SNR=1 dB)

GCC-PHAT 算法计算得出AOA=[(1.800 0e+02)-(1.183 6e+02i)]°,CC 算法计算得出AOA=44.900 5°。

GCC-PHAT 算法的函数图像如图15 所示。CC 算法的函数图像如图16 所示。

图15 GCC-PHAT 函数图像(SNR=1 dB)

图16 CC 函数图像(SNR=1 dB)

从AOA 的计算结果看出,CC 算法比GCC-PHAT 算法更准确。从函数图像可以看出,在小信噪比情况下,GCC-PHAT 函数在非M1(0, 0) 处的函数值比CC 函数更大,CC 函数在M1(0, 0)的峰值比GCC-PHAT 函数突出。故在小信噪比情况下,GCC-PHAT 的声源定位效果比CC 算法差。

综合两组仿真结果可知,GCC-PHAT 方法本身具有一定的抗噪声和抗混响能力,但是在信噪比降低和混响增强时,该算法性能急剧下降。麦克风的信噪比一般不低于70 dB。根据理论分析和仿真实验的结果,声源定位算法选择GCCPHAT 算法效果更佳。

3.2.2 利用GCC-PHAT 算法对移动声源定位

采用GCC-PHAT 算法对移动声源进行定位,并绘制定位过程的俯视图和立体图。俯视图如图17 所示。

图17 对移动声源定位的俯视图

如图18 所示,立体图中,XOZ平面内有小五角星共9 个,代表麦克风位置,由于麦克风之间距离较近有重叠,立体图中只能看到5 个小五角星。XOY平面内的圆形是移动的声源,粗实线是根据声源定位算法计算出的声源与麦克风阵列的距离和AOA 画出的。

图18 对移动声源定位的立体图

设在t时刻,移动声源的实际坐标为(xi,yi),声源定位算法估计出的声源坐标为, 误 差,将每个时刻t和对应的θ(t)描点连线,得到的图像如图19 所示。

图19 时间与定位误差的关系

由图19 的曲线可以看出:0 ~0.3 s 时定位误差较大;0.3 s 以后,定位误差在5 m 以内变化。而智能宠物陪伴机器人配置的摄像头可视范围一般超过10 m,因此可以采用麦克风阵列、GCC-PHAT 算法对室内的宠物进行声源定位,定位后机器人控制移动机构运动到宠物附近,使得摄像头范围内有宠物。

4 结 语

本文针对智能宠物陪伴机器人对宠物的室内定位问题,提出了宠物声源定位算法设计。对采集的音频信号进行预加重、分帧、加窗、端点检测预处理,改善音频信号的质量,提高处理音频信号的效率。然后利用基于到达时间差的声源定位算法,通过时延估计,得出声源的位置。对TDOA 声源定位算法当中的时延估计算法和位置解算算法分别建立了物理模型,并在此基础上进行推导计算。最后使用MATLAB 对GCC-PHAT 算法和CC 算法分别在大信噪比和小信噪比情况下的声源定位效果进行对比,得出GCCPHAT 方法在大信噪比条件下具有较好的声源定位效果,但是在信噪比降低时该算法性能急剧下降。综合考虑实际情况和仿真结果,选择GCC-PHAT 算法进行声源定位,并将GCC-PHAT 算法应用于采用麦克风阵列对移动声源实时定位的场景,通过MATLAB 仿真得到该场景下的定位效果图并计算出定位误差。结果显示,定位误差在5 m 以内,在机器人摄像头可视距离范围,可以满足宠物室内定位要求。

猜你喜欢
麦克风声源时延
虚拟声源定位的等效源近场声全息算法
Binaural Rendering based on Linear Differential Microphone Array and Ambisonic Reproduction
基于GCC-nearest时延估计的室内声源定位
基于数字麦克风的WIFI语音发射机
基于改进二次相关算法的TDOA时延估计
运用内积相关性结合迭代相减识别两点声源
FRFT在水声信道时延频移联合估计中的应用
基于分段CEEMD降噪的时延估计研究
力-声互易在水下声源强度测量中的应用