开发者音箱干扰邻居音频AI(音箱开发者音频干扰邻居)「音响开发」

编译 | 郑丽媛出品 | CSDN(ID:CSDNnews)试问:如果你一墙之隔的邻居总是在每天早上 9 点用蓝牙音箱以最大音量播放雷鬼音乐(Reggaeton),你会怎么办?A. 去隔壁敲门,礼貌地请他们降低音量
B. 联系物业,要求物业进行沟通处理
开发者 Roni Bandini 就面对着这样的处境,而他的选择是 C:利用 Raspberry Pi(树莓派)和 AI 技术,做一个能更有创意地处理这种情况的 AI 设备——当这台 Raspberry Pi 检测到有雷鬼音乐时,它就会干扰附近的蓝牙音箱,使音频失真以此来屏蔽邻居的“嘈杂音乐”
初步设计根据 Roni Bandini 介绍,他将这款设备取名为 Reggaeton Be Gone(雷鬼消失)
它主要负责监控房间内的音频,通过机器学习识别雷鬼音乐,一旦识别就向蓝牙音箱触发通信请求和数据包
简而言之,Reggaeton Be Gone 的设计目标是:禁用播放雷鬼音乐的音箱,或者至少要把声音扰乱到邻居不得不关闭音箱的程度
有了初步想法后,Roni Bandini 画了一张设计草图:其中,有关 Reggaeton Be Gone 的硬件组成部分如下:树莓派 3B+:树莓派 3B+ 是树莓派 3 系列中的最新产品,配备 64 位四核处理器,运行频率为 1.4GHz,具有双频 2.4GHz 和 5GHz 无线局域网、蓝牙 4.2/BLE、更快的以太网和通过单独的 PoE HAT 实现 PoE 功能
DFRobot 小型 OLED 屏幕:屏幕尺寸为 0.91 英寸的 OLED 显示屏,分辨率为 128x32 像素;采用 IIC 的接口,工作电压为 3.3-5V,全屏的最大功耗为 25Ma 左右
DFRobot Gravity 数字大按钮模块(黄色):兼容 5/3.3V 电压,适应 Arduino 新一代主控 DUE
除此之外,还有 USB 麦克风或带麦克风的声卡(用来观察音频,Roni Bandini 用的是 Behringer Xenyx302)、microSD 卡、5v 3A 电源、母头连接母头的跨接线和 3D 打印的外壳正面(Roni Bandini 用的是一块从破损音频板上拆下的金属外壳)
另外,Roni Bandini 还补充道:如果你想用自己的 BT 进行测试,还可以买一个便宜的蓝牙音频接收器电路板
具体如何实现的?电路图硬件准备到位后,Roni Bandini 首先按照电路图连接了各部件:(1)按钮连接到 GND 和 GPIO 26(2)OLED 屏幕连接到 VCC、GND、SDA GPIO 2 和 SDL GPIO 3(3)将声卡或麦克风连接到 USB软件设置紧接着,他安装了树莓派操作系统(https://www.raspberrypi.com/software/),执行 sudo raspi-config,并启用 SSH 和 i2c
然后进行一些必要设置:pip install RPi.GPIOpip3 install Adafruit_GPIOsudo apt install gitpip install picamerasudo apt install python3-opencvsudo apt-get install libatlas-base-dev libportaudio0 libportaudio2 libportaudiocpp0 portaudio19-devgit clone https://github.com/edgeimpulse/linux-sdk-pythonsudo python3 -m pip install edge_impulse_linux -i https://pypi.python.org/simplesudo python3 -m pip install numpysudo python3 -m pip install pyaudio由 i2cdetect -y 1 检查是否检测到 OLED 屏幕,还应运行 alsamixer 并按 F6 键选择电路板,按 F4 键更改输入音量
机器学习在机器学习(ML)方面,Roni Bandini 对神经网络进行如下设置:GTZAN 是非常经典的音乐数据集,但其中没有雷鬼音乐类别的 AI 分类数据集和模型,于是 Roni Bandini 决定自己训练模型:“Reggaeton 的经典切分节奏模式可能很吵,但这种特点也非常有利于机器学习
”为此,Roni Bandini 下载了几首雷鬼音乐和其他类型的歌曲,并将其导出为 16khz wav 格式,上传到 Edge Impulse 平台(一个用户友好的开发平台,用于在边缘设备上进行机器学习,涵盖 TinyML 学习路径所需的从数据收集到模型部署的整个流程 )
然后,他为 Linux ARM 进行了部署,导出 eim 文件并传入树莓派,将权限改为 744
Roni Bandini 表示,不久后他会发布该模型,感兴趣的人可以耐心等待
Python 代码Python 代码将采集音频样本,并将其发送至 ML 模型进行推理
如果识别到雷鬼音乐的得分高于阈值,就会触发两种 BT 连接方法中的一种
其中一种使用 rfconn,另一种使用 l2ping
日志文件会被保存,而设备运行情况将显示在 OLED 屏幕上
设置配置如下,此外 Roni Bandini 提醒:“你最好通过反复试验来确定最佳方法、封装尺寸和线数
如果能用带天线的外置 BT 板,那最好不过了
myPath="" # reggaeton be gone folderselectedDeviceId = 1 # id of the USB mic of boardmethod = 1 # 1 to 3 # BT attack methodtargetAddr = "" # mac address of the BT speakerpackagesSize = 0 # packet size, try around 600-1000threadsCount = 0 # how manythreshold = 0.95 # limit to consider that the song is reggaetonmyDelay = 0.1 # delay between connectionsforceFire = 1 # test purposesmodel = ".eim" # model file name如何获取 BT 扬声器的 MAC 地址针对这个问题,Roni Bandini 给出了两种方法:(1)如果是用自己的 BT 扬声器进行测试,可连接智能手机并从连接信息中查看 MAC;(2)如果不是,可使用 bluetoothctl 命令,根据信息、rssi 功率等信息猜测目标 MAC 地址
sudo bluetoothctlscan on通过第二种方法,开发者将获得 2 列 MAC 地址,有时还有扬声器标识符,如 POCKETTUNE、AUVIO 等,然后可执行下面命令,通过 RSSI 信息确定 MAC 地址:sudo btmon |grep RSSI & sudo hcitool scanand get RSSI与此同时,名为 log.txt 的文件将记录所有设备操作
最终成果至此,这款名为 Reggaeton Be Gone 的设备就大致完成了
Roni Bandini 录制了一段该设备的最终表现:能准确识别播放的歌曲是否属于雷鬼音乐,在确定是雷鬼音乐后,成功干扰了蓝牙音箱的音频
视频加载中...不过,Roni Bandini 也强调 Reggaeton Be Gone 只是一个实验项目,可基于教学目的用作参考,效仿之前也请“仔细查阅当地法律法规”
此外,该设备起作用的前提是离扬声器足够近,且并非所有的蓝牙扬声器都容易受到攻击
原文地址:https://www.hackster.io/roni-bandini/reggaeton-be-gone-e5b6e2DF创客社区地址:https://mc.dfrobot.com.cn/项目作者:Roni Bandini文章首发于:CSDN转载请注明来源信息
开发者音箱干扰邻居音频AI(音箱开发者音频干扰邻居)
(图片来源网络,侵删)

联系我们

在线咨询:点击这里给我发消息