Dieses Projekt wurde konzipiert für:
$ 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 .
Sie können das neueste Image von DockerHub abrufen und Python-Befehle im Container ausführen:
$ 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
Wenn Sie das Docker-Image erstellen und den Container von Grund auf ausführen möchten, führen Sie die folgenden Befehle aus.
Erstellen Sie das Docker-Image:
$ make build
(Dies kann eine Weile dauern.)
Führen Sie das Docker-Image aus:
$ make local-nobuild
Der Zweck dieses Projekts besteht darin, einen auf Deep Learning basierenden Echtzeit-Algorithmus zur Sprachaktivitätserkennung zu entwerfen und zu implementieren.
Die entworfene Lösung basiert auf der MFCC-Merkmalsextraktion und einem 1D-Resnet-Modell, das klassifiziert, ob es sich bei einem Audiosignal um Sprache oder Rauschen handelt.
Modell | Zug gem. | Wert gem. | Prüfung gem. |
---|---|---|---|
1D-Resnet | 99 % | 98 % | 97 % |
Rohe und nachbearbeitete Inferenzergebnisse für ein Test-Audiosignal werden unten angezeigt.
Das Projekt voice_activity_detection/
hat die folgende Struktur:
vad/data_processing/
: Kennzeichnung, Verarbeitung, Aufzeichnung und Visualisierung von Rohdatenvad/training/
: Daten, Eingabepipeline, Modell und Training/Bewertung/Vorhersagevad/inference/
: Exportieren trainierter Modelle und Inferenzen Bitte laden Sie den LibriSpeech ASR-Korpusdatensatz von https://openslr.org/12/ herunter und extrahieren Sie alle Dateien nach: /path/to/LibriSpeech/
.
Der Datensatz enthält etwa 1000 Stunden vorgelesene englische Sprache aus Hörbüchern mit 16 kHz und eignet sich gut für die Sprachaktivitätserkennung.
Ich habe den test-clean
-Satz des Datensatzes automatisch mit einem vorab trainierten VAD-Modell annotiert.
Sie können gerne den Ordner labels/
und das vorab trainierte VAD-Modell (nur für Rückschlüsse) über diesen Link verwenden.
$ cd /path/to/project/voice_activity_detection/vad/
Überspringen Sie diesen Unterabschnitt, wenn Sie bereits über den Ordner labels/
verfügen, der Anmerkungen aus einem anderen vorab trainierten Modell enthält.
$ python data_processing/librispeech_label_data.py --data-dir /path/to/LibriSpeech/test-clean/ --exported-model /path/to/pretrained/model/
Dadurch werden die Anmerkungen als .json
Dateien in /path/to/LibriSpeech/labels/
aufgezeichnet.
$ python data_processing/data_to_tfrecords.py --data-dir /path/to/LibriSpeech/
Dadurch werden die aufgeteilten Daten im .tfrecord
Format in /path/to/LibriSpeech/tfrecords/
aufgezeichnet.
$ 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
Das trainierte Modell wird in /path/to/LibriSpeech/tfrecords/models/resnet1d/
aufgezeichnet. Das exportierte Modell wird in diesem Verzeichnis aufgezeichnet.