Этот проект был разработан для:
$ 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 и запустить контейнер с нуля, выполните следующие команды.
Создайте образ докера:
$ make build
(Это может занять некоторое время.)
Запустите образ докера:
$ make local-nobuild
Целью этого проекта является разработка и реализация алгоритма обнаружения голосовой активности в реальном времени на основе глубокого обучения.
Разработанное решение основано на извлечении признаков MFCC и модели 1D-Resnet, которая классифицирует, является ли аудиосигнал речью или шумом.
Модель | Поезд в соотв. | Вал акк. | Тест в соотв. |
---|---|---|---|
1D-Резнет | 99 % | 98 % | 97 % |
Ниже показаны необработанные и постобработанные результаты тестового аудиосигнала.
Проект voice_activity_detection/
имеет следующую структуру:
vad/data_processing/
: маркировка, обработка, запись и визуализация необработанных данных.vad/training/
: данные, входной конвейер, модель и обучение/оценка/прогнозированиеvad/inference/
: экспорт обученной модели и вывода Загрузите набор данных корпуса ASR LibriSpeech с https://openslr.org/12/ и извлеките все файлы в: /path/to/LibriSpeech/
.
Набор данных содержит около 1000 часов чтения английской речи из аудиокниг с частотой 16 кГц и хорошо подходит для обнаружения голосовой активности.
Я автоматически аннотировал test-clean
набор набора данных предварительно обученной моделью VAD.
Пожалуйста, не стесняйтесь использовать папку 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/
Это запишет разделенные данные в формате .tfrecord
в /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
Обученная модель будет записана в /path/to/LibriSpeech/tfrecords/models/resnet1d/
. Экспортированная модель будет записана в этом каталоге.