تم تصميم هذا المشروع من أجل:
$ 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
إذا كنت تريد إنشاء صورة عامل الإرساء وتشغيل الحاوية من البداية، فقم بتشغيل الأوامر التالية.
بناء صورة عامل الإرساء:
$ make build
(قد يستغرق هذا بعض الوقت.)
قم بتشغيل صورة عامل الإرساء:
$ make local-nobuild
الغرض من هذا المشروع هو تصميم وتنفيذ خوارزمية الكشف عن النشاط الصوتي في الوقت الفعلي بناءً على التعلم العميق.
يعتمد الحل المصمم على استخراج ميزة MFCC ونموذج 1D-Resnet الذي يصنف ما إذا كانت الإشارة الصوتية عبارة عن كلام أم ضوضاء.
نموذج | قطار الملحق. | فال لجنة التنسيق الإدارية. | اختبار ACC. |
---|---|---|---|
1D-ريسنيت | 99% | 98% | 97% |
تظهر أدناه نتائج الاستدلال الأولية وما بعد المعالجة على إشارة صوتية اختبارية.
يحتوي المشروع voice_activity_detection/
على البنية التالية:
vad/data_processing/
: تصنيف البيانات الأولية ومعالجتها وتسجيلها وتصورهاvad/training/
: البيانات، خط أنابيب الإدخال، النموذج والتدريب/التقييم/التنبؤvad/inference/
: تصدير النموذج المُدرب والاستدلال يُرجى تنزيل مجموعة بيانات LibriSpeech ASR من 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/
. سيتم تسجيل النموذج المصدر داخل هذا الدليل.