voice_activity_detection
1.0.0
该项目的设计目的是:
$ 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 模型,可对音频信号是语音还是噪声进行分类。
模型 | 火车按照。 | 瓦尔符合。 | 测试依据 |
---|---|---|---|
一维Resnet | 99% | 98% | 97% |
测试音频信号的原始和后处理推理结果如下所示。
项目voice_activity_detection/
具有以下结构:
vad/data_processing/
:原始数据标记、处理、记录和可视化vad/training/
:数据、输入管道、模型和训练/评估/预测vad/inference/
:导出经过训练的模型和推理请从 https://openslr.org/12/ 下载 LibriSpeech ASR 语料库数据集,并将所有文件解压到: /path/to/LibriSpeech/
。
该数据集包含大约 1000 小时的有声读物中 16kHz 朗读英语语音,非常适合语音活动检测。
我使用预训练的 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/
这会将注释作为.json
文件记录到/path/to/LibriSpeech/labels/
中。
$ 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/
中。导出的模型将记录在该目录中。