Автоматически генерировать субтитры/закрытые субтитры из видео с помощью распознавания речи?

Вопрос или проблема

У меня есть видео, для которого я хочу создать субтитры. Есть ли программа, которая может выполнить элементарное преобразование речи в текст для того, чтобы

  1. Установить правильное начало/конец каждого отдельного субтитра
  2. Создать элементарные текстовые субтитры (с использованием какого-либо преобразования речи в текст)

Я знаю о gnome-subtitles. Однако это требует значительных усилий, чтобы создать эти субтитры вручную. Вам нужно самостоятельно выбрать начало и конец каждого предложения.

YouTube обладает вышеупомянутыми функциями (создает элементарные текстовые субтитры с правильной синхронизацией, используя преобразование речи в текст). Однако я предпочел бы не загружать видео на YouTube только для получения субтитров. Возможно ли эффективно сделать субтитры на Ubuntu?

Обновление: Я планирую использовать только субтитры в формате .srt и не нужно встраивать их в видео. Мое главное требование – чтобы программа автоматически находила начало/конец каждого предложения, чтобы я мог написать текст в них.

Обновление #2: Существует программное обеспечение для преобразования речи в текст для Linux с пакетом CMU Sphinx. Возможно использовать CMU Sphinx с программой для субтитров согласно этой записи. Кроме того, один инструмент для субтитров знает о этой функции CMU Sphinx (веб-ориентированный инструмент), однако в последнем исходном коде нет ссылки на то, что они добавили CMU Sphinx. Пытаемся найти программу, которая использует CMU Sphinx для элементарного преобразования речи в текст (которая также будет устанавливать правильные временные параметры), так как это уже делает YouTube.

У вас есть несколько альтернатив:

YouTube

Для тех, кто готов временно загрузить видео на YouTube (обязательно выбрать язык видео), чтобы получить его субтитры (захват текста, слова): можно извлечь/скачать его с помощью youtube-dl или yt-dlp:

yt-dlp --write-auto-sub \  # Записать автоматически сгенерированный файл субтитров (только YouTube)
  --write-sub \                # Записать файл субтитров
  --sub-lang en,de,es \        # Языки субтитров для скачивания (по желанию) через запятую, используйте --list-subs для доступных языковых тегов
  --convert-subs srt \         # Преобразовать субтитры в другой формат (в данный момент поддерживаются: srt|ass|vtt|lrc)
  -o "~/%(uploader)s/%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s" \  # ШАБЛОН ВЫВОДА
  --skip-download \            # Не скачивать видео
  --ignore-errors vidURLorID   # Продолжать при ошибках загрузки, например, чтобы пропустить недоступные видео в плейлисте

В одной строке и в упрощенном варианте:

yt-dlp --write-auto-sub --write-sub --sub-lang en --convert-subs srt --skip-download vidURLorID

Если преобразование не сработало, преобразуйте его с помощью FFmpeg:

ffmpeg -i myTitle.en.vtt output.srt

Чтобы преобразовать из srt в txt:

sed -r -e 's/^\xef\xbb\xbf//' -e 's/\r//' -e 's/^[0-9]*$//' -e '/^[0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]{3} --> [0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]{3}$/d' -e 's/^\s*$//' -e '/^$/d;s/<[^>]*>//g' output.srt | uniq > output.txt

Связанный ответ.

Whisper (OpenAI)

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

Некоторые инструменты на основе Whisper можно получить из этого замечательного списка.

Live Captions

Live Captions — это приложение, которое предоставляет живые субтитры для рабочего стола Linux.

В настоящее время поддерживается только английский язык. Другие языки могут давать неразборчивый или плохой фонетический перевод.

На Flathub.

Kdenlive

Kdenlive имеет Автоматические субтитры/Функцию преобразования речи в текст (опционально с использованием Whisper).

ОБНОВЛЕНИЕ:

autosub больше не поддерживается. Можно использовать другой форк с GUI под названием pyTranscriber.


Вы можете использовать эту командную утилиту

Autosub — это утилита для автоматического распознавания речи и генерации субтитров. Она принимает видео или аудиофайл в качестве входных данных, выполняет детекцию голосовой активности, чтобы найти речевые области, делает параллельные запросы к Google Web Speech API, чтобы генерировать транскрипции для этих областей, (по желанию) переводит их на другой язык и в конечном итоге сохраняет полученные субтитры на диск.

https://github.com/agermanidis/autosub/

Пользователи Python3, выполните следующее:

pip install git+https://github.com/BingLingGroup/autosub.git@alpha

Убедитесь, что у вас установлен ffmpeg.

Я не нашел способа заставить программу для субтитров автоматически добавлять элементарные субтитры, анализируя голоса в видео.

Поэтому альтернатива, которую я использую, заключается в том, что

  1. Загрузить видео на YouTube (например, в приватный доступ) и использовать встроенную функцию для автоматического создания элементарных субтитров.

Затем,

  1. Добавить видео на http://www.universalsubtitles.org/ и вручную создать временные рамки для каждого предложения, если автоматизированный способ в YouTube не сработал или предложения отсутствуют.
  2. Использовать GNOME Subtitles (найденный в Центре Программного Обеспечения), чтобы очистить субтитры и исправить временные параметры.

Лично мне нравится Gnome Subtitles, он доступен в репозиториях.

sudo apt-get install gnome-subtitles

Я использовал Aegisub на Windows несколько лет назад и был им действительно доволен. Похоже, он доступен для Linux. Он довольно интуитивно понятен.

Aegisub создает только файл субтитров, например, файл .srt. Чтобы совместить видео и субтитры для создания встраиваемого субтитра, вам все равно нужно использовать вторую программу.
На Windows я использовал VirtualDub, но он недоступен для Linux. Вы можете использовать VLC для этого в Linux:

Создайте свои субтитры в Aegisub, сохранив их как обычный файл .ass.

Используйте VLC, чтобы добавить этот дорожку субтитров к вашему видео. Субтитры -> Добавить файл субтитров…

Настройте стиль отображения субтитров и параметры, чтобы они отображались так, как вам нравится. Инструменты -> Настройки -> Субтитры/OSD

Теперь вы можете посмотреть видео, чтобы убедиться, что субтитры отображаются так, как вы предполагаете. Например, я могу проверить определенные субтитры, которые я указал в Aegisub, чтобы отображать в верхней части экрана, а не в нижней.

Вывод будет идентичен тому, как он выглядит сейчас, так что убедитесь, что все в порядке.

  1. Перейдите в Медиа -> Конвертировать/Сохранить… (Ctrl + R).

  2. В разделе Выбор файла добавьте ваш видеофайл. Установите галочку “Использовать файл субтитров” и выберите ваш файл с субтитрами .ass.

  3. Нажмите стрелку вниз на кнопке Конвертировать/Сохранить и выберите Конвертировать…(Alt + O).

  4. В разделе Настройки убедитесь, что опция Конвертировать установлена. Установите опцию Отобразить вывод. Субтитры не добавляются по какой-то причине, если вы не отметите это.

  5. Отредактируйте профиль, чтобы видео и аудио параметры были такими, как вам нужно. В разделе субтитров установите галочку на поле Субтитры и используйте кодек субтитров DVB. Убедитесь, что установили галочку ‘Накладывать субтитры на видео’. Нажмите сохранить.

  6. Введите папку назначения и имя файла в поле Назначение.

  7. Нажмите старт.

Подождите, пока это не завершится, и все. Недостаток этого метода в том, что кодирование происходит в реальном времени с видео, поэтому, если у вас есть 2-часовое видео, это займет 2 часа. Это связано с тем, что установлен флажок “Отобразить вывод”. Но по какой-то причине это работает только в этом случае.

Существуют также другие редакторы субтитров.

Обновление:
Я не помню, чтобы Aegisub имел функционал для автоматической установки начала и конца произнесенного предложения в файле субтитров. И я не вижу упоминания о такой функции где-либо на сайте. Однако с помощью (комбинаций клавиш) довольно легко установить эти времена вручную.

Существует ли даже какая-либо программа, которая имеет такую функцию (в любой ОС)?

Внутри видеоредактора Kdenlive, на верхней панели > проект > субтитры > “Распознавание речи”. Вы должны сначала загрузить языковой пакет с https://alphacephei.com/vosk/models, в Kdenlive перейдите в Настройки > настроить Kdenlive > “Превращение речи в текст”.

Хорошо, я нашел инструмент, который выглядит красиво и похож на редактор субтитров – редактор субтитров (apt-get install subtitleeditor).

Попробовал сравнить его с Gnome Subtitles, редактор субтитров кажется более продвинутым инструментом.

Для KDE хорошим редактором субтитров является subtitlecomposer. Установите его с помощью команды:

sudo apt-get install subtitlecomposer

Speech note стоит упомянуть здесь, так как он бесплатный и может транскрибировать большое количество языков. Он предоставляется как flatpack, так что его установка не составляет труда. В данный момент вам нужно использовать инструмент, такой как mpeg, чтобы извлечь аудио и вввести его, но вы можете первыми внести вклад в полностью открытый исходный код на github…. 😉

Кратко: вскоре это, надеюсь, будет опцией, но мы еще не совсем там.

OpenAI Whisper (полностью офлайн и лицензированный MIT)

Это программное обеспечение упоминалось ранее на: https://askubuntu.com/a/1378514/52975, но я хотел предоставить минимальный исполняемый пример.

Тестировалось на Ubuntu 24.04:

sudo apt install ffmpeg
pipx install openai-whisper==20231117

Пример использования с этим видео: https://commons.wikimedia.org/wiki/File:Goldstone_Apple_Valley_Radio_Telescope_(GAVRT)_Solar_Patrol_(SVS14530).webm

wget -O gavrt.webm https://upload.wikimedia.org/wikipedia/commons/4/45/Goldstone_Apple_Valley_Radio_Telescope_%28GAVRT%29_Solar_Patrol_%28SVS14530%29.webm--2024-08-09
time whisper gavrt.webm

Видео длится 1:16 и в нем женщина говорит на идеальном американском английском на техническую тему. На протяжении всей записи звучит легкая фоновая музыка.

Терминал теперь содержит:

/home/ciro/.local/pipx/venvs/openai-whisper/lib/python3.12/site-packages/whisper/transcribe.py:115: UserWarning: FP16 is not supported on CPU; using FP32 instead                             
  warnings.warn("FP16 is not supported on CPU; using FP32 instead")                                                                                                                            
Определение языка с использованием до первых 30 секунд. Используйте `--language`, чтобы указать язык                                                                                                 
Обнаруженный язык: английский                                                                                                                                                                    

[... транскрипция ...]                                                                                           

реальное время    0m32.569s                                                                                                                                                                             
пользователь    3m40.130s                                                                              
система     0m8.885s

и cwd теперь содержит среди прочего, файл gavrt.srt:

1
00:00:00,000 --> 00:00:05,080
Программа солнечного патруля Гаварт - это программа гелиофизики, нацеленная на граждан

2
00:00:05,080 --> 00:00:09,120
ученых и студентов с 1 по 12 классы как на местном, так и на национальном уровне, а также на уровне всего

3
00:00:09,120 --> 00:00:14,480
мира. Цель солнечного патруля Гаварт — мониторинг активных областей на Солнце для

4
00:00:14,480 --> 00:00:18,120
понимания того, как они связаны с взрывными событиями, которые мы

5
00:00:18,120 --> 00:00:23,100
категоризируем как космическая погода. Участники могут удаленно управлять

6
00:00:23,100 --> 00:00:26,480
телескопом. Таким образом, обычный режим наблюдения с солнечным патрулем Гаварт

7
00:00:26,480 --> 00:00:30,400
предполагает, что классы фактически управляют

8
00:00:30,400 --> 00:00:34,760
телескопом, собирают некоторые данные, а затем создают карты того, как выглядит Солнце

9
00:00:34,760 --> 00:00:39,560
на радиочастотах. Они получают действительно уникальный опыт, который, я

10
00:00:39,560 --> 00:00:43,960
думаю, очень особенный для программы Гаварт, а именно возможность пройти

11
00:00:43,960 --> 00:00:48,280
через научный процесс с самого начала, начиная с этапов

12
00:00:48,280 --> 00:00:52,120
сбора данных, вплоть до обработки этих данных и

13
00:00:52,120 --> 00:00:56,880
интерпретации научных результатов их исследований. Я очень рад, когда

14
00:00:56,880 --> 00:01:00,040
могу управлять радиотелескопом, и мне действительно приятно, когда другие люди также получают

15
00:01:00,040 --> 00:01:04,800
такую же возможность и тот же образовательный процесс.

Удивительно! Транскрипция была идеальной или почти идеальной! А установка/использование — безупречными!

Тестировалось на.

vosk-transcriber

Это удобный CLI для Vosk, протестированный на Ubuntu 24.04, вы можете установить с английской моделью следующим образом:

pipx install vosk==0.3.45
mkdir -p ~/var/lib/vosk
cd ~/var/lib/vosk
wget https://alphacephei.com/vosk/models/vosk-model-en-us-0.22.zip
unzip vosk-model-en-us-0.22.zip
cd -

и затем использовать как:

time vosk-transcriber -m ~/var/lib/vosk/vosk-model-en-us-0.22 -i gavrt.webm -o gavrt.srt -t srt

это заняло:

реальное время    0m26.538s                                                                              
пользователь    0m22.677s                                                                              
система     0m5.617s 

и gavrt.srt содержит:

1
00:00:00,690 --> 00:00:03,030
программа солнечного патруля габберт является

2
00:00:03,030 --> 00:00:05,760
программой гелиофизики, нацеленной на гражданских ученых

3
00:00:05,760 --> 00:00:07,620
и студентов, которые учатся как на местах

4
00:00:07,620 --> 00:00:10,260
на национальном уровне, так и на уровне всего мира. Цель

5
00:00:10,260 --> 00:00:12,960
солнечного контроля габберт — мониторинг

6
00:00:12,990 --> 00:00:14,850
активных областей на солнце, чтобы понять

7
00:00:14,850 --> 00:00:17,610
как они связаны с взрывными

8
00:00:17,610 --> 00:00:20,160
событиями, которые мы классифицируем как космическая погода

9
00:00:20,610 --> 00:00:23,400
участники могут дистанционно управлять и фактически контролировать

10
00:00:23,400 --> 00:00:25,680
телескопом сами. Таким образом, обычный режим наблюдения 

11
00:00:25,680 --> 00:00:27,870
освобождает габберт солнечного патруля от

12
00:00:27,870 --> 00:00:30,420
того, что классы фактически управляют телескопом, собирают 

13
00:00:30,420 --> 00:00:33,330
некоторые данные и затем создают карты того, 

14
00:00:33,360 --> 00:00:35,010
как солнце выглядит

15
00:00:35,010 --> 00:00:37,920
на радиочастотах. Они получают действительно уникальный эксперимент, который, как мне кажется, 

16
00:00:37,920 --> 00:00:39,900
является действительно

17
00:00:39,990 --> 00:00:40,320
ранним

18
00:00:40,320 --> 00:00:42,390
специальным для программы габберт, и

19
00:00:42,390 --> 00:00:44,370
это - возможность пройти через 

20
00:00:44,370 --> 00:00:47,430
научный процесс, начиная с самого начала и 

21
00:00:47,430 --> 00:00:49,830
из этапов сбора данных.

22
00:00:50,160 --> 00:00:51,990
до того, как обработать эти данные

23
00:00:52,080 --> 00:00:55,380
и интерпретировать научные результаты из их исследований.

24
00:00:55,770 --> 00:00:57,120
Я чувствую волнение при каждом действии 

25
00:00:57,120 --> 00:00:58,890
на радиотелескопе и мне очень 

26
00:00:58,890 --> 00:01:00,240
нравится, когда другим людям предоставляется

27
00:01:00,240 --> 00:01:00,450
такая 

28
00:01:00,570 --> 00:01:03,060
возможность и тот же процесс обучения.

29
00:01:04,080 --> 00:01:08,010
и

Таким образом, это явно хуже, чем Whisper.

Протестировано на ноутбуке Lenovo ThinkPad P14s amd.

Ответ или решение

Автоматическая генерация субтитров и закрытых подписей с помощью распознавания речи: Полное руководство для пользователей Ubuntu

Создание субтитров для видео может быть сложной задачей, особенно когда дело доходило до ручного задания времени начала и окончания для каждой реплики. Однако с развитием технологий и программного обеспечения автоматическое создание субтитров стало более доступным. В этой статье мы рассмотрим различные решения для автоматической генерации субтитров на Ubuntu с использованием техники распознавания речи.

Проблема

Как указано в исходном вопросе, вы ищете эффективное решение для автоматического создания субтитров для видео без необходимости загружать его на YouTube. Ваши главные требования включают:

  1. Автоматическое определение времени начала и окончания для каждого субтитра.
  2. Генерация текстовых субтитров с применением технологии распознавания речи.
  3. Поддержка формата (.srt) для легкости использования.

Существующая эко-система программного обеспечения предлагает несколько вариантов.

Возможные решения

1. Whisper от OpenAI

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

Установка и использование:

sudo apt install ffmpeg
pipx install openai-whisper==20231117
wget -O my_video.webm <URL вашего видео>
time whisper my_video.webm

Этот процесс выдаст файл с субтитрами в формате .srt с точными временными метками.

2. Kdenlive

Kdenlive – это мощный видеоредактор, который предлагает встроенную функцию автоматического создания субтитров: Speech to Text. Для этого вам необходимо установить пакет языковой модели.

Инструкции:

  1. Установите Kdenlive:
    sudo apt install kdenlive
  2. Загрузите языковую модель с Vosk.
  3. В Kdenlive перейдите в настройки и добавьте модель.

3. Vosk

Vosk – это еще одно решение, которое поддерживает офлайн распознавание речи на нескольких языках. Оно также предоставляет возможность быстрого создания .srt файлов.

Инструкции по установке:

pipx install vosk==0.3.45
mkdir -p ~/var/lib/vosk
cd ~/var/lib/vosk
wget https://alphacephei.com/vosk/models/vosk-model-en-us-0.22.zip
unzip vosk-model-en-us-0.22.zip
cd -

Затем вы можете использовать следующую команду для создания субтитров:

time vosk-transcriber -m ~/var/lib/vosk/vosk-model-en-us-0.22 -i my_video.webm -o my_video.srt -t srt

4. Autosub

Autosub – это полезная утилита для автоматического распознавания речи и генерации субтитров. Она анализирует видео или аудиофайл и создает субтитры с временными метками, используя Google Web Speech API. Хотя данный проект был несколько недоступен, вы можете использовать его клоны.

Инструкция по установке:

pip install git+https://github.com/BingLingGroup/autosub.git@alpha

После установки запустите Autosub с указанием вашего файла видео или аудио.

Заключение

Описанные выше инструменты представляют собой мощные и эффективные решения для автоматического создания субтитров на Ubuntu. Они значительно уменьшают время, необходимое для ручного задания временных меток, и позволяют сосредоточиться на редактировании и улучшении качества содержания.

Выбор подходящего инструмента будет зависеть от ваших специфических требований, таких как доступные языки, точность распознавания и удобство использования. Мы рекомендуем попробовать Whisper и Kdenlive из-за их высокой точности и простоты в установке.

Дополнительные ресурсы

Используйте эти возможности для улучшения вашего процесса создания видео и получения качественных субтитров без лишних усилий.

Оцените материал
Добавить комментарий

Капча загружается...