ashiN237 / unilab_mario_python

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

unilab-mario

リポジトリのクローン

以下のコマンドをクローンしたいディレクトリで実行してください。

git clone https://github.com/murata-lab/unilab-mario.git

とりあえず動かしたい場合

1.実行環境の準備

以下のコマンドを実行して必要なライブラリをインストールしてください。

pip install sounddevice numpy matplotlib scipy tensorflow librosa

次に、インストールが正常に実行されたか確認します。以下のコマンドを実行してエラーが出ないことを確認してください。

python -c "import sounddevice, numpy, matplotlib, scipy, tensorflow, librosa"

2.実行

実際の分離を行うにはsrcディレクトリにあるpred.pyを使います。訓練済みモデルmodel_mfcc.h5が入っているので、このまま実行してください。ゲームとつなげず、ターミナル上で分離だけ行う場合はprediction.pyを実行してください。

自分で用意したデータセットを使う場合や新たにデータを追加して分離精度を上げたい場合

1.データセットの準備

録音にはマイクが必要であるため、ローカルマシンでやってください。パッケージのインストールが必要になりますので、最後に記載された方法で不要なパッケージの削除や、バージョンの変更を行ってください。

データの取得にはrecordingディレクトリにあるrec.pyを使います。

ローカルマシンで実行するため、パッケージのバージョンが変わる可能性があります。以下のコマンドで自身の環境にインストールされているパッケージのバージョンとリストを取得しておいてください。

pip list

まずは実行環境の準備です。以下のコマンドを実行して必要なライブラリをインストールしてください。

pip install sounddevice==0.4.6 numpy==1.22.3 matplotlib==3.5.1

次に、インストールが正常に実行されたか確認します。以下のコマンドを実行してエラーが出ないことを確認してください。

python -c "import sounddevice, numpy, matplotlib"

実行環境の準備はこれで完了です。次にrec.pyの設定を行います。以下の項目を設定してください。

  • 44行目 file_path : 取得したデータの保存先のパスを指定してください。

  • 68行目 val > 0.xx : 録音を開始する音量を指定します。デフォルトでは0.xx=0.05です。

  • 90行目 recording_time : 録音時間です。デフォルトでは0.50秒になってます。

  • 91行目 downsample : サンプリングレートをこの値で割った値にします。デフォルトは1です。

次にデータの取得方法についてです。データは1人が「とまれ」「すすめ」「もどれ」「ジャンプ」の4単語を順番に言うことを想定しています。データのサンプルをとる人の番号を26行目のrecording_numberに設定します。ここまで設定ができたらrec.pyを実行してください。

実行するとマイクで拾った音声をリアルタイムで表示するグラフが現れます。コードの68行目で指定した値を音量が上回ると録音が開始され、4回録音すると自動で終了します。次の人の録音をする場合はrecording_numberの値を変更して再度実行してください。

録音データは全てcsvファイルで保存されます。直前に録音された波形はhoge#.pngで見ることができます。正常に録音されたかの確認に使用してください。

以下は不要なパッケージやバージョンの変更方法です。上が削除方法、下がバージョンの変更方法です。

pip uninstall パッケージ名
pip install パッケージ名==バージョン

2.トレーニングの設定

モデルの構築とトレーニングにはtrainingディレクトリにあるtrain.pyを使います。まずは以下の項目の設定をします。

  • 11行目 num_files : データセットのcsvファイルの数です。

  • 14行目 div : データをトレーニング用とテスト用に分割するインデックスを指定します。

  • 17行目 mode : 特徴量抽出機を選択します。stft = 0, mfcc = 1です。

  • 20行目 directory : 学習に使うデータセットのディレクトリを選択します。

以上でtrain.pyの設定は完了です。

3.モデルの構築とトレーニング

第2項で設定したtarin.pyの実行に必要な環境は同ディレクトリにあるDockerfileで用意します。

まずは以下のコマンドを実行し、ビルドを行ってください。

make build

次に以下のコマンドを実行すると、コンテナ内の8888ポートがホストマシンの8888ポートにマッピングされます。Dockerコンテナを起動すると、Jupyter Labが自動的に開始され、コンテナのIPアドレスとポート番号(デフォルトは8888)にアクセスすることでJupyter Labに接続できます。

make run

完了したら、各自のWebブラウザで以下のURLに接続することでコンテナ内部で作業ができるようになります。

http://localhost:8888

ここからはコンテナ内の作業になるので、ファイルの内容の変更や訓練されたモデルなどは保存されない点に注意してください。保存したい場合は必要に応じてダウンロードしてください。

Jupyter Labでtrain.pyを実行するにはrun.ipynbを開いてすでに書かれている以下のコマンドを実行してください。

%run train.py

実行が完了すると同じディレクトリに指定した名前のモデル(h5ファイル)が生成されます。これをダウンロードしてsrcディレクトリに入れてください。ここまで完了したらJupyter Labは閉じてしまって構いません。

終了するときは必ず以下のコマンドを実行してください。

make stop

以降、作成したモデルを動かすのはとりあえず動かしたい場合と同様です。

About


Languages

Language:Python 96.7%Language:Jupyter Notebook 2.4%Language:Makefile 0.9%