基于卡尔曼滤波的声源跟踪方法研究
- 摘 要
- 一、研究意义
- 二、研究内容
- 三、算法介绍
- 3.1基于到达时间差的定位算法
- 3.1.1算法原理介绍
- 3.1.2仿真实验设计与分析
- 3.2扩展卡尔曼滤波算法
- 3.2.1算法的基本原理
- 3.2.2仿真实验及分析
- 3.3无迹卡尔曼滤波算法
- 3.3.1算法的基本原理
- 3.3.2仿真实验及分析
- 3.4容积卡尔曼滤波算法
- 3.4.1算法的基本原理
- 3.4.2仿真实验及分析
- 3.5三种算法的分析比较
- 四、声源跟踪仿真系统设计
- 4.1声源选择部分
- 4.2声源跟踪部分
- 4.3算法比较部分
- 4.4算法比较部分测试分析
- 五、结论
- 六、附录
摘 要
声源跟踪即通过对声音信号分析和处理定位声源位置并对声源的运动轨迹进行跟踪的过程。由于声音信号不受视线和环境的影响,所以声音跟踪技术广泛应用在在军事、医疗、航空和航天技术等领域,因此相关理论和技术受到了国内外各界的广泛关注,在雷达和通讯领域已经形成了较为成熟的理论体系。
本文主要研究了三种实现声音跟踪的算法并进行了仿真实验和分析,这三种算法分别是:扩展卡尔曼滤波算法、无迹卡尔曼滤波算法和容积卡尔曼滤波算法。仿真实验结果表明,容积卡尔曼滤波算法在匀速运动模型种的跟踪效果最好,均方根误差最小,随着信噪比的下降,三种算法的跟踪效果在逐渐下降,均方根误差在逐渐变大,在相同信噪比环境下,容积卡尔曼滤波算法具有稳定性好,准确性高的特点。在此基础上,利用Matlab设计了一个基于卡尔曼滤波的声音跟踪仿真系统,该仿真系统分为三大子系统,分别是声源选择和显示波形子系统、算法选择和声音跟踪结果显示子系统和三种算法比较分析子系统。本文所设计的仿真系统实现了声源选择、算法选择、声源跟踪、跟踪结果显示和三种算法比较的功能,界面友好,操作方便。
一、研究意义
声源跟踪技术即通过对声音信号分析和处理定位声源位置并对声源的运动轨迹进行跟踪。声源跟踪技术在军事、医疗、航空和航天技术等领域都有广泛应用,因此相关理论和技术受到了国内外各界的广泛关注。例如,在军事方面,由于声信号具有隐蔽性强、抗干扰能力强等特点且不易受外部环境因素影响,所以声源跟踪技术在军事领域得到了广泛应用。
卡尔曼滤波算法采用前一时刻的状态值和当前时刻的观测值来获得当前时刻的状态值,本质上是一个连续的预测和校正过程,不需要存储大量的历史观测数据,且由于其良好的参数估计性能,卡尔曼滤波算法被广泛应用于各种动态系统中,例如,目标定位与跟踪、风险指数评估等。目前卡尔曼滤波算法在各个领域仍然是研究和应用的热点。由于传统的卡尔曼滤波算法稳定性较差,在迭代过程中容易发散,使得最终的结果不易收敛,所以在传统卡尔曼滤波算法的基础上已发展出多个算法。例如,扩展卡尔曼滤波算法、无迹卡尔曼滤波算法和容积卡尔曼滤波算法等,这些算法也已逐渐发展成熟,并且应用在各个领域,例如,故障诊断、系统监测、巡航制导等。
二、研究内容
本文设计了基于卡尔曼滤波的声源跟踪仿真系统,主要工作如下:
- 对声源信号进行处理并产生麦克风接受到的声源信号,利用Image模型产生冲激响应同信号做卷积并添加噪声作为麦克风最终接受到的声源信号。
- 利用基于到达时间差的定位算法对声源进行定位,作为测量值,为下一阶段的跟踪做准备。
- 分别利用扩展卡尔曼滤波算法、无迹卡尔曼滤波算法和容积卡尔曼滤波算法进行声源跟踪并显示声源跟踪结果。
- 计算均方根误差及其均值,并以此作为标准比较三种算法的准确性和稳定性。
三、算法介绍
3.1基于到达时间差的定位算法
3.1.1算法原理介绍
基于到达时间差的定位算法是一种经典的定位算法,通过计算各个麦克风距离声源的距离和时间差来计算声源的位置,利用麦克风之间之间的音频信号的相关性估计时间差,麦克风位置固定,通过计算时延和角度转换,可以估计声源位置[10]。假设利用三个麦克风A、B、C,三个麦克风呈线性分布,三个麦克风的位置分布为(x1,y1),(x2,y2),(x3,y3),声源位置为(a,b),A和B的时延为tab,A和C的时延为tac,声速c为340m/s,声源和麦克风分布如图,则通过方程(2.1)和方程(2.2)可以解得声源位置。
3.1.2仿真实验设计与分析
仿真实验中三个麦克风的坐标分别为(1,0),(3,0),(5,0),声源的坐标为(2,2),得到的仿真结果如图所示,蓝色圆圈代表三个麦克风的位置,红色米字代表声源的实际位置,绿色五角星代表声源的估计位置。
定位误差为声源的实际坐标和估计坐标之前的偏差,从声源定位仿真图可以直观的观察到声源的定位精度较高,声源定位误差图可以得到估计的误差为0.1124,定位误差较小,估计效果较好。
3.2扩展卡尔曼滤波算法
3.2.1算法的基本原理
传统的卡尔曼滤波算法只适用于线性高斯系统,可以给出线性变换目标的最优估计,但是由于环境的随机性,在实际工程应用问题中更多的是非线性问题,因此,为了解决实际非线性系统的问题,提出了基于卡尔曼滤波算法的扩展卡尔曼滤波算法,扩展卡尔曼滤波算法是线性卡尔曼滤波算法在非线性条件下的一种扩展形式,利用泰勒级数展开将非线性模型转为线性模型,利用扩展卡尔曼滤波算法进行滤波计算,可以有效的解决非线性目标跟踪问题。其中扩展卡尔曼滤波算法将状态转移函数利用一阶泰勒级数展开对其进行近似,只保留一阶项,忽略高阶项,算法的流程如图.
扩展卡尔曼滤波算法主要包括三个阶段,第一阶段是初始化阶段,初始化状态值和协方差,第二阶段是预测阶段,预测当前时刻的状态值和协方差,第三阶段是更新阶段,首先更新卡尔曼滤波增益,然后利用卡尔曼滤波增益计算当前时刻的状态值和协方差并进行更新。
3.2.2仿真实验及分析
在仿真实验中,声源的运动模型为匀速运动模型,这种模型描述的运动目标的运动状态比较平稳,属于非机动运动模型。匀速运动模型表示的是声源沿一定方向,以恒定的速率运动
在仿真实验中,声源的初始坐标是(1,1),声源沿x轴方向的速度是0.05m/s,声源沿y轴方向的速度是0.2m/s,利用扩展卡尔曼滤波算法实现声源跟踪得到的仿真结果如图.
蓝色的点线是声源的实际运动轨迹,红色米字线是利用扩展卡尔曼滤波算法估计的声源运动轨迹,从跟踪轨迹可以观察出,起始一段时间的跟踪效果较好,但是随着跟踪时间的延长,跟踪效果在下降。均方根误差表示声源的实际位置同估计位置之间的偏差,从仿真结果图2.7均方根误差中可以观察出,从整体上看,随着跟踪时间的延长,均方根误差在逐渐增加,即跟踪精度在下降,稳定性较差,仿真实验中,采样时间为1s,声源跟踪的仿真时间为60s,跟踪过程中的均方根误差的平均值如图2.6,均方根误差的均值为0.1580
3.3无迹卡尔曼滤波算法
3.3.1算法的基本原理
无迹卡尔曼滤波算法是在卡尔曼滤波算法的基础上发展而来的,由于扩展卡尔曼滤波算法利用泰勒级数进行展开,只保留一阶项,忽略了高阶项,存在线性化误差,所以无迹卡尔曼滤波算法采样无迹变换来实现非线性系统线性化并解决均值和和协方差的非线性传递问题,即在原状态分布中按规则选取部分采样点,但是均值和方差同原状态相同,将这些采用点代入非线性方程中,求取变换后的均值和协方差,这种算法降低了扩展卡尔曼滤波算法线性化带来的误差,同时具有更小的估计误差[13]。无迹变换的特点是对非线性函数的概率密度分布进行近似,不增加算法实现的难度和复杂度,无迹变换变换得到的非线性函数的统计量可以达到三阶,减小估计误差,同时,应用无迹变换不需要计算雅可比矩阵,可以减少计算量。
3.3.2仿真实验及分析
在仿真实验中,声源的初始坐标为(1,1),声源沿x轴方向的速度为0.05m/s,声源沿y轴方向的速度为0.2m/s,利用无迹卡尔曼滤波算法实现声源跟踪得到的仿真结果如图.
蓝色十字线代表声源运动的实际轨迹,红色米字线代表利用无迹卡尔曼滤波算法获得的估计轨迹,从整体上看,声源的跟踪效果较好,跟踪轨迹和真实轨迹较为吻合,相较于应用扩展卡尔曼滤波算法的跟踪效果好,从均方根误差图2.11可以看出,整体均方根误差同应用扩展卡尔曼滤波算法相比整体呈现下降的态势,但随着跟踪时间的延长,均方根误差逐渐增大,跟踪效果逐渐下降。在仿真实验中,采样时间为1s,声源跟踪的仿真时间为60s,整个仿真过程的均方根误差的平均值如图2.10,均方根误差的均值为0.0721,误差比应用扩展卡尔曼滤波算法的误差小。
3.4容积卡尔曼滤波算法
3.4.1算法的基本原理
容积卡尔曼滤波算法是用于解决非线性问题的算法,是在贝叶斯算法的基础上发展而来,同无迹卡尔曼滤波算法相似,但是容积卡尔曼滤波算法通过选取一组容积点来近似计算非线性系统的状态值和协方差,采用球面径向容积准则逼近状态后验均值和后验协方差,可以有效的降低非线性函数线性化的误差,由于容积卡尔曼滤波算法是基于数值积分理论来计算高斯积分,具有严格的数学证明,所以具有数值精度高和稳定性好的特点。
容积卡尔曼滤波算法的流程图如图.
3.4.2仿真实验及分析
在仿真实验中,声源的初始坐标是(1,1),声源沿x轴方向的速度是0.05m/s,声源沿y轴方向的速度是0.2m/s,利用容积卡尔曼滤波算法实现声源跟踪得到的仿真结果如图
在仿真结果图2.13中蓝色米字线代表声源的实际运动轨迹,红色十字线代表利用容积卡尔曼滤波算法获得的估计轨迹,从跟踪结果图2.13可以观察出,声源的真实轨迹和估计轨迹非常吻合,在跟踪的整个过程中没有出现随着跟踪时间的延长,跟踪效果下降的现象,整个阶段十分稳定,没有出现较大的偏差。从均方根误差图2.14中可以观察出均方根误差整体处于波动状态,跟踪误差整个过程保持稳定,且同应用无迹卡尔曼滤波和扩展卡尔曼滤波算法实现声源跟踪相比,均方根误差有明显的减小,且整个过程的稳定性最好。仿真实验中,采样时间是1s,声源跟踪的仿真时间是60s,这个过程的均方根误差的平均值如图2.15,均方根误差的均值为0.0087,跟踪误差比应用扩展卡尔曼滤波算法和无迹卡尔曼滤波的跟踪误差小。
3.5三种算法的分析比较
仿真环境设置为在6m7m3m的房间内,混响时间为0.2s,信噪比为30db,用Image模型生成声源与各传声器之间的冲激响应,然后与语音信号卷积并添加噪声模拟仿真房间中各麦克风接收到的信号,采样频率是16kHz,声源的运动模型是匀速运动模型,声源的初始坐标是(1,1),声源沿x轴方向的速度是0.05m/s,声源沿y轴方向的速度是0.2m/s,其他条件相同,分别利用三种算法实现声源跟踪,三种算法的跟踪轨迹如图2.16,其中蓝色直线表示声源的真实轨迹,绿色三角线表示利用扩展卡尔曼滤波算法实现声源跟踪的估计轨迹,粉色十字线表示利用无迹卡尔曼滤波实现声源跟踪的估计轨迹,红色米字线表示利用容积卡尔曼滤波算法实现声源跟踪的估计轨迹,从三种算法的对比图可以直观的观察出容积卡尔曼滤波算法的估计轨迹同真实轨迹最为吻合,估计效果最好,三种算法的均方根误差的均值如表2.1所示,从表2.1可以得出利用容积卡尔曼滤波算法实现声源跟踪的误差最小,无迹卡尔曼滤波算法次之,扩展卡尔曼滤波算法的误差最大,图2.17是三种算法的均方根误差的对比图,蓝色线、红色线和绿色线依次代表三种算法的均方根误差,整个过程容积卡尔曼滤波算法的误差最小,即跟踪精度最高,且整体保持稳定的态势。
假设其他条件不变,只改变信噪比,信噪比依次是5db、10db、15db、20db、25db、30db,分别应用三种算法实现声源跟踪,对应的均方根误差如表.
随着信噪比的提高,三种算法的均方根误差均在不同程度的减小,跟踪效果逐渐上升,三种算法在低信噪比中的均方根误差均较大,跟踪精度均较低;在同一信噪比环境下,容积卡尔曼滤波算法的均方根误差总体小于另外两种算法,这说明容积卡尔曼滤波算法的定位精度要比另外两种算法更高,所以容积卡尔曼滤波算法在匀速运动的声源模型中的跟踪效果最好,且在较高信噪比环境下,容积卡尔曼滤波算法的均方根误差变化幅度最小,稳定性能最好,这是由于容积卡尔曼滤波算法采用容积积分原则,不会因为忽略函数本身的一些非线性特性而造成误差,无迹卡尔曼滤波算法的跟踪效果次之,但优于扩展卡尔曼滤波,这是因为扩展卡尔曼滤波主要通过泰勒级数一级展开将非线性系统线性化,只保留了一阶项,忽略了高阶项,而无迹卡尔曼滤波算法摒弃了这种传统做法,对非线性函数的概率密度进行近似,没有忽略高阶项,因此相较扩展卡尔曼滤波算法有较高的精确度和稳定性。
四、声源跟踪仿真系统设计
本文设计了一个基于卡尔曼滤波的声源跟踪仿真系统,该系统的系统框图如图3.1所示,该仿真系统主要分为三个部分,分别是声源选择和显示声源波形部分、声源跟踪和结果显示部分、比较三种算法并显示均方根误差部分。
4.1声源选择部分
声源选择部分是仿真系统的输入部分,通过设置采样频率、信噪比和混响实现输入功能,采样频率输入选用可编辑文本组件,在仿真系统运行时输入采样频率的数值,选择信噪比包括5db、10db、15db、20db、25db、30db,选择信噪比选用弹出式菜单组件,混响同信噪比设置相同,如图.
声源选择部分设置为点击选择文件按钮,然后弹出声源文件,声源文件的类型是.wav文件,选择声源文件后会将所选的声源文件的路径显示到可编辑文本框中,声源选择部分的界面设计如图
声源波形显示选用按钮和坐标轴组件,点击语音波形按钮组件,可以在坐标轴组件中显示语音的波形,声源波形显示部分的系统设计界面如图。
4.2声源跟踪部分
声源跟踪部分需要在三种算法中选择一种实现跟踪功能,并显示跟踪轨迹和均方根误差曲线,其中算法选择选用弹出式菜单组件,下拉菜单选择算法,跟踪轨迹和均方根误差的显示选用按钮和坐标轴组件,点击声源跟踪按钮之后会在两个坐标轴组件中分别显示跟踪轨迹和均方根误差,声源跟踪部分的仿真系统界面如图
4.3算法比较部分
算法比较部分实现同时显示三种算法的跟踪轨迹和均方根误差的功能,并在界面中显示均方根误差的均值,算法比较部分选用按钮、坐标轴和可编辑文本组件,点击算法算法比较按钮之后,在两个坐标轴中分别显示三种算法的跟踪轨迹和均方根误差结果,在可编辑文本中显示均方根误差的均值,算法比较部分的界面设计如图.
4.4算法比较部分测试分析
算法分析比较分析部分测试同时使用三种算法跟踪声源并显示跟踪轨迹和均方根误差,点击算法比较按钮,在左边的坐标轴上显示三种算法的跟踪轨迹,在右边的的坐标轴上显示使用三种算法实现声源跟踪功能的均方根误差结果,同时在三种算法对应的文本框中显示三种算法各自的均方根误差的均值,算法比较分析部分的仿真运行界面如图.将三种算法的估计轨迹和声源的实际轨迹显示在同一幅图中可以直观的分析比较三种算法,在三种算法对应的文本框显示三种算法的均方根误差的均值,可以更准确的分析三种算法的误差,从整个跟踪过程比较三种算法。
五、结论
在本次设计中,主要研究了基于卡尔曼滤波的声源跟踪方法研究和仿真系统的设计,主要应用了三种算法实现声源跟踪功能,分别利用三种算法在不同信噪比环境下进行仿真实验实现声源跟踪,然后比较三种算法的性能和优缺点。在扩展卡尔曼滤波算法的仿真实验中,声源的估计轨迹和真实轨迹拟合效果较差,随着跟踪时间的延长,均方根误差逐渐变大,声源的跟踪精确度下降,均方根误差的均值是0.1580,总体跟踪效果较差;在无迹卡尔曼滤波算法的仿真实验中,同扩展卡尔曼滤波算法相似,声源的跟踪效果随着跟踪时间的延长在下降,但是,应用无迹卡尔曼滤波算法的均方根误差总体在下降,均方根误差的均值是0.0721,跟踪性能优于扩展卡尔曼滤波算法;容积卡尔曼滤波算法的声源跟踪轨迹同声源的实际轨迹基本吻合,均方根误差曲线一直处于波动状态,均方根误差的均值是0.0087,说明容积卡尔曼滤波算法同另外两种算法相比精度更高;利用三种算法在信噪比为30db的仿真环境下进行跟踪,从跟踪轨迹图2.16可以观察出,容积卡尔曼滤波算法的估计轨迹同声源的实际轨迹最吻合,从均方根误差的对比图2.17可以更观的观察出,容积卡尔曼滤波算法的均方根误差在整个仿真过程中处于波动态势,跟踪性能最为稳定,表2.1列出来三种算法的均方根误差的均值,可以更准确的得出容积卡尔曼滤波算法的误差最小;表2.2是三种算法分别在信噪比为5db、10db、15db、20db、25db、30db的环境下测得的均方根误差的均值,三种算法的均方根误差均随着信噪比的下降而逐渐增大,即跟踪效果均在逐渐下降,在同一信噪比环境下,均方根误差最小的是容积卡尔曼滤波算法,其次是无迹卡尔曼滤波算法,最后的扩展卡尔曼滤波算法,综上所述,容积卡尔曼滤波算法在匀速运动模型中的跟踪效果最好,具有稳定性好和准确度高的特点。
本文设计的仿真系统可以设置并选择声源,具备选择不同算法实现的声源跟踪功能,可以同时显示三种算法跟踪轨迹和均方根误差结果,便于分析比较不同算法的跟踪效果和性能,本系统的优点在于操作简单、选择性强、功能丰富且跟踪的准确率较高,缺点是在低信噪比时,跟踪效果较差。
本课题研究的是基于卡尔曼滤波的声源跟踪算法并应用软件设计仿真系统,节约经济且保护环境,同时,声源跟踪已逐渐应用在各个领域,例如,应用在家用社交机器人的头部,可以跟踪用户,应用在智能会议室中,控制摄像头跟踪说话人等等,这些都为我们的生活带来了极大的便利,提高了我们的生活质量,而且算法研究成果的转化会推动人工智能的发展,实现经济、社会和环境共同发展。
六、附录
仿真系统界面设计