树莓派挂个麦克风:开源AI帮他认全了小区的鸟

一台十年前的单板电脑、一支带长线的USB麦克风,再加一套开源的鸟鸣识别软件,就能全天候记录家门口都有哪些鸟在叫。科技媒体How-To Geek的一位编辑最近就折腾了这么一套系统,并把过程中踩的坑完整记录了下来。

他的初衷很朴素:家里侧墙上装了几个雨燕巢箱,希望把曾经在附近筑巢的雨燕重新吸引回来。但雨燕来没来、什么时候来,靠肉眼盯着并不现实。于是他想到用声音来判断——让机器一直听着,把每一段鸟鸣自动比对成物种名。

第一个坑:麦克风里的电池没装

方案本身很简单:树莓派放在室内避免风吹雨淋,麦克风顺着一根20英尺(约6米)的线缆伸出窗外收音。

结果接上之后,他花了将近一个小时,怎么调都收不到任何声音。折腾到最后,他做了一件本该最先做的事——翻说明书。原来这支麦克风虽然随包装附了电池,但出厂时并没有装进去,电池被塞在包装盒的角落里。装上电池,设备立刻正常工作。

算力不够,就让树莓派只当”耳朵”

麦克风通了,新问题来了。离窗户最近的那台是树莓派3B+,只有1GB内存,而且上面还跑着另一套脚本,用一块旧iPad屏幕轮播照片和电影海报,内存已经被占去一部分。识别鸟鸣的模型跑在上面显然会很吃力。

他最终选择把任务拆开:树莓派只负责把麦克风采到的音频以RTSP流的形式推出去,真正的识别工作交给内存充裕的迷你主机来做。迷你主机放的位置离窗户太远,够不着花园;树莓派则正好守在窗边。两台机器各取所长,位置和算力的矛盾就解决了。

BirdNET-Pi 还是 BirdNET-Go

识别引擎方面,业界比较成熟的方案是BirdNET——这是康奈尔大学鸟类学实验室与德国开姆尼茨工业大学联合开发的研究工具。最初的版本可以依据叫声识别984种北美和欧洲鸟类,背后是一套用大量鸟类录音训练出来的神经网络。它的工作方式是先把音频转换成可视化的声谱图,再由分类器把这些声谱图与已知鸟鸣比对。

围绕BirdNET,社区衍生出了两个常见的家用版本:

  • BirdNET-Pi:长期以来是在家里7×24小时跑BirdNET最主流的方案,积累了数年的社区讨论和论坛帖子。但项目维护者已于2025年8月停止维护,后续由一些社区分支接手。
  • BirdNET-Go:用Go语言而非Python重写的替代品,目前仍在活跃开发中,界面更现代,缺点是社区规模较小,遇到冷门问题不容易找到答案。

权衡之后他选了BirdNET-Go——原版BirdNET-Pi已无人维护,而他对社区分支的长期可靠性心里没底。

安装过程比预想的顺利:借助一个辅助脚本,他只输入了一条命令,脚本就自动在迷你主机的Proxmox里新建容器并引导完成安装,五分钟不到就跑了起来。

第一个识别结果就”翻车”

打开界面、把音频源指向树莓派推出的音频流之后,不到一分钟就出了第一条识别记录。

只是这条记录相当离谱:系统报告麦克风捕捉到了斑胸田鸡的叫声——这种鸟在他所在的国家极为罕见。紧接着的第二条是茶色鸣角鸮,同样不是本地物种。

问题很快被找到:他没有在界面里设置地理位置。BirdNET会依据用户所在地筛选当地可能出现的鸟种,而他的位置默认停留在非洲西海岸外的某处海域。

改掉位置之后,识别结果明显靠谱了。误报仍然存在,但每条记录都可以回放对应的音频片段人工复核,把不准确的删掉,如果某个物种反复误报,还能直接把它整个屏蔽掉。

技术之外

这套系统跑起来之后,他表示自己了解到了不少此前不知道的本地鸟类,甚至开始能凭耳朵记住几种叫声。

在他看来,这个项目有意思的地方恰恰在于:它用上了识别算法和一堆设备,最终目的却只是听听鸟叫、弄清楚是谁在唱歌——用技术手段去认识身边的自然,本身就是件挺有意思的事。

对国内动手能力强的用户来说,这套方案的门槛并不高:一块树莓派(官方推荐用性能更好的树莓派5,价格便宜、扩展性强,很适合作为迷你主机的底座)、一支能防潮的收音麦克风,加上开源软件,就能搭出一台自己的”鸟类监听站”。唯一需要注意的是,BirdNET的物种库以北美和欧洲鸟类为主,在其他地区使用时,识别准确率和本地物种覆盖度都需要自行验证。

来源:How-To Geek《This open-source app and Raspberry Pi helped me identify every bird in my neighborhood》