Skip to content

F1Soda/Transcriber

Repository files navigation

Transcriber


TODO

  • write on english
  • Перевести preprocessor.py c CPU на CUDA

Приложение чтобы получать субтитры для лекций, работающий по аналогии транскрипции в Контур.Толк

Требования

  • CUDA(желательно)
  • 16 GB RAM
  • Python 3.12

How To

  • Create venv
  • pip install -r requirements.txt
  • Докачать другие пакеты, которые пока не указаны в requirements.txt. Постараюсь поправить позже
  • Для работы желательно иметь CUDA
  • Запускаем скрипт Transcriber/main.py заранее обновив список аудиозаписей для обработки

Shut up, and give me commands!

python312 -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
python312 main.py --test

Скорее всего тебе так же вручуню придется докачать либы для CUDA с сайта torch

Тестирование

  • Перед запуском на реальных аудиозаписях рекомендуется проверить работу приложения на тестовых записях. для этого нужно запустить скрипт с флагом test:
    python main.py --test

The attention mask is not set

Не обращай внимание на это предупреждение. В коде чанки поступают уже попиленными на нужные части.

Принцип работы

Pipeline этого приложения следующий:

  • Запускаем preprocessor.py, в котором
    • делим аудиозапись на 30 секундные чанки, в которых
      • нормируем аудиозапись
      • применяем compress dynamic range
      • используем denoiser от meta
      • сохраняем результат работы над чанком в папку Processed/{audio_name}/parts
    • Собираем все вместе
  • Запускаем vad.py для поиска частей, в которых есть голос
  • Запускаем transcriber.py, в котором:
    • полученные временные границы от прошлого скрипта vad.py используется для нарезки обработанного аудио
    • для лучшего распознавания объеденяем маленькие куски в один большой размером < 30 секунд
    • подаем на вход модели whisper large-v3
  • Транскрипция сохраняется в файл Transcription/Lectures/{audio_name}.txt

Советы

  • Если нужно использовать для других целей или как то настроить обработку аудио, то нужно поковыряться в preprocessor.py
  • Для экономии RAM памяти все модельки подгружаются постепенно. Если вы считаете, что у вас достаточно оперативки, вы можете отключить данную логику в main.py
  • Не советуется использовать распараллеливание для Preprocessor. denoiser с pydub плохо работают вместе и на параллели
  • Лучше понастраивать batch_size для Transcriber.load(batch_size=6). Но не устанавливайте слишком большой, иначе видеокарта может простаивать.(deprecated)
  • Для каждого пакета есть скрипт main.py. В нем можно по отдельности что то поисполнять
  • В Tools есть полезные скрипты
  • Лучше запускать в терминале и держать терминал открытым(то есть не сворачивать). Глупо, но когда сворачиваешь, то производетльность уменьшается(+1 секнуда к обработке каждого чанка)

About

Python project for extracting subtitles from lectures and other audios using Whisper, Denoiser and Silero

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages