野鳥鳴き声サーチは、録音した音声から野鳥の種類を判定するアプリです。内部でAIモデルを使っていますが、既成のモデルをそのまま使うのではなく、iOSアプリ向けにカスタマイズしています。その内容をまとめます。
目次
ベースモデル:BirdNET
ベースに使ったのは BirdNET V3.0-preview3 です。コーネル大学(K. Lisa Yang Center for Conservation Bioacoustics)が開発・公開している野鳥の鳴き声識別モデルです。このバージョンは CC BY-SA 4.0 ライセンスで提供されており、帰属表示と同ライセンスでの派生物公開を条件に商用利用が認められています。ただし利用規約(Section 5)により、密猟・違法な野生動物取引を目的とした利用および軍事目的での利用は禁止されており、この禁止事項はライセンスの許諾より優先されます。なお、従来の V2.x 系(BirdNET-Analyzer)は CC BY-NC-SA 4.0(非商用限定)であるため、バージョンによってライセンスが異なる点に注意が必要です。また、V3.0-preview3 は開発者向けプレビュー版(experimental)という位置づけです。
世界中の野鳥に対応した高精度なモデルですが、そのままiOSアプリに組み込むにはサイズが大きく、クラス数も多すぎるため、日本向けにカスタマイズすることにしました。
日本種に特化
BirdNET V3.0はグローバルな鳥類データベースをカバーしていますが、日本で使うアプリに世界中の種が入っていても精度・効率の面で無駄があります。
日本で観察できる種に絞り込み、284クラスに限定しました。これにより不要なクラスへの誤判定を減らし、日本国内での実用精度を高めています。
こだわりとして、野鳥探し中に耳に入るカエルや蝉などの鳴き声も識別できるようにしました。野鳥を探しているときに「これは何の声?」と思うのは鳥だけとは限らないので、自然な流れで使えるよう対応しています。
FP16化による軽量化
モデルの数値精度をFP32からFP16(半精度浮動小数点数)に変換しました。精度への影響を抑えつつ、モデルサイズをおよそ半分に圧縮できます。
結果として最終的なモデルサイズは 約50MB に収まりました。iOSアプリに同梱しても現実的なサイズです。
オフライン動作にこだわった理由
モデルをアプリに内蔵することで、登山中・山中など電波のない環境でも動作します。野鳥観察の現場はネットワークが不安定なことが多く、オフラインで使えることは実用上の必須条件でした。
録音した音声をその場で判定できるほか、録音を保存して後から調べ直すこともできます。
苦労した点
鳴き声の識別は見た目の識別と違い、背景音・風・複数の鳥が同時に鳴いている状況など、ノイズの多い条件での精度が課題になります。単純にモデルを組み込むだけでは実用に耐える精度が出ず、チューニングに時間がかかりました。
それなりに動くようになったときの手応えはひとしおで、ゲームアプリと比べると地味な作業が多い分、完成したときの達成感も大きかったです。AIモデルを組み込んだアプリ開発に興味のある方の参考になれば幸いです。
アプリの開発経緯やこだわりについては開発秘話の記事にまとめています。