транскрибация-русской-и-английской-речи-с-помощью-whisper

Транскрибация русской и английской речи с помощью Whisper и Python

Пишем скрипт, который автоматически транскрибирует русскую и английскую речь из видеофайлов в текст с использованием модели Whisper от OpenAI и Python.

Что такое Whisper?

Whisper — это мощная модель от OpenAI, предназначенная для распознавания речи. Она способна обрабатывать аудиофайлы и преобразовывать их в текст, поддерживая множество языков и акцентов. Модель может быть использована для различных задач, включая транскрибацию видео.

Установка библиотек

Какие версии библиотек нужны? Зайдем на страницу загрузки pytorch и узнаем версии библиотек.

Установка PyTorch
Установка PyTorch

Нам понадобятся torch 12.4 и CUDA 12.4 ^_^

Установка CUDA

Скачаем CUDA 12.4 на странице загрузки и затем установим

Установка CUDA 12.4

Установка cuDNN

Скачаем cuDNN 9.4.0 на странице загрузки и затем установим

Установка cuDNN

Установка torch, torchvision, torchaudio

Установим torch, torchvision, torchaudio с помощью команды

Bash
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124

Установка whisper

Установим whisper с помощью команды

Bash
python -m pip install git+https://github.com/openai/whisper.git

Код

Функция transcribe

Эта функция отвечает за транскрипцию аудио из видеофайла в текст.

Python
def transcribe(video_file, language, beam_size, patience, initial_prompt):
    result = whisper_model.transcribe(
        video_file,
        language=language,
        beam_size=beam_size,
        patience=patience,
        initial_prompt=initial_prompt
    )
    return result["segments"]
  • Параметры:
    • video_file: Путь к видеофайлу, который необходимо транскрибировать.
    • language: Язык транскрипции (например, en для английского).
    • beam_size: Определяет количество путей, которые алгоритм поиска будет рассматривать одновременно при генерации текста.
    • patience: Определяет, насколько долго алгоритм должен продолжать поиск, прежде чем принять окончательное решение
    • initial_prompt: Начальная подсказка, которая может помочь модели лучше понять контекст транскрипции.

Внимание!
Увеличение размера beam_size (10 и выше) приводит к тому, что Whisper «забывает» транскрибировать некоторые предложения.

Функция create_txt

Эта функция сохраняет транскрибированные сегменты текста в текстовый файл.

Python
def create_txt(segments, output_file):
    with open(output_file, 'w', encoding='utf-8') as f:
        for segment in segments:
            f.write(f"{segment['text']}\n")

Функция process_video_file

Основная функция для обработки видеофайла, которая координирует процесс транскрипции и сохранения результата.

Python
def process_video_file(video_file_path, language, beam_size, patience, initial_prompt):
    try:
        print(f"Processing video file: {video_file_path}")

        transcribed_segments = transcribe(video_file_path, language=language, beam_size=beam_size,
                                          patience=patience, initial_prompt=initial_prompt)

        # Сохраняем транскрибацию в TXT файл
        transcription_txt = os.path.splitext(video_file_path)[0] + '_transcription.txt'
        create_txt(transcribed_segments, transcription_txt)

        print(f"TXT file created successfully: {transcription_txt}")

    except Exception as e:
        print(f"Error processing {video_file_path}: {str(e)}")

Полный код

Полный код доступен в репозитории на Гитхабе.