5.3 KiB
Тюнинг Silero-VAD модели
Код тюнинга создан при поддержке Фонда содействия инновациям в рамках федерального проекта «Искусственный интеллект» национальной программы «Цифровая экономика Российской Федерации».
Тюнинг используется для улучшения качества детекции речи Silero-VAD модели на кастомных данных.
Подготовка данных
Датафреймы для тюнинга должны быть подготовлены и сохранены в формате .feather. Следующие колонки в .feather файлах тренировки и валидации являются обязательными:
- audio_path - абсолютный путь до аудиофайла в дисковой системе. Аудиофайлы должны представлять собой
PCMданные, предпочтительно в форматах.wavили.opus(иные популярные форматы аудио тоже поддерживаются). Для ускорения темпа дообучения рекомендуется предварительно выполнить ресемплинг аудиофайлов (изменить частоту дискретизации) до 16000 Гц; - speech_ts - разметка для соответствующего аудиофайла. Список, состоящий из словарей формата
{'start': START_SEC, 'end': 'END_SEC'}, гдеSTART_SECиEND_SEC- время начало и конца речевого отрезка в секундах соответственно.
Пример .feather датафрейма можно посмотреть в файле example_dataframe.feather
Файл конфигурации config.yml
Файл конфигурации config.yml содержит пути до обучающей и валидационной выборки, а также параметры дообучения:
train_dataset_path- абсолютный путь до тренирового датафрема в формате.feather, Должен содержать колонкиaudio_pathиspeech_ts, описанные в пункте "Подготовка данных". Пример устройства датафрема можно посмотреть вexample_dataframe.feather;val_dataset_path- абсолютный путь до валидационного датафрема в формате.feather, Должен содержать колонкиaudio_pathиspeech_ts, описанные в пункте "Подготовка данных". Пример устройства датафрема можно посмотреть вexample_dataframe.feather;use_torchhub- ЕслиTrue, то модель для дообучения будет загружена с помощью torch.hub. ЕслиFalse, то модель для дообучения будет загружена с помощью библиотеки silero-vad (необходимо заранее установить командойpip install silero-vad);tune_8k- данный параметр отвечает, какую голову Silero-VAD дообучать. ЕслиTrue, дообучаться будет голова с 8000 Гц частотой дискретизации, иначе с 16000 Гц;model_save_path- путь сохранения добученной модели;noise_loss- коэффициент лосса, применяемый для неречевых окон аудио;max_train_length_sec- максимальная длина аудио в секундах на этапе дообучения. Более длительные аудио будут обрезаны до этого показателя;aug_prob- вероятность применения аугментаций к аудиофайлу на этапе дообучения;learning_rate- темп дообучения;batch_size- размер батча при дообучении и валидации;num_workers- количество потоков, используемых для загрузки данных;num_epochs- количество эпох дообучения. За одну эпоху прогоняются все тренировочные данные;device-cpuилиcuda.
Дообучение
Дообучение запускается командой python tune.py
Длится в течение num_epochs, лучший чекпоинт по показателю ROC-AUC на валидационной выборке будет сохранен в model_save_path в формате jit.
Цитирование
@misc{Silero VAD Dataset,
author = {Silero Team},
title = {Silero-VAD Dataset: a large public Internet-scale dataset for voice activity detection for 6000+ languages},
year = {2024},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/snakers4/silero-vad/datasets/README.md}},
email = {hello@silero.ai}
}