84

YouTube 動画からクローズド キャプションのトランスクリプトを抽出することはできますか?

YouTube には 200 以上の Web キャストがあり、それぞれが少なくとも 1 時間の長さです。YouTube はすべての動画にクローズド キャプションを付けていますが、ユーザーはそれを入手する方法がないようです。

このブログの URL を試しましたが、私たちの動画では機能しません。

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

4

10 に答える 10

78

YouTube ビデオのトランスクリプトを取得する方法は次のとおりです (利用可能な場合)。

  • YouTube にアクセスして、選択したビデオを開きます。
  • [共有] ボタンの横にある [その他の操作] ボタン (3 つの水平ドット) をクリックします。
  • 「トランスクリプトを開く」をクリック

構文は少しばかげているかもしれませんが、これはかなり良い解決策です。

ソース: http://ccm.net/faq/40644-youtube-how-to-get-the-transcript-of-a-video

于 2016-02-01T14:37:58.260 に答える
58

別のオプションは、次を使用すること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

VTT 字幕では、各字幕テキストが 3 回繰り返され、8 行ごとに新しい字幕テキストがあります。

WEBVTT
Kind: captions
Language: en

00:00:01.429 --> 00:00:04.249 align:start position:0%

ladies<00:00:02.429><c> and</c><00:00:02.580><c> gentlemen</c><c.colorE5E5E5><00:00:02.879><c> I'd</c></c><c.colorCCCCCC><00:00:03.870><c> like</c></c><c.colorE5E5E5><00:00:04.020><c> to</c><00:00:04.110><c> thank</c></c>

00:00:04.249 --> 00:00:04.259 align:start position:0%
ladies and gentlemen<c.colorE5E5E5> I'd</c><c.colorCCCCCC> like</c><c.colorE5E5E5> to thank
 </c>

00:00:04.259 --> 00:00:05.930 align:start position:0%
ladies and gentlemen<c.colorE5E5E5> I'd</c><c.colorCCCCCC> like</c><c.colorE5E5E5> to thank
you<00:00:04.440><c> for</c><00:00:04.620><c> coming</c><00:00:05.069><c> tonight</c><00:00:05.190><c> especially</c></c><c.colorCCCCCC><00:00:05.609><c> at</c></c>

00:00:05.930 --> 00:00:05.940 align:start position:0%
you<c.colorE5E5E5> for coming tonight especially</c><c.colorCCCCCC> at
 </c>

00:00:05.940 --> 00:00:07.730 align:start position:0%
you<c.colorE5E5E5> for coming tonight especially</c><c.colorCCCCCC> at
such<00:00:06.180><c> short</c><00:00:06.690><c> notice</c></c>

00:00:07.730 --> 00:00:07.740 align:start position:0%
such short notice


00:00:07.740 --> 00:00:09.620 align:start position:0%
such short notice
I'm<00:00:08.370><c> sure</c><c.colorE5E5E5><00:00:08.580><c> mr.</c><00:00:08.820><c> Irving</c><00:00:09.000><c> will</c><00:00:09.120><c> fill</c><00:00:09.300><c> you</c><00:00:09.389><c> in</c><00:00:09.420><c> on</c></c>

00:00:09.620 --> 00:00:09.630 align:start position:0%
I'm sure<c.colorE5E5E5> mr. Irving will fill you in on
 </c>

00:00:09.630 --> 00:00:11.030 align:start position:0%
I'm sure<c.colorE5E5E5> mr. Irving will fill you in on
the<00:00:09.750><c> circumstances</c><00:00:10.440><c> that's</c><00:00:10.620><c> brought</c><00:00:10.920><c> us</c></c>

00:00:11.030 --> 00:00:11.040 align:start position:0%
<c.colorE5E5E5>the circumstances that's brought us
 </c>

これにより、VTT 字幕がより単純な形式に変換されます。

sed '1,/^$/d' *.vtt| # remove the lines at the top of the file
sed 's/<[^>]*>//g'| # remove tags
awk -F. 'NR%4==1{printf"%s ",$1}NR%4==3' | # print each new subtitle text and its start time without milliseconds
awk NF\>1 # remove lines with only one field

出力:

00:00:01 ladies and gentlemen I'd like to thank
00:00:04 you for coming tonight especially at
00:00:05 such short notice
00:00:07 I'm sure mr. Irving will fill you in on
00:00:09 the circumstances that's brought us

私がテストしたビデオの約 10% (たとえばp9M3shEU-QMや などaE05_REXnBc) では、前のテキストの 8 行後ではなく 12 行後に字幕テキストが表示されることがあります。私の回避策は、4 行ごとに印刷することですが、フィールドが 1 つしかない空の行を削除することです。

以下は、1 つ以上の動画、プレイリスト、またはチャンネルの ID または URL を引数として受け取る関数です。

cap()(printf %s\\n "${@-$(cat)}"|parallel -j10 -q youtube-dl -i --skip-download --write-auto-sub -o '%(upload_date)s.%(title)s.%(uploader)s.%(id)s.%(ext)s' --;for f in *.vtt;do sed '1,/^$/d' -- "$f"|sed 's/<[^>]*>//g'|awk -F. 'NR%4==1{printf"%s ",$1}NR%4==3'|awk NF\>1>"${f%.vtt}";rm -- "$f";done)

上記の関数を使用してチャンネルまたはプレイリストのすべての動画をダウンロードする場合、-i( --ignore-errors) オプションが必要になることがありyoutube-dlます。これは、単一の動画のダウンロード中にエラーが発生した場合に がエラーで終了しないためです。

于 2019-02-22T01:06:50.310 に答える
22

にアクセスして、YouTube のクローズド キャプション ファイルのタイムコード化された xml ファイルを表示/コピー/ダウンロードできます。

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

例えばhttp://video.google.com/timedtext?lang=pt&v=WSVKbw7LC2w

注: この方法では、適切な言語を取得したとしても、自動生成されたクローズド キャプションはダウンロードされません (自動生成された言語用の特別なコードがある可能性があります)。

于 2017-04-27T14:28:08.993 に答える
20

次のドキュメントでは、チャネルの所有者のみが標準の youtube インターフェースを介してこれを行うことができると述べています: https://developers.google.com/youtube/2.0/developers_guide_protocol_captions?hl=en

安価な修正: 「インタラクティブなトランスクリプト」ボタンをクリックして、この方法でコンテンツをコピーできます。もちろん、この方法でミリ秒を失います。

非常に安価な修正: 複数の人がキャプション ファイルを編集およびアップロードできるように、YouTube アカウントを共有します。

困難な解決策: youtube API を使用すると、HTTP 経由でキャプション ファイルをダウンロードおよびアップロードできます。任意のユーザーまたは特定のユーザーにアップロードまたはダウンロードするためのブラウザー ユーザー インターフェイスを提供する youtube API アプリケーションを作成できます。

これは、Java http://apiblog.youtube.com/2011/01/youtube-captions-uploader-web-app.htmlのサンプル プロジェクトです。

これは、誰にとっても機能するアップロードの非常に簡単な例です: http://yt-captions-uploader.appspot.com/

于 2012-06-13T10:53:23.910 に答える
9

YouTube からストリーミング字幕をダウンロードするには、キープサブ DownSubおよびSaveSubs

自動トランスクリプトまたは著者提供のクローズ キャプションから選択できます。また、Google 翻訳を使用して、英語の字幕を他の言語に自動的に翻訳することもできます。

于 2015-04-20T14:10:01.703 に答える
4

2020年6月の時点でYouTubeビデオが更新されているため、非常に簡単です

  1. 好き/嫌いボタンの横にある 3 つのドットを選択して、さらにメニュー オプションを開きます
  2. 「翻訳を追加」を選択
  3. 言語を選択する
  4. 必要に応じて自動生成をクリックします
  5. [アクション] > [ダウンロード] をクリックします

.sbv ファイルを取得します

于 2020-06-16T15:14:39.800 に答える
0

ビデオの冒頭でトランスクリプトを開き、左クリックして時刻 00:00 マーカーをドラッグし、最初の数行にわたってシフトキーを押して、これを手動で簡単に行うことができました。

次に、ビデオを最後近くまで進めました。ビデオが停止したとき、もう一度シフトキーを押しながら最後の文の終わりをクリックしました. CTRL-C を使用して、テキストをクリップボードにコピーし、エディターに貼り付けました。

終わり!

警告: クリップボードを共有する RDP-Windows や Teamviewer などのソフトウェアが同時に実行されていないことを確認してください。この手順では、大量のテキストがコピーされるバッファがオーバーフローします。

于 2018-06-15T18:31:11.030 に答える