it-swarm.com.ru

Как извлечь транскрипт с субтитрами из видео на YouTube?

Можно ли извлечь транскрипт с субтитрами из видео Youtube?

У нас есть более 200 веб-трансляций на YouTube, и каждый из них не менее одного часа. Youtube закрыл заголовок для всех видео, но, похоже, пользователи не могут его получить.

Я попробовал URL в этом блоге, но он не работает с нашими видео.

http://googlesystem.blogspot.com/2010/10/download-youtube-captions.html

Спасибо

39
Minghui Yu

В следующем документе сказано, что только владелец канала может сделать это через стандартный интерфейс YouTube: https://developers.google.com/youtube/2.0/developers_guide_protocol_captions?hl=en

Дешевое исправление: Вы можете нажать на кнопку «интерактивный транскрипт» - и скопировать содержимое таким образом…. Конечно, вы потеряете миллисекунды таким образом.

Чрезвычайно дешевое исправление: Общая учетная запись YouTube - , Так что несколько человек могут редактировать и загружать файлы подписей.

Сложное решение: API youtube позволяет загружать и выгружать файлы субтитров через HTTP ... Вы можете написать приложение API YouTube для предоставления пользовательского интерфейса браузера для выгрузки или загрузки для ЛЮБОГО пользователя или отдельных пользователей.

Вот пример проекта для этого в Java http://apiblog.youtube.com/2011/01/youtube-captions-uploader-web-app.html

Вот очень простой пример рабочей загрузки для всех: http://yt-captions-uploader.appspot.com/

15
Peter Buchmann

Вот как получить стенограмму видео на YouTube (если доступно):

  • Перейдите на YouTube и откройте видео по вашему выбору. 
  • Нажмите кнопку «Дополнительные действия» (3 горизонтальные точки), расположенную рядом с кнопкой «Поделиться».
  • Нажмите «Открыть стенограмму»

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

Источник: http://ccm.net/faq/40644-youtube-how-to-get-the-transcript-of-a-video

25
Will

Вы можете просматривать/копировать/скачивать временный кодированный XML-файл с субтитрами YouTube, открыв

http://video.google.com/timedtext?lang=[LANGUAGE]&v=[YOUTUBE VIDEO IDENTIFIER]

Например, http://video.google.com/timedtext?lang=pt&v=WSVKbw7LC2w

ПРИМЕЧАНИЕ: этот метод не загружает автоматически сгенерированные субтитры, даже если вы правильно понимаете язык (возможно, есть специальный код для автоматически сгенерированных языков).

14
tony gil

(Обязательно, «это, вероятно, внутренний интерфейс youtube.com и может сломаться в любое время»)

Вместо ссылки на другой инструмент, который делает это, вот ответ на вопрос «как это сделать»

Я использовал fiddler для проверки HTTP-трафика youtube.com, и есть ответ от /api/timedtext, который содержит информацию о закрытой подписи в виде XML.

Кажется, что ответ такой:

    <p t="0" d="5430" w="1">
        <s p="2" ac="136">we&#39;ve</s>
        <s t="780" ac="252"> got</s>
    </p>
    <p t="2280" d="7170" w="1">
        <s ac="243">we&#39;re</s>
        <s t="810" ac="233"> going</s>
    </p>

означает, что во время 0 - это слово we've, а во время 0+780 - это слово got, а во время 2280+810 - это слово going и т. д. Это время в миллисекундах, поэтому для времени 3090 вы хотите добавить &t=3 к URL-адресу.

Вы можете использовать любой инструмент для сшивания XML во что-то читаемое, но вот мой Power BI Desktop скрипт для поиска слов типа «привилегия»:

let
    Source = Xml.Tables(File.Contents("C:\Download\body.xml")),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Attribute:format", Int64.Type}}),
    body = #"Changed Type"{0}[body],
    p = body{0}[p],
    #"Changed Type1" = Table.TransformColumnTypes(p,{{"Attribute:t", Int64.Type}, {"Attribute:d", Int64.Type}, {"Attribute:w", Int64.Type}, {"Attribute:a", Int64.Type}, {"Attribute:p", Int64.Type}}),
    #"Expanded s" = Table.ExpandTableColumn(#"Changed Type1", "s", {"Attribute:ac", "Attribute:p", "Attribute:t", "Element:Text"}, {"s.Attribute:ac", "s.Attribute:p", "s.Attribute:t", "s.Element:Text"}),
    #"Changed Type2" = Table.TransformColumnTypes(#"Expanded s",{{"s.Attribute:t", Int64.Type}}),
    #"Removed Other Columns" = Table.SelectColumns(#"Changed Type2",{"s.Attribute:t", "s.Element:Text", "Attribute:t"}),
    #"Replaced Value" = Table.ReplaceValue(#"Removed Other Columns",null,0,Replacer.ReplaceValue,{"s.Attribute:t"}),
    #"Filtered Rows" = Table.SelectRows(#"Replaced Value", each [#"s.Element:Text"] <> null),
    #"Added Custom" = Table.AddColumn(#"Filtered Rows", "Time", each [#"Attribute:t"] + [#"s.Attribute:t"]),
    #"Filtered Rows1" = Table.SelectRows(#"Added Custom", each ([#"s.Element:Text"] = " privilege" or [#"s.Element:Text"] = " privileged" or [#"s.Element:Text"] = " privileges" or [#"s.Element:Text"] = "privilege" or [#"s.Element:Text"] = "privileges"))
in
    #"Filtered Rows1"
4
Carl Walsh

Выберите Open Transcript из раскрывающегося списка ... справа от голоса вверх/вниз и поделитесь ссылками.

Это откроет прокручиваемый div Transcript на правой стороне.

Затем вы можете использовать Copy. Обратите внимание, что вы не можете использовать Select All, но нужно щелкнуть верхнюю строку, затем прокрутить вниз, используя большой палец прокрутки, а затем нажать Shift и щелкнуть последнюю строку.

Обратите внимание, что вы также можете искать в этом тексте, используя обычный поиск по веб-странице.

2
PeterVermont

Вы можете скачать потоковые субтитры с YouTube с KeepSubs DownSub

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

1
Palimondo

Другой вариант - использовать youtube-dl:

youtube-dl --skip-download --write-auto-sub $youtube_url

Формат по умолчанию - vtt, а другой доступный формат - ttml (--sub-format ttml).

--write-sub
       Write subtitle file

--write-auto-sub
       Write automatically generated subtitle file (YouTube only)

--all-subs
       Download all the available subtitles of the video

--list-subs
       List all available subtitles for the video

--sub-format FORMAT
       Subtitle format, accepts formats preference, for example: "srt" or "ass/srt/best"

--sub-lang LANGS
       Languages of the subtitles to download (optional) separated by commas, use --list-subs for available language tags

Вы можете использовать ffmpeg для преобразования файла субтитров в другой формат:

ffmpeg -i input.vtt output.srt
0
nisetama

Я просто сделал это легко вручную, открыв стенограмму в начале видео, щелкнув левой кнопкой мыши и перетащив маркер времени 00:00 с нажатой клавишей Shift на несколько строк в начале.

Затем я продвинул видео ближе к концу. Когда видео остановилось, я щелкнул конец последнего предложения, удерживая клавишу Shift еще раз. С помощью CTRL-C я скопировал текст в буфер обмена и вставил его в редактор.

Готово!

Предостережение: Убедитесь, что RDP-Windows не использует общий буфер обмена или программное обеспечение, такое как Teamviewer, запущено одновременно, так как эта процедура переполнит их буферы, где копируется большое количество текста.

0
Carey G. Butler