ronibandini/reggaetonBeGone
Detects reggaeton genre with Machine Learning and sends packets to disable BT speakers (hopefully)
🎧 雷蓋頓拜拜 – 檢測雷蓋頓並禁用藍牙喇叭的邊緣AI裝置
功能說明 – 本裝置使用 Raspberry Pi 3 持續監聽環境聲音,透過 USB 麥克風採集音訊。Edge Impulse 音訊分類模型判斷當前音樂是否為雷蓋頓。當置信度超過使用者設定的門檻值(預設 95%)時,裝置將啟動一個藍牙「測試流程」,對預先設定的喇叭發動攻擊,從而有效切斷不需要的音樂。所有活動(置信度分數、觸發事件、錯誤)皆被記錄並顯示於小型 128×32 SSD1306 OLED 屏幕上。
設計初衷 – 作者為應對鄰居吵鬧的藍牙喇叭而打造此趣味性硬體解決方案。它展現了 TinyML 如何在廉價邊緣硬體上本地執行,並與 GPIO 按鈕、OLED 屏幕、藍牙等周邊裝置互動。
核心元件
- 硬體:Raspberry Pi 3、USB 麥克風(或音訊介面)、SSD1306 128×32 OLED、按鈕(GPIO 26)、可選藍牙適配器、3D 列印外殼。
- 軟體:Python 3、Edge Impulse Linux SDK(
AudioImpulseRunner)、PyAudio/PortAudio、Adafruit_SSD1306(用於顯示)、RPi.GPIO(用於按鈕)、BlueZ(用於藍牙)。 - 模型:在 16 kHz 單聲道 WAV 窗格(4 秒)上使用 MFE 特徵訓練的小型音訊分類模型。兩個標籤:
reggaeton與otros。模型以 Edge Impulse.eim檔案形式分發,並托管於 Hugging Face 上(僅用 6 首歌曲訓練,鼓勵使用者擴充資料集)。
運作原理
- 開機 → OLED 顯示目標喇叭與選定的藍牙方法。
- 等待物理按鈕按下。
- 使用
AudioImpulseRunner載入.eim模型。 - 持續採集音訊,執行推論,並顯示當前置信度。
- 若
reggaeton置信度 > 門檻值(或forceFire已設定),則記錄事件並針對設定的 MAC 位址執行選定的藍牙流程。
可設定項目(可編輯 reggaetonBeGone.py 檔案頂部附近)
selectedDeviceId– USB 音訊裝置索引。threshold– 觸發所需置信度(預設 0.95)。targetAddr– 藍牙喇叭 MAC 位址。method– 從多個實驗性藍牙攻擊腳本中選擇一種。packagesSize,threadsCount– 藍牙流程參數。forceFire– 用於測試的手動覆蓋開關。
典型應用場景 – 希望獲得一個自包含、本地運行的解決方案,用於檢測特定音樂類型並自動干擾附近藍牙喇叭的極客或創客。由於所有推論均在本地完成,無需雲端連線,保護隱私且延遲極低。
專案成熟度 – 版本 1.0(2024 年 2 月)已完全文件化,包含硬體接線圖、軟體安裝步驟與範例日誌。後續版本(2.0、3.0)增加了 64 位支援、本地藍牙掃描、減少誤報的「擊中系統」與更新模型,但這些版本透過工作坊連結分發,而非本倉儲。
資源
- 原始碼:
reggaetonBeGone.py(主程式)及資產(logo、字型、範例日誌)。 - 模型:Hugging Face 上的
reggaetonbgone-linux-armv7-v4.eim。 - 完整建置指南:Hackster.io 教程、Medium 文章及多個影片工作坊(Nerdearla、Ekoparty)。
- 授權:MIT。
總結 – 雷蓋頓拜拜 是 Raspberry Pi 上 TinyML 的一個具體範例,融合了音訊分類、簡易 UI 與藍牙控制,打造了一款獨特且目的明確的反雷蓋頓裝置。
相關
- Dispatch
- Dispatch
- 專案
- 專案
- Dispatch