邓三星,李克强,薛国阳,李恒,张兆宽
(黄河交通学院 河南省智能制造技术与装备工程技术研究中心,河南焦作,454950
《墨子》一书中有这样的记录:“令陶者为罂,容四十斗以上,固顺之以薄革,置井中,使聪耳者伏罂而听之,审知穴之所在,凿穴迎之。”其中指的就是战国时期的“地听”跟“瓷听”。这是我国有记载的最早用声响来实现定位的案例。
在日渐现代化、智能化的今天,语音识别和声源定位的高效性已进入我们生活的方方面面。声源定位技术在视频会议系统[1]、汽车鸣笛定位、人机交互[2]等均有非凡的意义,传统的单个麦克风的拾音范围很有限,拾取信号的质量不高。本文以K210 单片机作为主控制核心,Mega2560 单片机作从控制核心,设计了一种声源定位装置,可实现对声源信息的二维定位,并对系统精确度进行测试。
主控制单元从麦克风阵列获取个麦克风探头读取到的声音信息取最高三个值计算出声源的跟基准面的夹角信息并将其通过串口发送给从控制单元;从控制单元收来自于主控制单元的角度信息后控制舵机转至对应角度,随后通过三路超声波模块对位置进行小范围纠偏。系统结构框图如图1所示。
图1 系统结构框图
麦克风阵列,是将多个麦克风按一定的空间位置关系布置形成的阵列,是对空间传播声音信号进行空间采样的一种装置,采集到的信号包含了其空间位置信息。根据声源和麦克风阵列之间距离的远近,可将阵列分为近场模型和远场模型。根据麦克风阵列的拓扑结构,则可分为线性阵列、平面阵列、体阵列等。本文使用集成化的平面阵列;对其控制方式是通过计算时延来实现对声源位置的计算;计算时延的方法多种多样,本文采用最为经典的广义互相关函数估计时延。
(1)时延计算[3]
在噪声存在的情况下一个平面束波由声源发出,被麦克风阵列识别到并提取三组最高值并将两头数据分别同中间数据进行比对计算那么可建立数学模型:
上式st是声音信号,n1t和n2t是这两个麦克风探头所检测到的噪声值,麦克风阵列上的每个麦克风都是独立运行的其各自采集的数值互不影响。
(2)x1和x2之间的关系
麦克风阵列扩展模块由 7 个数字麦克风组成,其中6 个按圆周阵列分布于模块四周最后一个位于模块中心,便于识别各个方向的声源另外 12 个LED 指示灯同样呈圆周阵列分布于模块四周,方便指示声源位置[5]。本文使用圆周六个麦克风,中央的麦克风并不使用。麦克风阵列扩展模块如图2 所示。
图2 麦克风阵列扩展模块
(1)74LVC1T45W6 单位双向可控电平转换芯片在其中将声音信号以高低电平的形式将声信号转换为电信号传输给后续的低通滤波器,以自身所具有的高噪音抑制特性与低通滤波器共同实现对声音信号的降噪处理。74LVC1T45W6 电平转换电路如图3 所示。
图3 74LVC1T45W6 电平转换电路
(2)MCP6242 是用于放大器的运算放大器。这是一款 3.3V 兼容轨对轨运算放大器。初始高通滤波器的截止频率约为 160Hz。带通放大器上的高通滤波器被选择为与初始高通滤波器的截止值大致匹配。至于运算放大器的低通滤波器,选择该滤波器的截止频率约为 725Hz。选择这些较低频率的原因是能够用简单方法获得原始采样率。使用的增益是 1000:1。麦克风电路的每个输出都连接到一个具有模拟功能的输入/输出引脚。使用的引脚是RA0、RA1 和RB3,它们对应于AN0、AN1 和AN5。
基于麦克风阵列的声源定位装置的设计与实现采用的核心部件为K210 单片机,最小系统由上电复位电路、电源供电电路与时钟电路三部分构成,其中电源电路中有5 个数字电源正极;主时钟晶振频率为400MHz,晶振电路为单片机提供定时计数功能;NRET 引脚正常工作时接3.3V 高电平,同时并连一个按钮开关,按钮开关接地,在需要进行初始化操作时,按下开关复位引脚被赋予低电平即可。
K210 全称为堪智K210,是嘉楠科技自主研发的一款采用RISC-V 处理器架构,支持机器视觉与机器听觉多模态识别,可广泛应用于智能家居、智能园区、智能能耗和智能农场等场景。拥有双核64 处理器,相应的算力高达1TPOS,硬件可靠性强稳定性高在一定程度上提高了装置的响应速度与精度[6~9]。
舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。在智能控制领域应用较为普遍。
舵机是一个经典的闭环反馈系统,原动力由电机提供,进而带动齿轮箱,承担终端位置检测反馈任务的为电位器,线性电位器以比例电压的形式将转角坐标反馈给控制电路板,控制电路板将该信号与输入的控制信号相比较,然后发生修正脉冲信号,同时驱动电机正向或反方向的转动。
舵机结构示意图如图4 所示。
图4 舵机结构示意图
HC-SR04 超声波模块可以自身对超声波的发送与接收来实现测距工作,在误差允许情况下最远可达400cm,其主要由发射极、接收极与调理电路构成自带晶振电路和滤波电路在一定程度上减小了控制单元工作量。其基本工作原理如下:
(1)采用IOTRIG 触发测距,给最少 10μs 的高电平信号。
(2)模块在此期间自动发送 8 个 40kHz 的方波信号,同时自动检测是否有信号返回;
(3)若有信号返回,通过 IOECHO 输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间×声速(340m/s))/2。超声波模块如图5 所示。
图5 超声波模块
系统通电后各部分模块进行初始化操作,K210 单片机作为主控制单元,Mega2560 单片机作为从控制单元。麦克风阵列模块检测到声源信息后将声音信号以电信号的形式发送给K210 单片机,在其内部经过一系列计算得到角度信息与距离信息,点亮对应方向的LED 指示灯并将距离信息和角度信息传输给Mega2560 单片机,Mega2560 单片机控制舵机转至对应角度,随后超声波模块通过测得距离的差值对角度信息进行微调并将得到的距离信息与K210 单片机传来的距离信息比对进而得到最终的距离信息并通过OLED显示屏显示。系统主程序流程图如图6 所示。
图6 系统主程序流程图
K210 单片机通过mic_appay 程序模块获取声源分布图进而计算出声源方向,在去除干扰值后计算出对应的x,y 坐标并换算出角度跟距离,将之通过串口传送给Mega-2560 单片机。
角度信息、距离信息读取关键行程序如下:
Mega2560 单片机控制的舵机上方搭载三路超声波测距模块,在接收到K210 单片机发送的角度信息后Mega2560 单片机会控制舵机旋转到对应的位置,然后三路超声波模块会对声源面进行测量距离并相互比对最终正对声源面,读取此时的舵机角度偏移量并跟K210 单片机发送的角度信息取和即完成对角度的校准。
Mega2560 角度校准关键行程序如下:
主要测量声源与装置的角度方位以及距离大小。系统测量结果如表1、表2 所示。为测试系统误差采用控制变量法测试距离不变时测量角度与理论角度对比如图7 所示。角度不变时测量距离与理论距离对比如图8 所示。距离与角度均变化时测量结果如表3 所示。距离与角度均变化时测量值与理论值对比如图9 所示。
表1 距离不变时系统测量结果
表2 角度不变时系统测量结果
表3 角度距离均变化时测量结果
图7 距离不时测量角度与理论角度对比
图8 角度不变时测量距离与理论距离对比
图9 角度距离均变化时测量值与理论值对比
(1)在距离原点较近范围内的声源定位误差较大,原因是距离越近,声音到达麦克风的时间越小,对系统的时延分辨率要求就越高,在系统的实验分辨率一定的情况下,声源距离误差自然会增加。
(2)算法的问题:时间延迟的求法受噪声影响很大,想提高精度必须提高算法抗噪性;下一步定位估计的过程是直接利用第一步结论,会导致误差进一步放大。
(3)是由于多普勒效应(Doppler effect)的影响,多普勒效应是波源与观察者有相对运动时,观察者接受到波的频率与波源发出的频率并不相同的现象。即同样的声音信息但是当声源是运动的情况下我们所采集到的信息是有一定差异的,如行驶的汽车在面驶来时鸣笛跟背向远离时鸣笛我们听到的声音是不一样的,迎面驶来声音尖细背向远离声音沉闷;在声源运动时我们采集到的声音信息波长会发生变化但是由于声源与装置的位置的细微变化我们无法测量,因此存在误差[10]。
(1)声测定位技术研究是一项涉及声学、信号检测、数字信号处理、电子学、软件设计等诸多技术领域的新技术课题。
(2)本实验实现了二维平面内的声源位置测定,将之用角度与距离数据体现并且在元件规格允许范围内对声源位置实现了跟踪定位。
(3)本实验只能对单个声源进行定位且距离信息只有在表面积相对大的情况下才能实现较为准确的测定,同时信号时延问题也有待进一步研究,在算法上加以深入研究。
(4)在本实验基础之上增加竖直方向的拾音传感器并配合云台舵机将有望实现对三维空间键的声源定位,同时改变算法结构提升算法性能完全可以脱离外部测距装置依靠声音信息造成的时间差进行对声源位置的测定。