pythonで音声から感情認識~メルスペクトログラム&CNN~

今回はpythonを用いて音声データから感情認識(Emotion Recognition)をやってみます。
感情認識は音声から話者の感情を認識する技術のことです。

ariXivの論文を参考に実装してみました。

Emotion Recognition from Speech
In this work, we conduct an extensive comparison of various approaches to speech based emotion recognition systems. The analyses were carried out on audio recor...

精度よく認識するためには特徴量の抽出方法が大事みたいです。
論文にならってメルスペクトログラムを用いて感情の認識を行ってみました。

感情認識のためのデータセットのRAVDESSを用いました。
24人の俳優によって録音された感情で分類されたデータセットになります。
The Ryerson Audio-Visual Database of Emotional Speech and Song
https://zenodo.org/record/1188976

データの準備

まずRAVDESSデータセットの読み込みを行います。(参考:音響信号処理用の音データセット紹介と使い方解説まとめ)
次に音声波形をメルスペクトログラムに変換します。(参考:pythonで時間周波数解析~メルスペクトログラム~)

読み込んだ信号をメルスペクトログラムに変換します。

俳優ごとにデータを分けます。
24人の音データを以下のように分けました。

  • 1~20:学習用データ(訓練用)
  • 21~22:学習用データ(検証用)
  • 23~24:評価用データ

データを整理します

tensorflowを用いて深層学習モデルの作製をします。

チェックポイントを設定して、データを入れて学習を実行します。

実行結果の混合行列のグラフを貼ります。
精度は46.7%で良いとは言えないですが文献の値と近いようです。

22人のデータで学習して、異なる2人の感情について1/2で正答すると考えると、まあまあ分類できるのだなぁという感想です。
論文だともうちょっと精度が高いのはなんでなんだろうか。

コメント

タイトルとURLをコピーしました