声源定位
让机器人与人类互动是研制仿人机器人的主要目的之一。声源定位功能用于确定声音来自何方。为了生成鲁棒且有用的输出数据,同时满足CPU和内存方面的要求,NAO的声源定位功能基于“到达时间差”法(Time Difference of Arrival)。
换言之,当NAO附近的某个声源发出声音时,NAO身上的四个麦克风在接收声波的时间上会略有差异。
例如,当有人在NAO左侧说话时,相应的信号会首先到达机器人左侧的麦克风,几毫秒之后到达位于前额与脑后的麦克风,最后到达右侧的麦克风。
这种时间差名为“双耳时间差”(interaural time differences,简称ITD)。在这些时间差的基础上,通过数学运算可获得声源的当前位置。
这样,每当听到一个声音时,机器人就可借助4个麦克风测量到的ITD值,通过运算检索到声源的方向(方位角和仰角)。
该功能作为一个NAOqi模块供用户使用。模块名为“ALAudioSourceLocalization”,提供一个C++和Python的API接口,可准确地与某一Python脚本或NAO模块互动。
可行的实际应用包括: 探测、跟踪并识别某个人
探测、跟踪并识别某个可发声物体
在某一特定方向的语音识别
在某一特定方向的说话者识别
远程安全监控
娱乐
音频信号处理
由于机器人上的嵌入式处理器计算能力有限,有时可将某些运算导出至远程桌面或服务器上完成。
这个方法尤其适用于处理音频信号。例如,在一个远程处理器上进行语音识别时,效率会更高(速度更快且更准确)。大部分现代智能手机就是以远程方式来处理语音识别。
用户可能会希望直接在机器人上应用自己的信号处理算法。
NAOqi框架使用“简单对象访问协议”(Simple Object Access Protocol,简称SOAP)来发送和接收网络音频信号。
使用ALSA库(Advanced Linux Sound Architecture)在NAO上生成和记录声音。
ALAudioDevice模块管理音频的输入和输出。
专业人员利用NAO的音频处理能力,可进行大量与人机互动及信息交流有关的实验和研究。
例如,NAO可用作一个交流器件。用户可以像是在和另一个人交谈一样,与机器人互动(如交谈、倾听等)。
信号处理自然也是一个很好的应用实例。用户可借助音频模块,实时获得来自麦克风的原始音频数据,然后使用自己的代码予以处理。