Skip to content

sana37/sound_recognition

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sound_recognition

CNNを使った機械学習で音声認識できるようになりました。

概要

wav形式音声データをフーリエ変換して得られた周波数データをCNNに学習させます。

ここで実装したCNNは、入力がtrueかfalseか判定するだけの二値分類器です。

学習させたCNNを実際に使って音声デバイスからの音を判別させることもできます。

詳細

CNNの構築にはtensorflowを使っています。

また、wavファイルから読み取った音声データは、scipy.fftpackを使ってフーリエ変換しています。

実装内容の大まかにまとめると、次のようになります。

学習

  • 指定されたパスからwavファイルを読み込む

  • 読み込んだwavファイルの先頭約170msを切り取り、fftpackでフーリエ変換する。これが教師データひとつぶんとなる

  • フーリエ変換後のデータは

    • 横軸:時間
    • 縦軸:周波数
    • 輝度:振幅

    の画像のようなデータになる

  • 教師データをCNNに与えてディープラーニングする

  • CNNのモデルは、

    • 畳み込み層1
    • プーリング層1
    • 畳み込み層2
    • プーリング層2
    • 全結合層1
    • ドロップアウト層
    • 全結合層2

    から構成されている

  • 学習で得られたCNNのパラメータを保存

音声デバイスを使った動作確認

  • 保存されているCNNのパラメータを読み込み、CNNを再構築する

  • pyaudioで音声デバイスを開き、音声データ取得を開始する

  • 取得した音声データをfftpackでフーリエ変換

  • フーリエ変換後のデータをCNNに与える。CNNの出力結果を観察できる

wavファイル、音声デバイスの設定

  • rate : 48000 Hz

  • format : signed int 16 bits little endian

  • channel : monaural

使用したバージョン

  • python 3.5.2

  • tensorflow 1.2.1

使用例

指ぱっちんの音を学習させて実際に使ってみました。

https://www.youtube.com/watch?v=zfpo7Ow4mkc

使い方

データセット

データセットが格納されているディレクトリをwavdataset.pyに教えてあげます。

具体的には、wavdataset.pyDatasetManager.true_dir_listには正解データが入っているディレクトリのパスを、 false_dir_listには不正解データが入っているディレクトリのパスを、それぞれ追加します。

wavdataset.pyはデータセットを管理するモジュールです。

wavdataset.pyは、指定されたディレクトリからwav形式の音声ファイルを読み込んでフーリエ変換し、 変換後のデータを集め、これをデータセットとして、他のモジュールに提供します。

学習

データセットを使って学習させたいときはpythonインタプリタでtraining.pyを実行します。

training.pyは、所定のパスにあるデータセットを使ってCNNに学習させます。

学習が終わると、得られたパラメータを保存します。

学習パラメータはsound_recognition_model.なんたらみたいなファイルとかに保存されます。

また、training.pyでは学習後の挙動の確認用として、各入力データに対する結果をいくつか表示するようになっています。

音声デバイスを使った動作確認

realtime.pyは、音声デバイスから取得した音声をCNNに与えて、実際に正しく判定できるかどうか確認するためのモジュールです。

どの音声デバイスを使用するのか指定する必要があり、realtime.pyではデバイス名でデバイスを見つけ、指定しています。

使用したい音声デバイスによってデバイス名は異なるので、realtime.pyでは変数DEVICE_NAMEにて使いたいデバイスの名前を設定しています。

CNNのパラメータは、training.pyで学習したときに保存されたものを読み込んで使っています。

参考

About

sound recognition with convolutional neural network

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages