カートカートにアイテムが追加されましたカートを見るご購入手続きへ買い物を続けるクイズコンテンツがスタートしました!是非チャレンジしてみてください!生きものクラフトイベント開催!AIによる鳥類の鳴き声識別アプリを自作してみた2024年7月26日ShareShareリンク共有を閉じるリンクをコピーこんにちは、地域環境計画の印部善弘です。専門は動植物調査で国や自治体の自然環境調査や、ネイチャーポジティブに取り組む企業の支援を担当しています。今回は、鳥類の鳴き声を識別するアプリを自作してみたのでご紹介したいと思います。はじめに弊社では、主に夜間に鳴くフクロウ類、サシバ、ヤイロチョウなどの希少鳥類、コウモリ類、カエル類を対象に、音声録音機器を設置し、専門の周波数解析ソフトを使って種の識別を行うことがあります。私の鳥類の識別能力は都市近郊にごく普通に生息している種を識別できるレベルなので、専門的な一般鳥類調査を担当することはないのですが、最近になって、「自然共生サイト」認定に係る鳥類の長期的なモニタリング手法の相談を受ける事がありました。鳥類は、繁殖場所が植物の群落構造と密接に関係する種もあり、また孤立した緑地にも訪れるため、昆虫類と並んで「自然共生サイト」のモニタリング指標種として適しているからでしょう。今回は、以上のようなご依頼に応えるため、手始めに鳥類の鳴き声を識別する簡単なAI(深層学習モデル)のアプリを自作したので、基本的な処理プロセスをご紹介したいと思います。森林など数か月に及ぶ録音を行う場合は、防水機能のある専用の録音機器(wildlifeacoustics社のSongMeterSM4、SongMeterMini2など)を使う場合が多いですが、2~3日の間だけ録音する場合は、タイマー機能のついたICレコーダを設置することもあります。リニアPCMレコーダー」を使っています。ICレコーダを選ぶ際の注意点ですが、プログラミングによる解析では、モノラルで録音した非圧縮形式のWAVファイル(.WAV)を扱うことが多いので、録音形式がこのタイプに対応しているかを確認してください。市販のICレコーダは、ステレオ形式のMP3ファイルで保存するものが多いので、このようなICレコーダを使用した場合は、別途、「ステレオ→モノラル変換」、「MP3→WAV変換」を「前処理」として行う必要があります。リニアPCMレコーダーSongMeterMini2次に、録音機器の設定と、実際に録音してきたファイルをAI(深層学習モデル)で識別する際の前処理について概略を説明します。事例として、北摂山系で6月初旬にSongMeterMini2を設置し、鳴き声を録音してきたファイルを使います。北摂山系は神戸から大阪、京都に至る山々で、関西圏では都市部から近く、森林性鳥類の主な生息場所です。録音時の設定は以下のとおりです。「サンプルリング周波数」は高いほど、高い周波数の音を録音できます。鳥の鳴き声は低い声で500Hz前後、高い音で9,000Hzくらいなので、ナイキスト周波数の関係から、これらの音声を記録するには「高い音」の2倍以上に設定すれば大丈夫です。一般的なICレコーダは44,100Hzが標準設定なので鳥の鳴き声を記録するには十分ですが、長期間録音する場合はデータの容量や電池消耗の心配もあるので、24,000Hzくらいの設定で行う場合もあります。いずれにせよ、サンプリング周波数は、後で紹介するスペクトログラム(声紋)への変換に影響するので、ひとつのプロジェクト内では、同一のサンプリング周波数に統一しておく方が望ましいです。音声ファイルの分割アプリを作成する記録した音声ファイルは、ステップ1:種の特徴がでる適当な長さに分割した後、ステップ2:「短時間フーリエ変換(STFT)」を行い、縦軸が周波数、横軸が時間、色の濃さが音圧をあらわすスペクトログラム(声紋)に変換して視覚化します。このため、まずは音声ファイルを効率よく分割するプログラムを作成する必要があります。分割する時間の長さは「さえずり」が複雑で長い鳴禽類(スズメ亜目)では長く設定しないと声紋の特徴がわかりませんが、タカやフクロウような非鳴禽類ですと、分割時間が短くても声紋の特徴が出る場合があるので、対象種によって臨機応変に変更する必要があります。今回は特定の鳥類に絞った解析はせず、多くの鳥類の鳴き声をチェックしたいので、ひとまず5秒間隔で分割してみようと思います。分割する際の注意点としては、ちょうど分割の境い目が「さえずり」の途中にあると、変換後の声紋も分割されてしまいますので、安全をみて3秒間の重複時間を設けたいと思います。図1は音声を分割するために自作したWEBアプリ画面です。理論的には、1時間(3600秒)の録音ファイルは、5秒間隔で分割すれば720個のファイルが出力されるはずですが、今回は59分57秒(3597秒)を5秒間隔で3秒間重複させながら分割し、最後に余ってしまった端数の録音時間は捨てることにしたので、1797個の音声ファイルが出来上がりました。この作業を自動分割機能のないフリーソフトで行うと気が遠くなりそうですが、自分でプログラムを作成すると、分割に要する時間は10秒足らずで終了します。短時間フーリエ変換(STFT)理系の大学を出ていると教養の数学で「フーリエ変換」を習うと思います。一生使うことはないだろうと思っていましたが、人生の分水嶺を過ぎたタイミングで使うことになりました。短時間フーリエ変換は、短い一定期間の波形データを少しずつ切り出し、周波数変換を繰り返すことで、最終的に縦軸が周波数、横軸が時間、色の濃さが音圧のグラフするために必要な計算です。出力された画像がスペクトログラム(声紋)です。実際の計算はPythonにいくつかライブラリが用意されているので、短時間フーリエ変換に必要なパラメータ(窓関数の種類、フレーム長、フレームシフト量など)を設定し、実行するだけで声紋に変換できます。スペクトログラム(声紋)への変換!北摂山系の1797個の音声ファイルを声紋に変換してみたいと思います。図2は短時間フーリエ変換の自作WEBアプリ画面です。WEBアプリにすると処理に3分程度かかりますが、プログラムを直接実行すると処理時間は1分程度でした。GUIの選択と設計は悩ましいところです。図3が実行後のフォルダ内です。1797枚の全ての画像を一度に表示できませんが、画面を番号順に見ていくと、慣れた人なら北摂の山々の早朝のコーラスが聴こえてくると思います。(スマートフォンなどでご覧の方は、お手数ですが指で拡大してご覧くださいませ。スペクトログラム変換後のフォルダの中身(一部分のみ表示)夜明けとともにメジロの大合唱が始まり、そこにヒヨドリの鳴き声が混ざっています。すると、近くの藪の中からヤブサメの鳴き声が聞こえてきます(表示されているのはここまで)。メジロの大合唱が落ち着いた頃にヤマガラがさえずりはじめ、時折、コゲラの「ギー」という鳴き声が聴こえてきます。明るくなってからはウグイスが鳴き始めます。声紋と比べながら鳴き声を聞いてみる声紋と見比べながら実際の鳴き声を聞いてみましょう。音量にご注意ください。メジロヒヨドリヤブサメヤマガラコゲラウグイスAI(深層学習モデル)による音声の自動識別についてさて、鳴き声を声紋の画像に変換することができれば、あとはAI(深層学習モデル)を使って種の識別アプリを作成するだけです。深層学習モデルによる鳴き声の識別は、モデルに適した種とそうでない種がありますので、現時点では全ての種を識別するのは難しいかも知れません。鳴き声に特徴のある指標種の場合、強力なモニタリングツールになります。図4は私が作成したフクロウの音声識別のWEBアプリです。AIの部分はYOLOの画像分類モデル(CLassification)を使用しており、これまでご紹介した「ステレオ→モノラル変換」、「音声ファイルの分割」のアプリも一つにまとめています。フクロウの音声識別のWEBアプリおわりにいかがでしたでしょうか。鳥類の鳴き声を声紋に変換する作業を行ってみると、それぞれの鳥類で鳴き声の周波数が異なり、音の世界でも種の棲み分けが巧妙になされているのが分かります。今後、野生動物の声紋のパターンと行動を詳しく観察することで、我々の知らない世界のコミュニケーションが分かるようになるとおもしろいですね。野生動物の鳴き声による識別については、種によって制約はあるものの、委託業務としてもお引き受けしております。ご興味のある方はお問合せください。Store選択結果を選ぶと、ページが全面的に更新されます。新しいウィンドウで開きます。