以下のコマンドをクローンしたいディレクトリで実行してください。
git clone https://github.com/murata-lab/unilab-mario.git
以下のコマンドを実行して必要なライブラリをインストールしてください。
pip install sounddevice numpy matplotlib scipy tensorflow librosa
次に、インストールが正常に実行されたか確認します。以下のコマンドを実行してエラーが出ないことを確認してください。
python -c "import sounddevice, numpy, matplotlib, scipy, tensorflow, librosa"
実際の分離を行うにはsrc
ディレクトリにあるpred.py
を使います。訓練済みモデルmodel_mfcc.h5
が入っているので、このまま実行してください。ゲームとつなげず、ターミナル上で分離だけ行う場合はprediction.py
を実行してください。
録音にはマイクが必要であるため、ローカルマシンでやってください。パッケージのインストールが必要になりますので、最後に記載された方法で不要なパッケージの削除や、バージョンの変更を行ってください。
データの取得には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 パッケージ名==バージョン
モデルの構築とトレーニングにはtraining
ディレクトリにあるtrain.py
を使います。まずは以下の項目の設定をします。
-
11行目
num_files
: データセットのcsvファイルの数です。 -
14行目
div
: データをトレーニング用とテスト用に分割するインデックスを指定します。 -
17行目
mode
: 特徴量抽出機を選択します。stft = 0, mfcc = 1です。 -
20行目
directory
: 学習に使うデータセットのディレクトリを選択します。
以上でtrain.py
の設定は完了です。
第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
以降、作成したモデルを動かすのはとりあえず動かしたい場合
と同様です。お疲れさまでした。