嫌邻居放歌太吵,开发者偷用「树莓派+AI」黑进音箱:干扰音频,使其不得不关...

cc6cbed358a4ef36283d57a735a858e1.gif

编译 | 郑丽媛

出品 | CSDN(ID:CSDNnews)

试问:如果你一墙之隔的邻居总是在每天早上 9 点用蓝牙音箱以最大音量播放雷鬼音乐(Reggaeton),你会怎么办?

A. 去隔壁敲门,礼貌地请他们降低音量。

B. 联系物业,要求物业进行沟通处理。

开发者 Roni Bandin 就面对着这样的处境,而他的选择是 C:利用 Raspberry Pi(树莓派)和 AI 技术,做一个能更有创意地处理这种情况的 AI 设备——当这台 Raspberry Pi 检测到有雷鬼音乐时,它就会干扰附近的蓝牙音箱,使音频失真以此来屏蔽邻居的“嘈杂音乐”。

1f5e10ee5d1c1b489772d909989bbd54.png

5de652e3d8ac40f529dc72150074bf60.png

初步设计

根据 Roni Bandin 介绍,他将这款设备取名为 Reggaeton Be Gone(雷鬼消失)。它主要负责监控房间内的音频,通过机器学习识别雷鬼音乐,一旦识别就向蓝牙音箱触发通信请求和数据包。

简而言之,Reggaeton Be Gone 的设计目标是:禁用播放雷鬼音乐的音箱,或者至少要把声音扰乱到邻居不得不关闭音箱的程度。有了初步想法后,Roni Bandin 画了一张设计草图:

8eda5e3704386d02eb6f592f9f4bb815.png

其中,有关 Reggaeton Be Gone 的硬件组成部分如下:

  • 树莓派 3B+:树莓派 3B+ 是树莓派 3 系列中的最新产品,配备 64 位四核处理器,运行频率为 1.4GHz,具有双频 2.4GHz 和 5GHz 无线局域网、蓝牙 4.2/BLE、更快的以太网和通过单独的 PoE HAT 实现 PoE 功能。

31ad427c4a12f272fd5fde614e2600be.jpeg

  • DFRobot 小型 OLED 屏幕:屏幕尺寸为 0.91 英寸的 OLED 显示屏,分辨率为 128x32 像素;采用 IIC 的接口,工作电压为 3.3-5V,全屏的最大功耗为 25Ma 左右。

c8b1b5788aaa97afad35be31d7b99037.png

  • DFRobot Gravity 数字大按钮模块(黄色):兼容 5/3.3V 电压,适应 Arduino 新一代主控 DUE。

a73ebfdc6b22eed4d1682b207ffc3f17.png

除此之外,还有 USB 麦克风或带麦克风的声卡(用来观察音频,Roni Bandin 用的是 Behringer Xenyx302)、microSD 卡、5v 3A 电源、母头连接母头的跨接线和 3D 打印的外壳正面(Roni Bandin 用的是一块从破损音频板上拆下的金属外壳)。另外,Roni Bandin 还补充道:如果你想用自己的 BT 进行测试,还可以买一个便宜的蓝牙音频接收器电路板。

4c9d7729ac8eec3f2d319b56ec960416.png

具体如何实现的?

电路图

硬件准备到位后,Roni Bandin 首先按照电路图连接了各部件:

(1)按钮连接到 GND 和 GPIO 26

(2)OLED 屏幕连接到 VCC、GND、SDA GPIO 2 和 SDL GPIO 3

(3)将声卡或麦克风连接到 USB 

930fbd026e6d0620b67c3306778560d6.png

软件设置

紧接着,他安装了树莓派操作系统(https://www.raspberrypi.com/software/),执行 sudo raspi-config,并启用 SSH 和 i2c。然后进行一些必要设置:

pip install RPi.GPIO
pip3 install Adafruit_GPIO
sudo apt install git
pip install picamera
sudo apt install python3-opencv
sudo apt-get install libatlas-base-dev libportaudio0 libportaudio2 libportaudiocpp0 portaudio19-dev
git clone https://github.com/edgeimpulse/linux-sdk-python
sudo python3 -m pip install edge_impulse_linux -i https://pypi.python.org/simple
sudo python3 -m pip install numpy
sudo python3 -m pip install pyaudio

由 i2cdetect -y 1 检查是否检测到 Oled 屏幕,还应运行 alsamixer 并按 F6 键选择电路板,按 F4 键更改输入音量。

7ad49f7ceffca21dda782225ddde1ce1.png

机器学习

在机器学习(ML)方面,Roni Bandin 对神经网络进行如下设置:

fd90b8cfa2a2645b007a2c561ea91455.png

GTZAN 是非常经典的音乐数据集,但其中没有雷鬼音乐类别的 AI 分类数据集和模型,于是 Roni Bandin 决定自己训练模型:“Reggaeton 的经典切分节奏模式可能很吵,但这种特点也非常有利于机器学习。”

362e3abdfee985451867a9ce7af3ed4b.png

为此,Roni Bandin 下载了几首雷鬼音乐和其他类型的歌曲,并将其导出为 16khz wav 格式,上传到 Edge Impulse 平台(一个用户友好的开发平台,用于在边缘设备上进行机器学习,涵盖 TinyML 学习路径所需的从数据收集到模型部署的整个流程 )。然后,他为 Linux ARM 进行了部署,导出 eim 文件并传入树莓派,将权限改为 744。Roni Bandin 表示,不久后他会发布该模型,感兴趣的人可以耐心等待。

Python 代码

Python 代码将采集音频样本,并将其发送至 ML 模型进行推理。如果识别到雷鬼音乐的得分高于阈值,就会触发两种 BT 连接方法中的一种。其中一种使用 rfconn,另一种使用 l2ping。日志文件会被保存,而设备运行情况将显示在 OLED 屏幕上。

设置配置如下,此外 Roni Bandin 提醒:“你最好通过反复试验来确定最佳方法、封装尺寸和线数。如果能用带天线的外置 BT 板,那最好不过了。”

myPath="" # reggaeton be gone folder
selectedDeviceId = 1 # id of the USB mic of board
method = 1 # 1 to 3 # BT attack method
targetAddr = "" # mac address of the BT speaker
packagesSize = 0 # packet size, try around 600-1000
threadsCount = 0 # how many
threshold = 0.95 # limit to consider that the song is reggaeton
myDelay = 0.1 # delay between connections
forceFire = 1 # test purposes
model = ".eim" # model file name

如何获取 BT 扬声器的 MAC 地址

针对这个问题,Roni Bandin 给出了两种方法:

(1)如果是用自己的 BT 扬声器进行测试,可连接智能手机并从连接信息中查看 MAC;

(2)如果不是,可使用 bluetoothctl 命令,根据信息、rssi 功率等信息猜测目标 MAC 地址。

sudo  bluetoothctl
scan on

通过第二种方法,开发者将获得 2 列 MAC 地址,有时还有扬声器标识符,如 POCKETTUNE、AUVIO 等,然后可执行下面命令,通过 RSSI 信息确定 MAC 地址:

sudo btmon |grep RSSI & sudo hcitool scan
and get RSSI

f28b4da76ce8c0addab539d7028a34dc.png

与此同时,名为 log.txt 的文件将记录所有设备操作。

862eec4be2a797f949a4440953c94fe1.png

e311758b0c360b06cf0a61f709fb3ae0.png

最终成果

至此,这款名为 Reggaeton Be Gone 的设备就大致完成了。Roni Bandin 录制了一段该设备的最终表现:能准确识别播放的歌曲是否属于雷鬼音乐,在确定是雷鬼音乐后,成功干扰了蓝牙音箱的音频。

不过,Roni Bandin 也强调 Reggaeton Be Gone 只是一个实验项目,可基于教学目的用作参考,效仿之前也请“仔细查阅当地法律法规”。此外,该设备起作用的前提是离扬声器足够近,且并非所有的蓝牙扬声器都容易受到攻击。

参考链接:

https://www.hackster.io/roni-bandini/reggaeton-be-gone-e5b6e2

460c22d5f565204f6c585aebb96a47f4.png

4 月 25 - 26 日,由 CSDN 和高端 IT 咨询和教育平台 Boolan 联合主办的「全球机器学习技术大会」将在上海环球港凯悦酒店举行,特邀近 50 位技术领袖和行业应用专家,与 1000+ 来自电商、金融、汽车、智能制造、通信、工业互联网、医疗、教育等众多行业的精英参会听众,共同探讨人工智能领域的前沿发展和行业最佳实践。

21e889840731f62d338396647a37bf32.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值