魚が餌を食べるときの音解析

## はじめに
現在、魚の陸上養殖の餌やりにおいて、人がその都度魚の状態を目で見て
判断しており、与える餌の量などを決めています。
そのため、個人個人の経験によって餌の量が調節されており、
その客観的な指標がありません。
そこで、今回魚の研究を行っている東京海洋大学の近藤秀裕教授からお話をいただき、
餌を食べるときの音を解析し、魚の餌の食いつき度合いを
定量化できないか、共同研究を行いました。

## 共同研究の目的
魚が餌を食べる音を解析し、餌への食いつき度合いを定量化する方法を検討


## 共同研究の役割
東京海洋大学：魚・水槽等環境の準備、録音
ＮＴＴデータＣＣＳ：音データの解析

## 餌を食べるときの様子
今回、解析対象となる魚はヒラメです。
下の動画は、実際にヒラメが餌を食べる様子です。

<iframe width="560" height="315" src="https://www.youtube.com/embed/fxa5MR99_ng" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

このように、ヒラメが餌を食べるときは、水面に顔を出して音を鳴らしながら餌を食べます。



## 録音マイクについて
ヒラメが餌を食べるとき、ピチャピチャと音をたてます。
この音を録音するために、今回は水中専用マイクを使用して録音しました。
こちらが水中マイクと空間マイクでそれぞれ録音した音です。

・水中マイク
<iframe width="100" height="200" src="https://www.youtube.com/embed/I1jCnX5BbDQ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>


・空間マイク
<iframe width="100" height="200" src="https://www.youtube.com/embed/FpqyodW4WhY" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

空間マイクでは「ザー」といったノイズが多く、水の音が聞こえにくいです。
それに比べて水中マイクでは、ピチャピチャといった音がよりきれいにとれていることがわかります。

## 音の解析
#### ・音の特徴
録音した音をメルスペクトログラムにしてみると、
餌を食べているときに、下の図のように縦線が強く表れることがわかりました。

<img width="500" alt="スペクトログラム" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2701526/6dfbe78b-09d4-7591-fc91-0cf05df6f057.png">![](【グラフ】音のメルスペクトログラム)


餌を食べる音は広い周波数成分を含む音で、
手拍子や破裂音などに近い音の特徴を持っています。
この特徴を利用して、さらに踏み込んで、
餌を食べる音の特徴を定量化する手法を考えました。

#### ・餌を食べている音の特徴の定量化の検討
餌を食べる音の特徴を定量化するために、
以下のような3つの処理を考えました。

　①特徴量抽出　：　メルスペクトログラムの縦線を抽出
　②閾値設定　　：　①で得られた特徴量からノイズ成分を除去する閾値を設定
　③累計処理　　：　②で設定した閾値を超えた回数をカウント

##### ①特徴量抽出
餌を食べる音の特徴に、「メルスペクトログラムで縦線があらわれる」という特徴があります。
このことから、この縦線を以下の処理で抽出しました。

まず、メルスペクトログラムで隣り合ったマスの色（強度）の差を計算します。
下の図がその模式図です。
<img width="400" alt="特徴量" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2701526/274c183f-30bb-f68c-38ad-212f593d5a34.png">
次に、得られた計算結果を縦1行ずつ着目し、
縦方向に全て足し合わせて、1つの特徴量とします。
<img width="250" alt="特徴量" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2701526/65b0b09a-f5c3-2255-0550-99d9e9613c45.png">
全ての行についてこの処理を行うと、以下の図のように1次元の特徴量グラフが得られます。
<img width="400" alt="特徴量" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2701526/7050adcf-e482-e196-3597-e7e1779a229a.png">
このようにすることで、メルスペクトログラムで縦線となる部分で
大きな値となる特徴量が抽出できます。

##### ②閾値設定
①で得られた特徴量に対して、ノイズ成分を除去するために、下の図のようにある閾値を設定します。
<img width="400" alt="特徴量" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2701526/1ee2fd64-01f1-adca-c118-5cc886fa6f12.png">

##### ③累計処理
最後に、②で設定した閾値を超えた回数をカウントしていきます。
下の図のように、閾値を超えた時に1ずつ上がっていくグラフが作成できます。
<img width="400" alt="特徴量" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2701526/455cbec9-b64e-6a13-80d6-330eaf942476.png">

これらの①～③の処理を行うことで、魚が餌を食べる特徴的な音が鳴った回数をカウントし、定量化することができます。

#### ・録音データに適用した結果
実際に通常時(餌を食べていない時)・給餌中(餌を食べている時)にそれぞれ録音したデータに対して、
上記での定量化手法を試すと、それぞれ下の図のような結果となりました。

<img width="800" alt="特徴量" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2701526/ff0db7fa-2fc3-a64f-1c79-8b4f88455ca0.png">![](【グラフ】音波形と特徴量のグラフ（1次元）)
真ん中の特徴量のグラフから、通常時は閾値越えがなく、
給餌中は何回か閾値を超えていることがわかります。
また、下のグラフから給餌中はカウント値が大きく、通常時はカウントされていないことがわかりました。
このことから、今回考えた手法は餌を食べている時と食べていない時を判別でき、
魚の状態を音から判断できる可能性があることがわかりました。

## 近藤秀裕教授のコメント
魚が餌を食べる量や食べるのにかかる時間は、魚の健康状態のバロメータとなると考えられ、画像解析なども試みられています。
音データは画像と比べてファイルサイズが小さくなるなどのメリットがあるので、
今後、実際に魚の健康状態と得られたデータとの相関解析などを行い、現場への応用に向けた研究を進めたいと考えています。

## おわりに
今回、水中での音の解析を初めて行いましたが、水中マイクだと音が綺麗に取れたり、餌を食べる音の特徴がわかったりして面白かったです。
今後も引き続き、魚の健康状態など条件を変えたりしたときにどのようになるのか、研究を進めていきたいと思います。