庭に来る鳥を、スマホのアプリでその場で見分ける。そんな趣味の延長を、監視カメラとローカルAIで一段押し広げたのが今回の記事だ。筆者は、外に付けていた3台の security camera を鳥の鳴き声検知に転用し、どの種類がいつ庭に来たのかをリアルタイムで追えるようにしたという。面白いのは、これは「すごい実験」で終わっていないことだ。家庭内の通知、Home Assistant 連携、友人への共有まで含めて、かなり実用品として回っている。
筆者はもともと、妻がスマホのアプリで鳥の声を聞き分けるのを見ていて、そこから「鳴き声だけで自動判別できないか」と考えたそうだ。調べてみると BirdNET と BirdNet-Go があり、しかも Docker で動かせる。そこで、家の外に置いてあった3台の security camera を使い、搭載マイクに入る音を BirdNet-Go に食わせる形で、鳥の識別システムを組んだ。
BirdNet-Go は24時間動き続け、音を常時監視する。鳥が鳴き始めた瞬間に解析して、種名を返す。録音ボタンを押して後から聞き返すタイプではなく、その場で判定する点が重要だ。対象は鳥だけでなく bat にも広がっていて、筆者の環境では frog まで検出したという。使っているのはローカルの AI 推論で、クラウドには送らない。API 呼び出しもなく、Raspberry Pi や自前サーバー上で動かせるため、月額費用がかからず、音声データも家の外に出ない。モデルは複数使え、記事では Google Perch v2 がモデルギャラリーに加わったことで、検出可能な種数が BirdNET 2.4 の約6,000種から14,795種に増えたと紹介している。
運用面もかなり細かい。特定の鳥だけ通知するルールを作れたり、species list に照合して「珍しい鳥が来たら知らせる」といった設定ができる。新しく来訪した種を novelty tracking で記録し、庭に現れた鳥の種類が増えていく様子を一覧で見られる。RTSP に対応した IP camera なら、そのストリーム URL を指定するだけでよく、筆者は既存の3台をそのまま使った。BirdWeather へのデータ共有、MQTT 経由の Home Assistant 連携、音声チャンネルごとのレベル表示もある。筆者は Home Assistant の通知を Discord の #birdnet チャンネルにも流しているそうだ。さらに、音声が speech を検出するとマイク入力が止まる仕様にも触れている。冗談めかして「fart を検出した」と書いているが、これは人が通り過ぎたときの音を拾っただけで、音の検知がかなり広く働いていることの例として挙げている。
この話の肝は、BirdNET-Go の賢さだけではないと思う。むしろ、すでにある防犯カメラを「夜も鳴き声を拾う音声センサー」として再定義した点が一番おもしろい。カメラは映像を見るための箱だと考えがちだが、RTSP とマイクがあるなら、音の常時監視装置にもなる。新しいハードを買わずに済むので、導入の心理的なハードルがかなり低い。防犯用途で設置した機材が、気づけば自然観察のインフラになっている。こういう横滑りの使い方は、ホームラボやスマートホームの文脈ではかなり強い。
一方で、これは鳥の識別を「当てる」こと自体より、継続的にログを残すことに価値がある仕組みだとも感じた。人間の耳だと聞き逃す種でも、システムなら24時間拾える。しかも筆者は、どの鳥が何時に来たかを毎日見ていて、12か月で418,726 detections、271 unique species、平均 confidence 60.9% というところまで育てている。単発のデモではなく、長期の観測になっているわけだ。数値の派手さよりも、「庭の生態系の変化が見える」ことのほうが本質だと思う。
BirdNet-Go が全部ローカルで完結するのは、趣味用途としてもかなり意味がある。クラウド依存のサービスは、月額課金や利用規約の変更、サービス終了の影響を受けやすい。鳥の観察みたいな日々の記録は、続けるほど価値が出るので、途中で基盤が消えるのは痛い。その点、Docker で自前運用できて、音声データも外に出ないのは安心感が大きい。家の中の出来事を扱う以上、プライバシーの線引きが自分でできるのも大きいだろう。
ただし、ローカルだからこそ、設置と調整はそれなりに手間がかかるはずだ。筆者も、どのカメラが風切り音を拾っているか、どれがエアコンの騒音を拾っているかを見ながら位置調整している。つまり「入れたら終わり」ではなく、音環境のチューニングが必要になる。ここは、スマートホームの面白さと面倒さが同時に出る部分だと思う。便利さの裏で、機械に何を学習させるかを人間が詰める必要がある。
筆者がこの仕組みを家族だけで閉じず、公開ドメイン経由で友人にも見せている点も印象に残った。鳥の識別は、実は「結果を見せる」だけで十分に楽しい。どの種が来たかが一覧になり、Discord に通知が飛び、Home Assistant の画面にも出るなら、専門家でなくても参加できる。しかも iOS 向けに BirdNET-Go Companion という無料アプリまであり、スマホから直接見られる。ここまでそろうと、これは単なる自作ツールではなく、観察体験の共有基盤になっている。
筆者自身は「birders ではない」と書いているが、その距離感もいい。熱心な愛好家でなくても、家の周りに鳥が多いなら十分楽しめるし、毎日の通知を眺めるだけでも習慣になる。技術としては local AI、MQTT、RTSP、Docker なのに、体験としては「今日もあの鳥が来た」という素朴な喜びに落ち着く。この落差が、この種の自作記事のいちばん強いところだと思う。高度な仕組みを作ったからすごい、ではなく、暮らしの風景が少し面白くなった、という着地になっている。
記事の中でいちばん笑えるのは、Home Assistant から「fart detected」の通知が来た話だろう。もちろんこれはブラックジョークとして書かれているが、音声認識が想像以上に広いものを拾うことの裏返しでもある。AI を生活空間に置くと、目的のものだけでなく、周辺の雑音や偶然の出来事まで拾ってしまう。その雑味を切り捨てるのではなく、むしろ「こういう変なこともある」と笑えるところに、このプロジェクトの空気がある。
この手の仕組みは、正確さだけで測ると少し物足りなく見えるかもしれない。だが、筆者が楽しんでいるのは精度の優劣ではなく、毎日続く観測の気持ちよさだと思う。鳥の名前を知るだけならスマホのアプリでもいい。でも、家のカメラと自宅サーバーが勝手に鳴き声を拾い、通知が飛び、履歴がたまっていくと、家そのものが小さな観測所になる。そこに面白さがある。道具を増やしたのに、やっていることは庭を眺めるのと同じくらい素朴、というのがいい。
参考: How I Turned My Security Cameras Into an Automatic Bird Identification System with BirdNet-Go