Skip to content

F33RNI/Webinar-hacker

Repository files navigation

Lecture-hacker (aka Webinar-hacker)

Автоматическая запись и транскрибирование лекций из платформы Webinar / Zoom или стороннего видео/аудио

Download release

YouTube Bandcamp Spotify SoundCloud


Надоело слушать бесполезные скучные лекции? Предоставь это Lecture-hacker и можешь идти спать! 😴

Возможности

  • Автоматический вход по ссылке (Webinar / Zoom) с указанным именем, ожидание начала мероприятия
  • Возможность нескольких ссылок (по завершении мероприятия автоматическое переключение на следующее)
  • Вход, используя прокси
  • Автоматическое написание приветственного сообщения в чат
  • Автоматическое блокирование микрофона и камеры
  • Автоматическое блокирование всплывающих окон и диалогов
  • Автоматическое подтверждение присутствия
  • Автоматическая активность путём периодического фокусирования на чате
  • Автоматическая запись звука с возможностью задания порога чувствительности
  • Автоматическое сохранение скриншотов
  • Автоматическое переключение ссылок при превышении заданного времени ожидания
  • Сборка скриншотов и аудио-фрагментов из стороннего видео-файла или аудио-файла
  • Транскрибирование аудио в текст со знаками препинания при помощи локальной оффлайн-модели
  • Разделение на параграфы по паузе
  • Сопоставление скриншотов и транскрибированного текста в документ формата .docx
  • Вычисление примерного оставшегося времени до окончания процесса транскрибирования

Как запустить и пользоваться

Запись и сборка лекций всегда проходит в 2 этапа независимо от того, с Webinar / Zoom она или из видео/аудио:

  1. Непосредственно запись лекции. На этом этапе Lecture-hacker извлекает аудио-фрагменты в которых есть звук, по громкости превышающий установленный порог (каждый фрагмент записывается в отдельный WAV файл 16КГц PCM16 (signed int16)). А также следит за изменением изображения. Если изменения выше порога, сохраняется скриншот.
  2. Из обработанных данных (набора .wav файлов и скриншотов) непосредственно собирается лекция. Для этого, в начале, аудио транскрибируется с сохранением времени, далее, текст вместе со скриншотами, согласно времени, записывается в .docx файл.

Вход и запись лекций на платформе Webinar / Zoom

Основной функционал Lecture-hacker подразумевает автоматический вход по ссылке (и ожидание начала мероприятия), отправку приветственного сообщения в чат, симуляцию активности и запись лекции

  • Для этого, перейдите на вкладку Webinar / Zoom
  • Вставьте ссылку на мероприятие в поле Webinar / Zoom links:
  • Если мероприятий несколько, нажмите на кнопку + чтобы добавить новую ссылку и на кнопки - чтобы удалить ссылки
  • Укажите имя, с которым нужно подключиться в поле Connect with name:
  • Укажите приветственное сообщение, которое необходимо отправить в чат после начала мероприятия в поле Hello message:
  • Если требуется, укажите прокси в формате IP:PORT в поле Proxy:
  • Укажите время, через которое нужно переключить / закрыть ссылку в полях Link timeout:. Если это не требуется, снимите галочку или выставите 0 и 0
  • Для Zoom, укажите, нужно ли перезаходить по той же ссылке и сколько раз в поле Zoom reconnects: . Если это не требуется, снимите галочку или выставите 0
  • Укажите, нужно ли записывать это мероприятие для последующего транскрибирования в поле Enable Recording
  • Нажмите кнопку Start и дождитесь открытия браузера
  • Готово! Вход, запись и выход будут выполнены автоматически. Чтобы закрыть браузер раньше, нажмите на кнопку Stop

Во время мероприятия можно настраивать таймаут (Link timeout), количество переподключений в Zoom (Zoom reconnects) и порог громкости для начала записи (Audio threshold)

Обработка стороннего видео- / аудио- файла

Перед сборкой лекции (транскрибированием), необходимо обработать видео- / аудио- файл.

  • Для этого, перейдите на вкладку Video / Audio file
  • Вставьте путь к файлу (или выберите файл при помощи кнопки Browse)
  • Нажмите кнопку Start и дождитесь окончания обработки файла
  • Файл можно закрыть в любой момент, нажав на кнопку Stop
  • После обработки файла, можно транскрибировать данную лекцию

Транскрибирование и сборка лекции в .docx - документ

После завершения мероприятия, записанный материал можно транскрибировать в .docx документ с картинками:

  • Для этого обновите список записей нажав на кнопку Refresh
  • Выберите из списка нужную запись
  • Нажмите на кнопку Build. После окончания процесса, будет показано окно с путём сохранения конечного документа
  • Важно! Процесс сборки лекции может занимать длительное время! (может быть больше времени записанного материала) Не закрывайте приложение до разблокировки кнопок
  • Для ускорения процесса транскрибирования, установите CUDA 11.7: https://developer.nvidia.com/cuda-11-7-0-download-archive и убедитесь что при запуске сборки, внизу окна есть сообщение Device: cuda

Настройки и файл настроек

  • Настройки Lecture-hacker хранятся в файле settings.json
  • Настройки с префиксом gui_ редактируются при помощи элементов интерфейса в реальном времени
  • Для изменения других настроек, закройте приложение, откройте данный файл в текстовом редакторе, измените нужные параметры и откройте приложение заново
  • Важно! Lecture-hacker не проводит автоматическую проверку настроек. Если вы задали неверное значение, ошибка появится в неожиданный момент! Будьте внимательны при редактировании файла

Текущий список настроек:

{
    "screenshot_diff_threshold_percents": 5,
    "opencv_threshold": 10,
    "loop_interval_seconds": 3.0,
    "timestamp_format": "%d_%m_%Y__%H_%M_%S",
    "audio_chunk_size": 4096,
    "audio_recording_chunks_min": 20,
    "audio_wav_sampling_rate": 16000,
    "audio_wav_resampling_type": "soxr_mq",
    "paragraph_audio_distance_min_milliseconds": 10000,
    "recordings_directory_name": "recordings",
    "lectures_directory_name": "lectures",
    "audio_directory_name": "audio",
    "screenshots_directory_name": "screenshots",
    "whisper_model_name": "medium",
    "whisper_model_language": "ru",
    "lecture_build_time_filter_factor": 0.8,
    "lecture_picture_width_inches": 6.0,
    "lecture_font_size_pt": 12,
    "lecture_default_text_color": [
        0,
        0,
        0
    ],
    "lecture_low_confidence_text_color": [
        150,
        0,
        0
    ],
    "word_low_confidence_threshold_percents": 70,
    "save_lecture_to_directory": "",
    "gui_links": [],
    "gui_name": "Tester",
    "gui_hello_message": "\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435!",
    "gui_hello_message_enabled": true,
    "gui_recording_enabled": true,
    "gui_proxy": "",
    "gui_max_event_time_enabled": true,
    "gui_max_event_time_milliseconds": 6000000,
    "gui_zoom_reconnects_enabled": true,
    "gui_zoom_reconnects_max": 2,
    "gui_audio_threshold_dbfs": 0,
    "gui_video_audio_file": "",
    "gui_tabs_current_index": 0
}

Зависимости


Запуск из исходников / сборка из исходников

  • Подробных инструкции пока неть 🙃
  • Но можно попробовать склонировать репозиторий git clone https://github.com/F33RNI/Webinar-hacker
  • Установить пакеты pip install -r requirements.txt --upgrade
  • Установить CUDA 11.7
  • Скачать файл ffmpeg.exe https://ffbinaries.com/downloads в папку с проектом
  • И попробовать запустить приложение python main.py

Участие в разработке

  • Хотите добавить что-то новое / исправить баг? Создайте пул-реквест / issue!

P.S. Проект находится в стадии разработки!