이 프로젝트는 다음을 위해 설계되었습니다:
$ 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
(시간이 좀 걸릴 수 있습니다.)
도커 이미지를 실행합니다:
$ make local-nobuild
본 프로젝트의 목적은 딥러닝 기반의 실시간 음성 활동 감지 알고리즘을 설계하고 구현하는 것입니다.
설계된 솔루션은 MFCC 특징 추출과 오디오 신호가 음성인지 잡음인지 분류하는 1D-Resnet 모델을 기반으로 합니다.
모델 | 기차 액세서리 | Val acc. | 테스트 액세서리 |
---|---|---|---|
1D-레스넷 | 99% | 98% | 97% |
테스트 오디오 신호에 대한 원시 및 사후 처리된 추론 결과는 다음과 같습니다.
voice_activity_detection/
프로젝트의 구조는 다음과 같습니다.
vad/data_processing/
: 원시 데이터 라벨링, 처리, 기록 및 시각화vad/training/
: 데이터, 입력 파이프라인, 모델 및 훈련/평가/예측vad/inference/
: 훈련된 모델 및 추론 내보내기 https://openslr.org/12/에서 LibriSpeech ASR 코퍼스 데이터세트를 다운로드하고 모든 파일을 /path/to/LibriSpeech/
에 추출하세요.
이 데이터 세트에는 오디오북에서 읽은 16kHz 영어 음성의 약 1000시간이 포함되어 있으며 음성 활동 감지에 매우 적합합니다.
사전 훈련된 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/
이렇게 하면 주석이 /path/to/LibriSpeech/labels/
에 .json
파일로 기록됩니다.
$ python data_processing/data_to_tfrecords.py --data-dir /path/to/LibriSpeech/
그러면 분할된 데이터가 /path/to/LibriSpeech/tfrecords/
에 .tfrecord
형식으로 기록됩니다.
$ 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/
에 기록됩니다. 내보낸 모델은 이 디렉터리에 기록됩니다.