Вопрос или проблема
У меня есть видео, для которого я хочу создать субтитры. Есть ли программа, которая может выполнить элементарное преобразование речи в текст для того, чтобы
- Установить правильное начало/конец каждого отдельного субтитра
- Создать элементарные текстовые субтитры (с использованием какого-либо преобразования речи в текст)
Я знаю о 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.
Я не нашел способа заставить программу для субтитров автоматически добавлять элементарные субтитры, анализируя голоса в видео.
Поэтому альтернатива, которую я использую, заключается в том, что
- Загрузить видео на YouTube (например, в приватный доступ) и использовать встроенную функцию для автоматического создания элементарных субтитров.
Затем,
- Добавить видео на http://www.universalsubtitles.org/ и вручную создать временные рамки для каждого предложения, если автоматизированный способ в YouTube не сработал или предложения отсутствуют.
- Использовать 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, чтобы отображать в верхней части экрана, а не в нижней.
Вывод будет идентичен тому, как он выглядит сейчас, так что убедитесь, что все в порядке.
Перейдите в Медиа -> Конвертировать/Сохранить… (Ctrl + R).
В разделе Выбор файла добавьте ваш видеофайл. Установите галочку “Использовать файл субтитров” и выберите ваш файл с субтитрами .ass.
Нажмите стрелку вниз на кнопке Конвертировать/Сохранить и выберите Конвертировать…(Alt + O).
В разделе Настройки убедитесь, что опция Конвертировать установлена. Установите опцию Отобразить вывод. Субтитры не добавляются по какой-то причине, если вы не отметите это.
Отредактируйте профиль, чтобы видео и аудио параметры были такими, как вам нужно. В разделе субтитров установите галочку на поле Субтитры и используйте кодек субтитров DVB. Убедитесь, что установили галочку ‘Накладывать субтитры на видео’. Нажмите сохранить.
Введите папку назначения и имя файла в поле Назначение.
Нажмите старт.
Подождите, пока это не завершится, и все. Недостаток этого метода в том, что кодирование происходит в реальном времени с видео, поэтому, если у вас есть 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. Ваши главные требования включают:
- Автоматическое определение времени начала и окончания для каждого субтитра.
- Генерация текстовых субтитров с применением технологии распознавания речи.
- Поддержка формата (.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
. Для этого вам необходимо установить пакет языковой модели.
Инструкции:
- Установите Kdenlive:
sudo apt install kdenlive
- Загрузите языковую модель с Vosk.
- В 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 из-за их высокой точности и простоты в установке.
Дополнительные ресурсы
Используйте эти возможности для улучшения вашего процесса создания видео и получения качественных субтитров без лишних усилий.