このプロジェクトは次の目的で設計されました。
$ cd /path/to/project/
$ git clone https://github.com/filippogiruzzi/voice_activity_detection.git
$ cd voice_activity_detection/
$ pyenv install 3.7.3
$ pyenv virtualenv 3.7.3 vad-venv
$ pyenv activate vad-venv
$ pip install -r requirements.txt
$ pip install -e .
DockerHub から最新のイメージを取得し、コンテナー内で Python コマンドを実行できます。
$ docker pull filippogrz/tf-vad:latest
$ docker run --rm --gpus all -v /var/run/docker.sock:/var/run/docker.sock -it --entrypoint /bin/bash -e TF_FORCE_GPU_ALLOW_GROWTH=true filippogrz/tf-vad
Docker イメージを構築してコンテナーを最初から実行する場合は、次のコマンドを実行します。
Docker イメージをビルドします。
$ make build
(これには少し時間がかかる場合があります。)
docker イメージを実行します。
$ make local-nobuild
このプロジェクトの目的は、深層学習に基づいたリアルタイムの音声アクティビティ検出アルゴリズムを設計および実装することです。
設計されたソリューションは、MFCC 特徴抽出と、オーディオ信号が音声かノイズかを分類する 1D-Resnet モデルに基づいています。
モデル | 電車に応じて | 値に応じて | テスト準拠 |
---|---|---|---|
1D レスネット | 99% | 98% | 97% |
テストオーディオ信号の生の推論結果と後処理された推論結果を以下に示します。
プロジェクトvoice_activity_detection/
構造は次のとおりです。
vad/data_processing/
: 生データのラベル付け、処理、記録、視覚化vad/training/
: データ、入力パイプライン、モデルとトレーニング / 評価 / 予測vad/inference/
: トレーニング済みモデルと推論のエクスポートLibriSpeech ASR コーパス データセットを https://openslr.org/12/ からダウンロードし、すべてのファイルを/path/to/LibriSpeech/
に抽出してください。
このデータセットには、オーディオブックから読み取られた 16kHz の英語音声が約 1000 時間含まれており、音声アクティビティの検出に適しています。
事前トレーニングされた VAD モデルを使用して、データセットのtest-clean
セットに自動的にアノテーションを付けました。
このリンクからlabels/
フォルダーと事前トレーニングされた VAD モデル (推論のみ) を自由に使用してください。
$ cd /path/to/project/voice_activity_detection/vad/
別の事前トレーニング済みモデルからの注釈が含まれるlabels/
フォルダーが既にある場合は、このサブセクションをスキップしてください。
$ python data_processing/librispeech_label_data.py --data-dir /path/to/LibriSpeech/test-clean/ --exported-model /path/to/pretrained/model/
これにより、注釈が/path/to/LibriSpeech/labels/
に.json
ファイルとして記録されます。
$ python data_processing/data_to_tfrecords.py --data-dir /path/to/LibriSpeech/
これにより、分割されたデータが/path/to/LibriSpeech/tfrecords/
に.tfrecord
形式で記録されます。
$ python training/train.py --data-dir /path/to/LibriSpeech/tfrecords/
$ python inference/export_model.py --model-dir /path/to/trained/model/dir/
$ python inference/inference.py --data-dir /path/to/LibriSpeech/ --exported-model /path/to/exported/model/ --smoothing
トレーニングされたモデルは/path/to/LibriSpeech/tfrecords/models/resnet1d/
に記録されます。エクスポートされたモデルは、このディレクトリ内に記録されます。