ODAS介绍
ODAS(Open embeddeD Audition System)是一个声源定位系统,用于在麦克风阵列上识别、分离不同的声源并加以追踪。
该模型的理论实现主要分为两个部分:SSL和SST,前者用于分离不同的声源,后者对声源进行追踪和过滤。
ODAS原理
ODAS将空间压缩成一个单位球面(归一化),在这个球面上对声音进行处理,主要分为定位(SSL)和追踪(SST)两部分。
SSL, Sound Source Localization, 声源定位
//TODO
SST, Sound Source Tracking, 声源追踪
//TODO
演示模型的实现
ODAS演示分为两个模块:
ODAS核心系统 + ODAS图形演示系统,这两个系统通过TCP通信,即它们之间可以远程工作。树莓派上运行的ODAS图形演示系统比较吃CPU资源,因此我把后者放到了windows上,然后通过局域网让树莓派把数据发到windows进行演示。
Server: odas web on windows/linux
这里采用了windows安装,linux使用odas web需要具有图形界面和浏览器,不过流程差不多,可以参考windows。
step1 Node.js的安装和配置
- 首先给windows安装Node.js v12(client的README.md中指定了该版本);
- 安装到自己指定的目录,路径不要包含中文名;
- 配置Node.js的环境,已经有经验贴了,不再赘述。
step2 odas web的下载和安装
- 下载ODAS web并解压;
- 用系统管理员权限打开cmd并打开ODAS web解压后的目录;
- 默认的npm下载源速度很慢,没有小飞机的话推荐修改源到国内的阿里镜像,我使用了方案1;
- 若使用方案1,则在具有管理员权限的cmd下打开ODAS web目录并执行cnpm install开始下载组件(若该指令提示cnpm不是内部指令,可能是Node.js的环境变量没有设置对,参考step1的经验贴,或者也可能是你使用了power shell而非cmd);
- 若使用方案2,则执行npm install;
- 耐心等待安装;
- 安装完成后,执行npm start &或cnpm start &启动odas web;
- 在下图中可以在odas web中看到Server的IP地址,或自己用其他方式查看windows的IP,作为odas client的输出IP地址。
Client: odaslive on Raspberry Pi
odas核心,在树莓派上运行,通过麦克风阵列采集数据,实现ODAS处理后,输出结果到远程图形服务端odas_web。
在树莓派运行以下几个命令安装并编译odaslive:
# copy form: http://wiki.seeedstudio.com/ReSpeaker_4_Mic_Array_for_Raspberry_Pi/
sudo apt-get install libfftw3-dev libconfig-dev libasound2-dev libgconf-2-4
sudo apt-get install cmake
git clone https://github.com/introlab/odas.git
mkdir odas/build
cd odas/build
cmake ..
make
# 编译成功后,回到odas目录
cd ..
编译结束后,执行程序:bin/odaslive,配置参数:config/odaslive/select_one.cfg(select_one取决于麦克风阵列的参数),这里使用7麦阵列为例,我们需要用到配置文件config/odaslive/respeaker.cfg(或参考该文件自己写一个)。
vim config/odaslive/respeaker.cfg
修改“config/odaslive/xxx.cfg”中的ip地址为ODAS Server端的地址(默认是本机127.0.0.1,注意此处需要修改两处ip地址,分别位与SSL和SST结构参数中)。
运行odas:
# 查看odaslive的使用信息
bin/odaslive -h
# 执行
bin/odaslive -c config/odaslive/respeaker.cfg
若IP地址写对之后仍提示连接失败,请逐项检查如下内容:
- 在执行odaslive之前,确保目的IP的主机上已运行odas web,且在监听正确端口(默认9000、9001);
- 局域网内主机可以被其他设备发现:网络和Internet设置->更改连接属性->专用网络;
连接成功后,即可在ODAS web中看到声源定位和追踪的效果。