
前回、早朝の森から聞こえるあの声には、クーコールという名前があると書きました。斥候が仲間を呼ぶ声で、姿が見えないほど頻繁に鳴く。だから群れが庭に入る前に、この声を聞き分けられれば早期警戒になる。
そして重要なのは、その声がすでに毎朝、庭のマイクの前を通っているということでした。新しく設置するものは何もない。あとはこの音を機械に聞かせればいい。
そう書いて、前回は終わりました。
書いた本人が、そこで詰まりました。
機械に音を聞き分けさせるには、お手本がいります。
これがクーコールだ、これは違う、という例を大量に見せて、その境目を機械に覚えさせる。教師データと呼ばれるものです。クーコールを検知したいなら、まずクーコールの録音を用意しなければなりません。
手元を探しました。
一つも、ありませんでした。
何年も聞いてきた声です。仲間を呼んでいるのだろうと思いながら、毎年のように耳にしてきた。それなのに、録ろうと思ったことが一度もなかった。聞くことと録ることの間に、こんなに距離があるとは思っていませんでした。畑に立ってスマホを向ければ録れたはずの音を、私は一度も残していなかった。
これから録ればいい、とも考えました。けれど群れが来るのは月に一度あるかどうかです。斥候の声が録れるまで待っていたら、季節が一周してしまう。それまでモデルは一行も学習できない。
ネット上に、サンプル音声はないだろうか。
そう思いついたのが、最初の一歩でした。
ありました。それも、想像していたよりずっと良い形で。
Dryad という研究データの公開リポジトリに、二〇一五年に福島で録音されたニホンザルの音声データセットが上がっていました。
八個体、七千二百八十五ファイル。四十四・一キロヘルツ、十六ビット、モノラル。平均の長さは三百五十ミリ秒。しかも、一回の発声ごとに切り出し済みで、どの個体の声かというラベルまで付いている。
会ったこともない福島のサルが、七千回以上鳴いた記録が、そのまま教師データとして使える形で置いてありました。
しばらく、ファイル数の桁を数えていました。
私が畑で一頭を追いかけて録れる声が、一年でせいぜい数回だとして、七千二百八十五という数字にたどり着くには千年かかります。それを、どこかの研究者が何年もかけて集め、整理し、誰でも使える形で公開してくれていた。名前も知らない人の労力の上に、いきなり乗せてもらえる。研究データを公開するという文化が、こういう時に効くのだと、この時はじめて実感しました。
念のため、他の音源も当たりました。Macaulay Library、xeno-canto。鳥の声が中心ですが、霊長類の記録もあります。ただ、切り出し済みで個体ラベルまで付いた Dryad の使い勝手には及びませんでした。これを土台にすると決めました。
音は手に入りました。次は、この音をどうやって機械に聞かせるかです。
三つ、決めることがありました。
一つ目。ゼロから音を学ばせるのは無理があります。七千件あるとはいえ、世の中のあらゆる音を一から区別できるようになるには全く足りない。そこで YAMNet という、あらかじめ膨大な音で訓練された既製のモデルを土台にすることにしました。すでに音全般を聞き分ける耳を持っている相手に、サルの声という一種類だけを追加で教える。ゼロから育てるのではなく、経験者に専門を一つ足す、というやり方です。
二つ目が、この設計の肝でした。
一回の検知を、信じないことにしました。
前回、クーコールの数字の中に応答潜時二百五十ミリ秒というものがありました。二頭が鳴き交わす時の、片方が鳴いてからもう片方が応じるまでの間隔です。ここから言えるのは、クーコールは一回では終わらない、ということです。呼べば応える。続けて鳴く。
一方、風の音や、たまたま似た鳥の声は、一回きりで途切れます。
だから、一回鳴いただけでは通知しない。三十秒以内に二回以上、それらしい音が続いた時にだけ、はじめて通知を出す。こう決めました。一回の精度で勝負するのをやめて、続くかどうかで判定する。機械の耳が多少あやふやでも、サルの鳴き方の癖の方で誤検知を絞り込む。この発想が、後々まで私を助けることになります。
三つ目は、もっと手前の話でした。常に録っていなければ、そもそも何も検知できません。カメラの音声を go2rtc という仕組みでハブにまとめ、それを常時録音として Mac mini に常駐させる。朝も夜も、猿が来ようと来まいと、庭の音をひたすら録り続ける土台を作りました。
土台ができて、録音が回り始めて、それで私が始めた作業は、地味なものでした。
四月十三日、ネガティブサンプル収集スクリプトを追加しました。ネガティブサンプル、つまり「クーコールではない音」を集めるためのものです。
ここで、話の重心が反転します。
クーコールを機械に教えるには、クーコールの例だけでは足りません。それと同じくらい、いや、それよりずっと多く、「クーコールではない音」を教えなければならない。これがサルの声、これは違う、と境目を引くには、違う側の例が圧倒的に要ります。
だから私が録り貯めることになったのは、サルの声ではありませんでした。
風。木々の葉擦れ。名前も知らない鳥。雨。そして、この土地はちょうど羽田空港の着陸経路の下にあって、上空を飛行機がひっきりなしに通ります。その音。
猿が来ない、なんでもない一日の音を、延々と録り続ける。
派手なところは何もありません。モデルの精度が上がるわけでも、通知が飛ぶわけでもない。ただ、ハードディスクの中に「普段の音」が積み上がっていくだけです。この地味な蓄積が効いてくるのだろうと信じて、私は普段の庭の音を溜め続けました。
クリーンに切り出された福島のサルの声と、風も雨も飛行機も混ざったうちの庭の音。この二つを同じ土俵に乗せようとしている、ということに、この時の私はまだ気づいていませんでした。
次回、モデルは完成します。手元の検証では、ほぼ満点を出します。そして、待ちに待った本物のクーコールを前に、全く動きませんでした。