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 特徵訓練的小型音訊分類模型。兩個標籤:reggaetonotros。模型以 Edge Impulse .eim 檔案形式分發,並托管於 Hugging Face 上(僅用 6 首歌曲訓練,鼓勵使用者擴充資料集)。

運作原理

  1. 開機 → OLED 顯示目標喇叭與選定的藍牙方法。
  2. 等待物理按鈕按下。
  3. 使用 AudioImpulseRunner 載入 .eim 模型。
  4. 持續採集音訊,執行推論,並顯示當前置信度。
  5. 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 與藍牙控制,打造了一款獨特且目的明確的反雷蓋頓裝置。

相關