Ce projet a été conçu pour :
$ 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 .
Vous pouvez extraire la dernière image de DockerHub et exécuter des commandes Python dans le conteneur :
$ 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
Si vous souhaitez créer l'image Docker et exécuter le conteneur à partir de zéro, exécutez les commandes suivantes.
Créez l'image Docker :
$ make build
(Cela peut prendre un certain temps.)
Exécutez l'image Docker :
$ make local-nobuild
Le but de ce projet est de concevoir et d'implémenter un algorithme de détection d'activité vocale en temps réel basé sur le Deep Learning.
La solution conçue est basée sur l'extraction de fonctionnalités MFCC et un modèle 1D-Resnet qui classe si un signal audio est de la parole ou du bruit.
Modèle | Train acc. | Val acc. | Test selon. |
---|---|---|---|
1D-Resnet | 99 % | 98 % | 97 % |
Les résultats d'inférence bruts et post-traités sur un signal audio de test sont présentés ci-dessous.
Le projet voice_activity_detection/
a la structure suivante :
vad/data_processing/
: étiquetage, traitement, enregistrement et visualisation des données brutesvad/training/
: données, pipeline d'entrée, modèle & formation / évaluation / prédictionvad/inference/
: exportation du modèle entraîné et de l'inférence Veuillez télécharger l'ensemble de données du corpus LibriSpeech ASR à partir de https://openslr.org/12/ et extraire tous les fichiers dans : /path/to/LibriSpeech/
.
L'ensemble de données contient environ 1 000 heures de discours en anglais lu à 16 kHz à partir de livres audio et est bien adapté à la détection de l'activité vocale.
J'ai automatiquement annoté l'ensemble test-clean
de l'ensemble de données avec un modèle VAD pré-entraîné.
N'hésitez pas à utiliser le dossier labels/
et le modèle VAD pré-entraîné (uniquement à des fins d'inférence) à partir de ce lien.
$ cd /path/to/project/voice_activity_detection/vad/
Ignorez cette sous-section si vous disposez déjà du dossier labels/
, qui contient des annotations d'un autre modèle pré-entraîné.
$ python data_processing/librispeech_label_data.py --data-dir /path/to/LibriSpeech/test-clean/ --exported-model /path/to/pretrained/model/
Cela enregistrera les annotations dans /path/to/LibriSpeech/labels/
sous forme de fichiers .json
.
$ python data_processing/data_to_tfrecords.py --data-dir /path/to/LibriSpeech/
Cela enregistrera les données divisées au format .tfrecord
dans /path/to/LibriSpeech/tfrecords/
$ 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
Le modèle entraîné sera enregistré dans /path/to/LibriSpeech/tfrecords/models/resnet1d/
. Le modèle exporté sera enregistré dans ce répertoire.