Тюнинг Silero-VAD модели
Код тюнинга создан при поддержке Фонда содействия инновациям в рамках федерального проекта «Искусственный интеллект» национальной программы «Цифровая экономика Российской Федерации».
Тюнинг используется для улучшения качества детекции речи Silero-VAD модели на кастомных данных.
Зависимости
Следующие зависимости используются при тюнинге VAD модели:
torchaudio>=0.12.0
omegaconf>=2.3.0
sklearn>=1.2.0
torch>=1.12.0
pandas>=2.2.2
tqdm
Подготовка данных
Датафреймы для тюнинга должны быть подготовлены и сохранены в формате .feather
. Следующие колонки в .feather
файлах тренировки и валидации являются обязательными:
audio_path - абсолютный путь до аудиофайла в дисковой системе. Аудиофайлы должны представлять собой
PCM
данные, предпочтительно в форматах.wav
или.opus
(иные популярные форматы аудио тоже поддерживаются). Для ускорения темпа дообучения рекомендуется предварительно выполнить ресемплинг аудиофайлов (изменить частоту дискретизации) до 16000 Гц;speech_ts - разметка для соответствующего аудиофайла. Список, состоящий из словарей формата
{'start': START_SEC, 'end': 'END_SEC'}
, гдеSTART_SEC
иEND_SEC
- время начало и конца речевого отрезка в секундах соответственно. Для качественного дообучения рекомендуется использовать разметку с точностью до 30 миллисекунд.
Чем больше данных используется на этапе дообучения, тем эффективнее показывает себя адаптированная модель на целевом домене. Длина аудио не ограничена, т.к. каждое аудио будет обрезано до max_train_length_sec
секунд перед подачей в нейросеть. Длинные аудио лучше предварительно порезать на кусочки длины max_train_length_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
;jit_model_path
- абсолютный путь до Silero-VAD модели в формате.jit
. Если оставить это поле пустым, то модель будет загружена из репозитория в зависимости от значения поляuse_torchhub
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.
Поиск пороговых значений
Порог на вход и порог на выход можно подобрать, используя команду
python search_thresholds
Данный скрипт использует файл конфигурации, описанный выше. Указанная в конфигурации модель будет использована для поиска оптимальных порогов на валидационном датасете.