Este proyecto fue diseñado para:
$ 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 .
Puede extraer la imagen más reciente de DockerHub y ejecutar comandos de Python dentro del contenedor:
$ 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 desea crear la imagen de la ventana acoplable y ejecutar el contenedor desde cero, ejecute los siguientes comandos.
Construya la imagen de la ventana acoplable:
$ make build
(Esto puede tardar un poco).
Ejecute la imagen de la ventana acoplable:
$ make local-nobuild
El propósito de este proyecto es diseñar e implementar un algoritmo de Detección de Actividad de Voz en tiempo real basado en Deep Learning.
La solución diseñada se basa en la extracción de características MFCC y un modelo 1D-Resnet que clasifica si una señal de audio es voz o ruido.
Modelo | Tren según | Val según | Prueba según |
---|---|---|---|
1D-Resnet | 99 % | 98% | 97% |
A continuación se muestran los resultados de inferencia sin procesar y posprocesados en una señal de audio de prueba.
El proyecto voice_activity_detection/
tiene la siguiente estructura:
vad/data_processing/
: etiquetado, procesamiento, registro y visualización de datos sin procesarvad/training/
: datos, canal de entrada, modelo y entrenamiento/evaluación/predicciónvad/inference/
: exportar modelo entrenado e inferencia Descargue el conjunto de datos del corpus LibriSpeech ASR desde https://openslr.org/12/ y extraiga todos los archivos a: /path/to/LibriSpeech/
.
El conjunto de datos contiene aproximadamente 1000 horas de lectura de voz en inglés a 16 kHz de audiolibros y es muy adecuado para la detección de actividad de voz.
Anoté automáticamente el conjunto test-clean
del conjunto de datos con un modelo VAD previamente entrenado.
No dude en utilizar las labels/
carpeta y el modelo VAD previamente entrenado (solo para inferencia) desde este enlace.
$ cd /path/to/project/voice_activity_detection/vad/
Omita esta subsección si ya tiene la carpeta labels/
, que contiene anotaciones de un modelo previamente entrenado diferente.
$ python data_processing/librispeech_label_data.py --data-dir /path/to/LibriSpeech/test-clean/ --exported-model /path/to/pretrained/model/
Esto registrará las anotaciones en /path/to/LibriSpeech/labels/
como archivos .json
.
$ python data_processing/data_to_tfrecords.py --data-dir /path/to/LibriSpeech/
Esto registrará los datos divididos en formato .tfrecord
en /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
El modelo entrenado se registrará en /path/to/LibriSpeech/tfrecords/models/resnet1d/
. El modelo exportado se registrará dentro de este directorio.