英語教材自作:字幕付きyoutube動画をDIGAに(不完全ネタ)

作業が大仰な割には「やりたいこと」は単純。いや、「やりたいこと」に比して作業が大仰、なのか。

2017-12-15 追記: 以下参照:

ダウンロードという行為そのものが youtube の利用規約に反することを知りませんでした。(なお、ダウンロードするだけで著作権法違反となる、という話ではない。)以下一応読めるようにはしておくけれど、出来れば読まないで。

英語教材自作:字幕付きyoutube動画をDIGAに(不完全ネタ)

長い前置き

この記事の「不完全ネタ」の意味は、「ほんとうにやりたいこと」までいけてないから。ただ、1/3は満足は出来ている。

英語のリスニングのレベルにもよると思うけれど、(特にリスニングの)英語教材の「理想」は多分こうだ:

  1. 中身は全て英語 (というよりは「日本語を喋らない」)
  2. 英語字幕が付いている (リスニングの答え合わせのために不可欠だが、おそらくリスニングよりもリーディングが鍛えられる)
  3. 英語字幕を ON/OFF 出来る
  4. 吹き替えもあるとベスト (先に内容理解するため)

ところが、今回の主題の youtube 動画に限らず市販のコンテンツですら、特に「英語字幕」が付いているものはかなり少ない。ん…、もちろん youtube では探せばたくさんあるが、当たり前だがネイティブな英語話者が英語字幕を必要とするわけはないのであって、(使い物にならない)「自動翻訳」のものはともかくとして、とにかく比率としては決して多くない。

英語字幕はないが日本語吹き替えの付いているもの、ということならば、Natinal Geographic の DVD は楽しくて良いし、あるいは地球ドラマチックが二ヶ国語で英語の場合はこれも教材として良い。だけれど今欲しいのはまさに「英語字幕」だ、とするならば、これは書店や DVD ショップなんかに行ったところでお目当てのものは手に入らない。いや…、「選べないものが選べます、きゃーすてき」。つまり「くそつまらない(自分にまったく興味がない)学習用教材」しか手に入らない、と言ったほうが良いか。実際探してみりゃわかるよ。ディズニーやらハリーポッターが好きで好きで死にそうならともかく、そういったものに興味がないワタシのようなものにとっては、「苦痛な教材」しか売ってない。

そういうわけで youtube 動画、ということになるのだけれども。

要はこういうことだわ:

youtube なインターフェイスで視聴するのは苦痛 (もしくは→※)

「苦痛」は色々あるでしょう。マウス操作で、というのもあるし、いわゆる「部分リピート」みたいなことが出来ないストレスもあるし。もちろんネットワークの状態に影響されるのもキツいでしょ。DIGA に取り込む以前に、「ダウンロードして視聴」だけでも価値はあるわよね、と。

※個人的に問題だと思うのが、「パソコンで youtube で」という視聴方法が「気が散る」ことだと思っている。プレイリストも気が散る要因だし。それと「気に入ったものを何度も見る」「気に入ったもの「たち」を何度も見る」のには向いてないと思う。youtube がどうしたって「あなたを誘導しようとする」から。(もちろん CM が邪魔になることもある。)

なので DIGA に取り込んで観たい、つーわけだが、「DIGAに、ダウンロードした YouTube 動画を取り込む」ネタでは不足したのであった…。

これまでも出来ていた範囲で頑張る

DIGAに、ダウンロードした YouTube 動画を取り込む」を書いた時点では動画のダウンロードは Video Downloader Ultimate を使ってたのね。

例えば youtube で「documentary english subtitles」なんて検索をかける。英語字幕がまったく入ってないのさえもヒットしてしまう時点で相当ストレスだけれど、「埋め込み字幕」のものも結構見つかる。「埋め込み字幕」といってるのは、「hurdsub」だとか「hardcoded subtitile」なんて呼ばれたりするヤツ。つまりは「OFF は出来ない」タイプのヤツ。当然このタイプは字幕も画像の一味として埋め込まれてるわけだから、「DIGAに、ダウンロードした YouTube 動画を取り込む」の知識のまんまでいい。youtube のまま見てても DIGA に取り込んでもどっちも「OFF出来ない」と言えるし、「字幕が DIGA に取り込んでも読める」とも言える。

そもそも DIGA に取り込むのは「一倍速」なこともあって、ちょいちょい面白そうなものを見つけては「寝る際に取り込み」なんてことをして後日じっくり視聴、てのでもそこそこ集めることは出来た。

けれどもやはり…「埋め込みでない字幕」、これは youtube のインターフェイスでは「CC」(closed caption)マークが付いているヤツで…どう考えてもこっちのタイプの方が圧倒的に多いわけね。そりゃもったいないわけですよ。

でそれ、「そのまま食べれるの?」。食べれません。Video Downloader Ultimate は字幕は持ってきてくれないんだなぁ…。

youtube で「CC」なタイプのを…

このタイプの字幕は「softsub」なんて呼ぶらしい。字幕用ファイルは動画ファイルとは別管理のファイルになっていて、最もメジャーな形式として srt と ass があるけれど、youtube は「アップロード時は様々なフォーマット形式を受け入れ、管理(ダウンロード出来るもの)は独自(?)の XML」、なんですと。なんにせよ別途ダウンロードせねばならん。

例としてこの対応を見てみて:

最後のヤツが件の字幕ファイル…。これだけで目的のもの、て人もいると思う。テキストを全部「読むだけぇ」したい人もおろう? けど普通はそうではなくて、「動画の字幕として」使いたいわけですな。なんだけど、この XML、どうやら標準ではないようで、「字幕を扱えるビューワ」が扱えるものではない、らしい、たぶん「今のところ」。上の方で書いたように、一番メジャーなフォーマットは srt と ass なので、何かしらオフラインで使いたければ変換しなければならない。

シンプルな XML だし、srt はそれよりさらに簡単な形式だもんで、探してたら Python で変換しようとしてる人がいた。まぁ誰でも出来ると思うわ。けど…、幸いなことに、(「変換ツール」を探そうとするとないのに)「srt とセットにしてダウンロード」というツールはこれは結構ある。つまり XML について無知でいい。Windows の場合は 4K Video Downloader でひとまず良さそうだ。「字幕をダウンロード」に忘れずにチェックすれば持ってきてくれる。多分変換してくれてるんだろうと思う。

Windows 固有で困ったハナシ

やってみるまで知らなかったんだけれど、バンドルされてる Windows Media Player が標準の字幕を扱えないらしいのね。こりゃ弱った。DIGA に転送する以前にうまくいってるのかどうかわからない。

なので、srt 字幕を扱えるらしい VLC media player を入れた。

softsub は PC でオフラインで (VLC media player があるなら) まぁまぁ理想形

最初の前置きの「youtube で視聴するストレス」の幾分かは軽減されるし、softsub は ON/OFF 出来るわけで、「気が散る」のと「操作性」の面を除けば、まぁまぁ。

4K Video Downloader で「埋め込む」オプションを付けなければ、MP4 のファイルベース名と同じファイルベース名を持つ srt ファイルを MP4 と同じ場所に置けば、つまり aaa.mp4 に対して aaa.srt を同じ場所に置けば、「ON/OFF 出来る字幕」が付く。あぁいいではないの。

このまま DIGA に持っていければ良かったんだけれども…。

たぶん DIGA では softsub の MP4 は取り込めない

何パターンかやってみたけどダメみたい。うーん…。ちょっと悔しい気もするけれど、現時点でのワタシのニーズは「どっちかつぅとリーディングを鍛えたいがための英語字幕」なので、まぁ最悪 OFF 出来なくてもいいといえばいい。つまり hardsub でもいい。まぁこれまで元々 hardsub だったものをダウンロードしてたんだから、現状維持だわな。

で、hardsub な字幕付き動画の作り方、だけれど、ワタシは ffmpeg でやった。

今回初めて知ったのだ。ffmpeg のバイナリを持ってきてパスを通すだけじゃダメなのね。最初エラーに気付かず出来なくて弱った。死んでくれりゃいいのに、警告だけでファイルが出来ちゃうんだもの…。あのさー、こういうの、正しく死ぬべきだぞ。

何が必要かって、「font.conffonts.conf」が必要です。これがないと hardsub な字幕は付けれない。まぁそりゃぁそうなんだよな、テキストではなくて絵にしなきゃならないんだから、フォントとの格闘はどうしたって必要。けどさ、公式バイナリの中にブチこんどいてくれてもいいじゃんねぇ、と思う。ワタシはここのものを使った(エラーが出たので手で修正)けど、なんかもっとちゃんとしたのもあるらしい。「font.conffonts.conf」は ffmpeg.exe のある場所(bin)に「fonts」というフォルダを彫ってその中に置く。

で、hardsub な動画の作り方:

MSYS bash のコマンドラインですよ
1 me@host: Video$ ffmpeg -i input.mp4 -vf subtitles=input.srt output.mp4

これを DIGA に持っていったら字幕付きの動画としてみれた…と言うまでもなく。だって「字幕をまともに扱えないはずの Windows Media Player」で見てもう字幕付いてるもの。Windows PC で見るなら hardsub の意味はあんましないような気はする一方で、Windows Media Player でも字幕付きで見れる、というのは Windows Media Player に慣れてるならまぁいいことかもね。

ややオマケ:ass と srt の行き来は自由自在、ffmpeg で

やってみればわかる。出力ファイルとして拡張子を ass にすれば ass を作れる。ass を使って hardsub を作るには若干コマンドラインが変わる:

MSYS bash のコマンドラインですよ
1 me@host: Video$ ffmpeg -i input.mp4 -vf ass=input.ass output.mp4

srt よりも ass の方が情報がリッチっぽい。どっちもテキストファイルだけれど、ass はフォントの情報とかも埋め込めるみたい。ただフォントの制御は新しめの ffmpeg だと

1 subtitles=sub.srt:force_style='FontName=DejaVu Serif,PrimaryColour=&HAA00FF00'

なんてことが出来るのでその意味だけなら「ass でねばならぬ」ことはないけど。

もう少しオマケ:スローな動画を作る、ffmpeg で

「スロー再生」ではなくて、動画として遅い動画に「変換」する話。

まさに「英語教材」を作るわけだから、「身の丈に合ったスピード」が欲しかったりするのね。字幕があるならネイティブスピードがベストなんだけれど、字幕なしのものは、若干スピードを落としたものがあると、高望まない学習が出来るであろ。絶対「まったく何言ってるかわかからなくてイヤになって挫折する」のはダメ。自分のレベルに合ったものを。

ffmpeg でスピード変更、なんだけどな、これ、相当悩ましいぞ:

0.8倍の場合
1 me@host: Video$ fmpeg -i "input.mp4" -filter_complex "[0:v]setpts=1.25*PTS[v];[0:a]atempo=0.8[a]" -map "[v]" -map "[a]" output.mp4

何が悩ましいてのは「言うまでもない」でしょう。なんぢゃこの呪文は、てだけでなくて、video のほうの setpts と atempo が逆数の関係なんですな(1/0.8 = 1.25)。あー面倒くさい。

けれども大抵のプレイヤーて、倍速・スロー再生の柔軟性はかなり小さい。youtube もスローは 0.5 倍のみ、DIGA ではスロー再生は音なしのコマ送りしかない。そして「英語教材として身の丈に合ったスピード」てのは多分、ネイティブスピードの 0.7~0.9 倍くらいなのね、のでこの自由度はありがたい。(一応 0.5~2.0 だけが可能だけど4倍速の動画を作りたきゃ2回変換すればいい。)

もっとオマケ:動画のお尻を削りたい、ffmpeg で

youtube からドキュメンタリーな動画集めてたら、なんか番組がちゃんと区切れてないのが多かったのね。本当は 53 分番組なのに 1時間20分の動画ファイルになっていて、後半が前半の繰り返し(後半がそして千切れてる)、なんてのが結構あった。

一応これ、これでチョン切れる:

1時間40分53秒で切りたい場合
1 me@host: Video$ ffmpeg -i "input.mp4" -c copy -ss 00:00:00 -to 01:40:53 output.mp4

のだけれど、そしてうまくいくのはうまくいくんだけれど、ただ、何が悪いのか、これをすると音声の同期がおかしくなる(つまり絵と音が全然合ってない)ことが多かった。DIGA に持ってく時間の節約にはなることもないでもないので、やってみてうまくいくならやればいいけれど、うまくいかないものは DIGA に転送してから DIGA で編集するしかないし、まぁ案外そっちの方が楽だったりはする。

もっとさらなるオマケ:最近みつけたいい教材

「字幕」とは全然関係ない、個人的に使い勝手が良いと思った教材:

  • BBC Learning English
    • Words in the News – News に登場するワード・フレーズの「紹介」(説明はなし)。ニュースの内容だが朗読といったほうがいい。ネイティブなブリティッシュイングリッシュだが学習者向けにゆっくり綺麗に喋ってくれる。まずは字幕なし、続いて字幕付き。1回10分番組で一つのニュース。
    • LingoHack – 同じく News からの、ただしこちらは生の News からの抽出。ネイティブ向けのスピードだが、はじめに字幕なし、キーワードで一時停止してキーワード解説(無論英語、英英辞典と思えばいい)、最後に字幕付きで全文。一回10分の番組で、毎回3つのニュースが取り上げられる。
  • CNN Student News – (hardsub なものも含め)字幕付きが大量に見つけられる。かなり早口。「Student」は英語に対するというよりは内容の方。池上彰のニュース解説を思い出せばいい。まさにそんな感じ。10分番組。

これら3つ、どれも「大量にあって」「コンパクト(10分)」なのが、飽きずに使えて良いと思う。

最後に重大な注意事項

この記事からリンクしてるほかの記事でも似たようなことを書いてるんだけれど、「youtube 動画をダウンロードして」「DIGA に転送する」という一連の作業、これはバカみたいに時間がかかります。1時間30分のドキュメンタリーは「DIGA への転送だけで 1時間30分」かかります。無論ダウンロード時間も、ネットワーク環境によるけれどもかなりかかるでしょう。そんでもって「hardsub な動画を作る」のも時間がかかる。

つまりこれだけ大仰で「不毛な」作業をするからには、それなりの動機と「作業計画的なこと」を持ってくださいな。何せこれだけのことをしてしまうと、下手をすると「作業しただけで満足」してしまいかねない。「本棚の肥やし式」ね。なので例えば「ダウンロードしながら youtube で視聴」、「ダウンロードしたものを視聴しながら DIGA に転送」「DIGA に転送したら毎日繰り返して視聴する」くらいに、作業そのものが視聴行為になるように工夫した方がいい、と思う。作業をただの作業にしたらいけまへん。

以上。…DIGA で softsub、出来たらいいんだがなぁ…。