熊本大学三田研究室で自分のテーマではなかったのだけど、趣味で作った鳥の鳴き声を使って種類を当てるプログラムの解説ページです。疑問、リクエストは掲示板へ
[2017/2/5] GitHubのリンクを追加した。また、記事も若干見直した。
鳥の鳴き声を基にして種類を当てるソフトウェアを作ってみたので公開してみました。
無保証ではありますが、そこん所を踏まえて頂ければなんら使用に関して関知いたしませんのでどうぞお使いください。
プログラムを下記よりダウンロードしてください。 なお、実行形式ファイルの実行には.NET Framework 4が必要です。 メインのc#コードの開発にはVisual Studioを使っています。
開発環境:Windows 7 Pro x86/x64リリース日 | プログラムパッケージ | 更新内容 | ||||||||||||||||||
2016/2/5 | GitHubへのリンク | バージョン管理が煩わしくなったので、GitHubにアップしました。 | ||||||||||||||||||
2014/1/4 | 今後の予定 | このプロジェクトを再開するとしたらプログラムの開発言語をほぼPythonに統一します。 | ||||||||||||||||||
2013/7/7 |
2013年3月時点でのソースコード/バイナリに少々手を加えた各種ツール群です。
教師データの作成から評価までをスムーズに、学部4年生でもやれる程度には一通りそろえました。
実行には、Ruby, Python, .NET Framework 4.0が必要です。
より詳しい情報は、取扱い説明書 for BRWS20130623をご参照ください。
著作権云々とやかく言いませんので、ご自由にお使いください。
|
|||||||||||||||||||
2012/7/17 |
BirdRecognizerWithSong_20120717.zip
開発環境:Microsoft Visual C# 2010 pro |
ソースコードとバイナリのセットです。
readme.txtに簡単な説明を記入しておきました。
3/28リリース版に比べ、かなり機能拡張を行っています。
ソースコードも読みやすくなったと思います。
より詳しい情報は、説明書 for BRWS20120717をご参照ください。
なお、この説明書へのダウンロードリンクにはDropBoxを利用しており、いつか消してしまうかもしれません。。。
おまけ:作業効率を1000倍くらい(当社?比)早めてくれるツール群もあります。 要望があればアップしようと思います。 |
||||||||||||||||||
2012/3/28 |
BirdRecognizerWithSong_20120328.zip
開発環境:Microsoft Visual C# 2010 pro |
ソースコードとバイナリのセットです。 クラス構造に関する説明書を同梱しました。 | ||||||||||||||||||
2012/3/16 |
birdRecognition_20120316.7z
開発環境:Microsoft Visual C# 2010 pro |
初アップ。
とりあえず、バイナリのみです。 万能ではないもののそこそこの性能が出る特徴ベクトル生成器を搭載しています。 デモ用に、YouTubeから取得した音源を基に学習したヤンバルクイナ用の識別器設定ファイルを同梱しています。 サンプルが少なかったのでウグイスをよくヤンバルクイナと間違えたりするおちゃめな奴ですがどうぞよろしく。 |
実際に動かしている様子をYouTubeにアップしてみました。
ご参考にどうぞ。
4章で述べた方法により特定の鳥とそうでないものを識別する2分類システムを構築できれば、そのシステムを組み合わせれば多種類の野鳥の識別システムが出来上がりです。 一般に、ニューラルネットワークやサポートベクタマシンでは一度に多数の答えを出すのは調整が難しく、システムの完成度を上げるのが困難です。 そこで、ターゲットなのかそうでないのかだけを判別する識別器の構築を目指した方が、構築もその後のメンテナンスも楽です。 特にメンテナンスに入ると、多種同時識別を行う一つの識別器と2分類識別器の集合システムとでは作業量に雲泥の差がでます。
2分類システムの場合、識別ターゲットに合わせた特徴ベクトルを選択できるのも強みでしょう。
個人的な経験上、識別性能の評価を行うためには1つのクラスにつき200個以上の教師データが必要です。 例えば、2012年度の熊本大学三田研究室における卒業研究では、キビタキを識別するために類似の鳥や雑音について各々200例のデータを集め、教師データの総数は1,000個を超えていました。 また、ある地域の雑音の強い音源に対しては2,000個の識別対象のデータと、4,000個程度の雑音データを用意してようやく識別性能が出たということも有りました。
機械学習は学習させたデータの範囲であれば識別に威力を発揮しますが、学習データを逸脱したデータに対しては識別能力を期待できません。 野外での録音では様々な音が入るため必然的に学習の範囲を逸脱します。 また、鳥は個体差や地域差が大きく外れ値を多く含みます。 従って教師データを作成する上では、大量の生の録音データが必要です。 市販されているCD音源のみでは不十分です。
故に、個人的にオープンサイエンスの流れに対する期待は大きいものがあります。 オープンサイエンスでは、公的資金を得て発表された論文の無償での公開と、得られた実験データの全面公開が求められます。 また、オープンサイエンスは市民参加型のプロジェクトという概念も含みます。 海外では既に成果を上げたプロジェクトがいくつかあります。 例えばeBirdやGALAXY ZOOなどです(ページ下部のリンク参照)。 これらのプロジェクトではデータの収集やデータの分類に市民サイエンティストの力を借りる仕組みを取り入れています。 日本でも鳥を愛する人口は多く、また最近(2017-02)では日本でもオープンサイエンスが話題になり始めました。 このオープンサイエンスの流れにより、研究で利用できる録音データリソースの充実に期待したいところです。
日本に渡って来る渡り鳥の初鳴き確認は容易に行えるものの、降雨と風の影響を強く受けるようです。 複数の県にまたがった観測を同時に行わないと自動化の意味がありません。 また、一晩で一鳴きしかしないような鳥の確認には機械的な識別が向くとはいえ、特徴データの作成が難しくなります。 そのようなターゲットに対しては、数年に渡る根気のいる観測が必要でしょう。
最近は音声による自動識別の分野で鳥に関する発表はほとんどなされていないようです。 代わりに、カエルやセミでいくつか発表がありました。 確かに、一晩中ほぼ同じ調子で鳴くカエルは識別データも作りやすいし、環境指標としても良いターゲットだろうなと思います。