「叩いた音」でAIは何がわかるのか? 音響×機械学習の開発裏話

ニュース・ブログ

「叩いた音」でAIは何がわかるのか? 音響×機械学習の開発裏話

blog

「叩いた音」でAIは何がわかるのか? 音響×機械学習の開発裏話

壁を叩いて「ここ空洞だな」とわかる、あの感覚。コンコンとポコポコの違い。人間なら誰でもなんとなく判断できるこの感覚を、AIに再現させてみたプロジェクトの話です。守秘義務を含む内容のため、一部ぼかしてお伝えします。

プロジェクトのきっかけ

お客様からのご相談はシンプルなものでした。「叩いた音を録音しているんだけど、これをAIに分析させて、中の状態を数値化できないか」と。

現場ではベテランの専門家が音を聞いて判断しています。ただ、それだと属人的で、人によって判断にブレが出る。録音データは溜まってきている。これを活かせないか——というわけです。

世の中にある類似製品は「この材質でこの周波数だったら異常」のようなルールテーブル方式がほとんどで、対象が変わるたびに人間がルールを書き足す必要があります。機械学習なら、データからパターンを自動的に抽出できるはず。取り組む価値のあるテーマだと感じました。

開発の進め方

流れ自体はシンプルです。録音された音声ファイルから「特徴量」と呼ばれる数値を取り出し、それを機械学習モデルに学習させます。たとえば「音の高さの分布」「音がどれくらい早く消えるか」「音量の変化パターン」といったもの。人間が耳で感じ取っている情報を、数値に変換するイメージです。

問題は、どの数値を取り出すか。ここがこのプロジェクトのすべてでした。

定番の手法ではうまくいかなかった

まずは音声AIでよく使われる定番の特徴量(MFCCなど)をひと通り試しました。音声認識や音楽分析で実績のある手法です。30種類ほどの数値を抽出して、モデルに学習させてみました。

結果は、相関ほぼゼロ。まったく精度が出ません。

冷静に考えると当然で、「人の声を聞き分ける」のと「叩いた音から中身を推定する」のでは、音の中で注目すべきポイントがまるで違います。定番の手法をそのまま適用しても通用しない——ということが早い段階でわかりました。

物理の知識を取り入れた特徴量設計

ここから方針を変え、対象物の物理的な性質を特徴量に反映させる方向に舵を切りました。

具体的には、中空の筒を叩いたときの振動理論を活用しています。壁が薄ければ低い音が出る、太い筒と細い筒では響き方が違う。こうした物理法則を数式にして、そこから逆算して「AIが見るべき数値」を設計しました。

たとえば「音の消え方の速さ」。中身が詰まっていると振動がじわっと広がるので音がゆっくり消えます。空洞があるとそこで反射して、音が早く消える。この「消え方の速さ」を対象物のサイズで割った値が、最終的に最も効果的だった特徴量のひとつです。

1ヶ月で44パターンの検証

このプロジェクトでは、全部で44パターンの仮説を検証しました。期間は約1ヶ月です。

「この数値が効くのではないか」「こう前処理すれば精度が上がるのではないか」を片っ端から試す。実装して、数字で検証して、結果を記録する。ダメなら次へ。その繰り返しです。

44回のうち、はっきり効果があったのは5〜6個。残りはすべてハズレでした。物理的に正しいはずの計算式が全然効かなかったり、データの前処理を工夫しても精度が変わらなかったり。

ただ、ハズレにも意味があります。「これはやっても効果がない」という知見が蓄積されるので、次の打ち手の精度が上がっていきます。探索範囲が徐々に狭まっていく感覚ですね。全実験の記録を残しているので、同じことを二度試さずに済みます。

データ量450件という制約

もうひとつの大きな壁がデータ量でした。今回使えたデータは約450件。最近話題のディープラーニングだと数万〜数十万件は欲しいところなので、圧倒的に足りません。

少量データで戦うなら、モデル選びも変わります。今回は勾配ブースティング(Gradient Boosting)という手法を採用しました。少ないデータでも安定して動作するのと、「どの特徴量がどれくらい予測に影響したか」を可視化できるのが強みです。お客様に結果を報告する際に「AIが出した数字です」では説得力がないので、説明可能性は重要なポイントでした。

PoCの結果

1ヶ月のPoCで、打音から内部状態をおおまかに推定できることは確認できました。専門家の判断と比較して、健全かどうかの大分類で7割以上の一致率です。

ただ正直なところ、「これで十分です」と言い切れる精度ではありません。原因はほぼデータ量にあります。450件ではモデルが学習できるパターンに限界がある。データが1,000件を超えてくれば、より高度な手法も試せるようになります。現在は「データを蓄積しながら、段階的に精度を高めていく」フェーズに移行しています。

この開発を通じて見えたこと

AIや機械学習は「データを入れれば勝手に答えが出る」というイメージが先行しがちですが、実際はそう単純ではありません。特にデータが少ない場合、人間が「何を見ればいいか」をきちんと設計してあげないと動かない。

今回のプロジェクトでは、その「設計」の部分に最も時間をかけました。お客様の業務を理解して、対象物の物理特性を調べて、それを数値に落とし込む。44回の試行錯誤のほとんどは、このプロセスです。

裏を返せば、業務知識とデータさえあれば、AIにできることはかなり広がります。「ベテランの経験や勘に頼っている作業」「データは溜まっているけど活用できていない」——そういう状況であれば、まずPoCで可能性を検証してみる価値はあるはずです。

弊社ではこうしたAI・機械学習の開発をPoCからお手伝いしています。「そもそもうちのデータでAIって使えるの?」くらいの段階で構いません。お気軽にお問い合わせください。