Files
silero-vad/tuning
2024-08-19 14:36:45 +00:00
..
2024-08-19 14:36:45 +00:00
2024-08-19 14:36:45 +00:00
2024-08-19 14:36:45 +00:00
2024-08-19 14:36:45 +00:00
2024-08-19 14:36:45 +00:00

Тюнинг 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}
}