Вопрос или проблема
DNNs — это огромные алгоритмы, требующие большого объема данных, особенно двунаправленные LSTM. Для моделей распознавания речи существует нехватка голосовых корпусов для конкретных языков/акцентов. Однако YouTube является огромной библиотекой для этого.
Мне нужно использовать какой-то скрипт/программное обеспечение, которое автоматически будет загружать видео с YouTube (возможно, только аудио) и соответствующие субтитры, а затем разбивать их на клипы по 20 секунд, чтобы их можно было использовать в качестве обучающего речевого корпуса.
Есть ли способ скачать субтитры с YouTube? И given an audio and the scripts, как мне разбить аудио на клипы по 20 секунд и чтобы эти клипы были включены в транскрипцию?
yt-dlp (или youtube-dl или другой форк youtube-dl)
- Может скачивать видео и/или аудио и/или субтитры и/или другие данные с YouTube и/или многих других сайтов.
- Легко выбирать видео, на которые вы хотите нацелиться. Обратите внимание на такие опции, как “–match-filter”, чтобы фильтровать по почти любому атрибуту, и “–batch-file”, который загрузит список URL-адресов из указанного файла.
- Легко получать большую часть информации без скачивания видео. Например, смотрите “–skip-download”.
- Множество опций, специально предназначенных для субтитров: смотрите ниже. Особенно обратите внимание на то, что вы можете различать автоматические субтитры, которые создаются машиной, и файлы, которые были загружены человеком, что не означает, что они точные или созданы человеком, просто они не были размещены в этом месте YouTube.
- Вы можете отказаться от видео и оставить только аудио. Например, смотрите “–extract-audio”.
Опции субтитров:
--write-subs Записать файл субтитров
--no-write-subs Не записывать файл субтитров (по умолчанию)
--write-auto-subs Записать файл автоматически сгенерированных субтитров
(псевдоним: --write-automatic-subs)
--no-write-auto-subs Не записывать автоматически сгенерированные субтитры
(по умолчанию) (псевдоним: --no-write-automatic-subs)
--list-subs Список доступных субтитров для каждого видео.
Симуляция, если не используется --no-simulate
--sub-format FORMAT Формат субтитров, принимает форматы
предпочтений, например: "srt" или
"ass/srt/best"
--sub-langs LANGS Языки субтитров для загрузки (может
быть регулярным выражением) или "all", разделенные запятыми.
(Например: --sub-langs "en.*,ja") Вы можете префиксировать
код языка знаком "-" для исключения его
из запрашиваемых языков. (Например:
--sub-langs all,-live_chat) Используйте --list-subs
для получения списка доступных языковых тегов
FFmpeg
- С небольшим умом вы должны быть в состоянии создать отрезки аудио произвольной длины и соответствующие им субтитры. Например, смотрите эту страницу, описывающую, как удалить первые пять минут видеофайла и удалить первые пять минут соответствующего файла субтитров.
- Исключительно хорошо подходит для конвертации медиа в нужный вам кодек.
- При правильной настройке (что не всегда очевидно) хорошо создает файлы с точной длиной времени.
- Быстрый. Бесплатный. С открытым исходным кодом. Мультиплатформенный. Расширяемый.
Этот вопрос три года назад, так что я предполагаю, что автор уже нашел много вариантов. Но, возможно, это поможет другим людям.
Ответ или решение
Использование YouTube в качестве набора данных для распознавания речи: детальное руководство
Распознавание речи — это сложный и ресурсоемкий процесс, особенно если речь идет о глубоких нейронных сетях, таких как двунаправленные LSTM. Одна из распространенных проблем в этой области заключается в недостатке голосовых корпусов для отдельных языков и акцентов. Однако YouTube предлагает огромный библиотечный ресурс, который можно использовать для создания качественного обучающего набора данных.
Шаг 1: Загрузка аудио и субтитров с YouTube
Для автоматизации процесса загрузки видео из YouTube, а также соответствующих субтитров, можно использовать такие инструменты, как yt-dlp или его предшественник youtube-dl. Эти утилиты поддерживают командную строку и предлагают массу возможностей для настройки загрузки.
Команды для загрузки:
-
Для загрузки только аудио:
yt-dlp --extract-audio --audio-format mp3 <URL видео>
-
Для загрузки субтитров:
yt-dlp --write-subs --sub-langs en --skip-download <URL видео>
-
Для автоматической генерации субтитров, если они не были загружены:
yt-dlp --write-auto-subs <URL видео>
Эти команды позволят вам получить аудиотрек и сопутствующие субтитры в формате, удобном для дальнейшей обработки.
Шаг 2: Сегментация аудио и сопоставление с текстом
Для обрезки загруженных аудиофайлов на 20-секундные клипы, а также для синхронизации этих клипов с текстом из субтитров, вы можете использовать FFmpeg. Этот мощный инструмент позволяет обрезать и конвертировать аудио с точностью до миллисекунд.
Пример команды для обрезки:
ffmpeg -i input.mp3 -ss 00:00:00 -t 00:00:20 -c copy clip1.mp3
Где:
-i input.mp3
— входной файл.-ss
— время начала.-t
— длительность сегмента.
Сопоставление сегментов с субтитрами
Для ассоциации обрезанного звука с его субтитрами можно воспользоваться Python скриптом, который будет автоматически обрабатывать файлы .srt
(или другого формата) и корректно создавать новые субтитры для каждого 20-секундного сегмента. В скрипте будут заданы диапазоны времени для каждого сегмента, что обеспечит точную синхронизацию.
Заключение
Используя сочетание yt-dlp и FFmpeg, вы сможете создать качественный обучающий корпус для моделей распознавания речи, получив аудио и текстовые данные из видео на YouTube. Этот процесс требует определенных технических навыков, но предоставляет огромные возможности для обучения специфическим языковым моделям.
Не забывайте знакомиться с политиками использования данных платформ и соблюсти авторские права при использовании загруженного контента. Это не только соответствует этическим стандартам, но и избегает потенциальных правовых последствий.