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