" 極客式 " 解決鄰裏矛盾。
試問:如果你一牆之隔的鄰居總是在每天早上 9 點用藍牙音箱以最大音量播放雷鬼音樂(Reggaeton),你會怎麽辦?
A. 去隔壁敲門,禮貌地請他們降低音量。
B. 聯系物業,要求物業進行溝通處理。
開發者 Roni Bandin 就面對着這樣的處境,而他的選擇是 C:利用 Raspberry Pi(樹莓派)和 AI 技術,做一個能更有創意地處理這種情況的 AI 設備——當這台 Raspberry Pi 檢測到有雷鬼音樂時,它就會幹擾附近的藍牙音箱,使音頻失真以此來屏蔽鄰居的 " 嘈雜音樂 "。
初步設計
根據 Roni Bandin 介紹,他将這款設備取名爲 Reggaeton Be Gone(雷鬼消失)。它主要負責監控房間内的音頻,通過機器學習識别雷鬼音樂,一旦識别就向藍牙音箱觸發通信請求和數據包。
簡而言之,Reggaeton Be Gone 的設計目标是:禁用播放雷鬼音樂的音箱,或者至少要把聲音擾亂到鄰居不得不關閉音箱的程度。有了初步想法後,Roni Bandin 畫了一張設計草圖:
其中,有關 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 Bandin 用的是 Behringer Xenyx302)、microSD 卡、5v 3A 電源、母頭連接母頭的跨接線和 3D 打印的外殼正面(Roni Bandin 用的是一塊從破損音頻闆上拆下的金屬外殼)。另外,Roni Bandin 還補充道:如果你想用自己的 BT 進行測試,還可以買一個便宜的藍牙音頻接收器電路闆。
具體如何實現的?電路圖
硬件準備到位後,Roni Bandin 首先按照電路圖連接了各部件:
(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。然後進行一些必要設置:
由 i2cdetect -y 1 檢查是否檢測到 Oled 屏幕,還應運行 alsamixer 并按 F6 鍵選擇電路闆,按 F4 鍵更改輸入音量。
機器學習
在機器學習(ML)方面,Roni Bandin 對神經網絡進行如下設置:
GTZAN 是非常經典的音樂數據集,但其中沒有雷鬼音樂類别的 AI 分類數據集和模型,于是 Roni Bandin 決定自己訓練模型:"Reggaeton 的經典切分節奏模式可能很吵,但這種特點也非常有利于機器學習。"
爲此,Roni Bandin 下載了幾首雷鬼音樂和其他類型的歌曲,并将其導出爲 16khz wav 格式,上傳到 Edge Impulse 平台(一個用戶友好的開發平台,用于在邊緣設備上進行機器學習,涵蓋 TinyML 學習路徑所需的從數據收集到模型部署的整個流程 )。然後,他爲 Linux ARM 進行了部署,導出 eim 文件并傳入樹莓派,将權限改爲 744。Roni Bandin 表示,不久後他會發布該模型,感興趣的人可以耐心等待。
Python 代碼
Python 代碼将采集音頻樣本,并将其發送至 ML 模型進行推理。如果識别到雷鬼音樂的得分高于阈值,就會觸發兩種 BT 連接方法中的一種。其中一種使用 rfconn,另一種使用 l2ping。日志文件會被保存,而設備運行情況将顯示在 OLED 屏幕上。
設置配置如下,此外 Roni Bandin 提醒:" 你最好通過反複試驗來确定最佳方法、封裝尺寸和線數。如果能用帶天線的外置 BT 闆,那最好不過了。"
如何獲取 BT 揚聲器的 MAC 地址
針對這個問題,Roni Bandin 給出了兩種方法:
(1)如果是用自己的 BT 揚聲器進行測試,可連接智能手機并從連接信息中查看 MAC;
(2)如果不是,可使用 bluetoothctl 命令,根據信息、rssi 功率等信息猜測目标 MAC 地址。
通過第二種方法,開發者将獲得 2 列 MAC 地址,有時還有揚聲器标識符,如 POCKETTUNE、AUVIO 等,然後可執行下面命令,通過 RSSI 信息确定 MAC 地址:
與此同時,名爲 log.txt 的文件将記錄所有設備操作。
最終成果
至此,這款名爲 Reggaeton Be Gone 的設備就大緻完成了。Roni Bandin 錄制了一段該設備的最終表現:能準确識别播放的歌曲是否屬于雷鬼音樂,在确定是雷鬼音樂後,成功幹擾了藍牙音箱的音頻。
不過,Roni Bandin 也強調 Reggaeton Be Gone 隻是一個實驗項目,可基于教學目的用作參考,效仿之前也請 " 仔細查閱當地法律法規 "。此外,該設備起作用的前提是離揚聲器足夠近,且并非所有的藍牙揚聲器都容易受到攻擊。