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 和蓝牙控制,打造了一款独特且目的明确的反雷盖顿设备。

相关