字幕付きの YouTube の番組データを使って Anki のカードを自動作成する YouTube Flashcards の使い方と、Anki の読み込み設定例、利用上の注意点、作成例について取り上げます。

字幕付き動画から Anki カードを作成

動画と字幕から Anki 用のカードを作成するアプリケーションとしては、Windows 版では、subs2srsという非常に高機能なアプリケーションが Anki1 の頃から存在し、非常に有名です。

OS X などの他のプラットフォームで Anki を使っているユーザに取っては羨ましい限りだったのですが、ついにこの作業を自動化する YouTube Flashcards が GitHub に公開されました。

このアプリの機能をザックリと説明すると youtube-dl というアプリで動画と字幕をダウンロードし、その字幕のタイムラインの情報を元に FFmpeg で音声を分割し、画面ショットを取得し、さらに Anki に読み込むための TSV ファイルを作成してくれます。

動画をダウンロードしますが、カードには音声と画像を配置します。

字幕用ファイルのフォーマットは WebVTT (Web Video Text Tracks) を使っています。

YouTube Flashcards を使うには、youtube-dl と FFmpeg がインストールされていることが前提です。OS X の場合は両方とも Homebrew から入手できます。

YouTube Flashcards の内容

YouTube Flashcards の構成は極めてシンプル、ダウンロード部分の作業を行う download.sh とメディアファイルの加工を行う extract.sh という二つのシェルスクリプトで構成しています。youtube-dl がサポートしているサイトなら、YouTube 以外でも利用できます。

内容も簡潔に記述しており、好みに応じて youtube-dl や FFmpeg のオプションを自分で記述できる容易なっています。

メディアのダウンロード

まず、動画ファイルと字幕ファイル (VTT) を取得します。ダウンロードしたファイルは downloads フォルダに保存します。

メディアファイルと字幕ファイルの取得
./download.sh (メディアファイルのURL)

画像ファイルが存在するか、どの言語で提供されているかについては youtube-dl を使って調べることができます。

利用可能な字幕ファイルの一覧の取得方法
youtube-dl --list-subs (メディアファイルのURL)

利用可能なメディアファイルの一覧もダウンロード前に調べることができます。

利用可能なメディアファイルフォーマットの一覧の取得方法
youtube-dl -F (メディアファイルのURL)

好みのフォーマットを入手するには download.sh を編集して -f で指定します。

Anki カード用にダウンロードファイルの加工

メディアファイルからの音声ファイルの切り出しと、画面キャプチャの取得、字幕ファイルからのテキストファイルの抽出を extract.sh で行います。

メディアファイルの加工
./extract.sh (メディアファイルのパス) (字幕ファイルのパス) [(翻訳字幕ファイルのパス)] > (書き出す TSV ファイルのパス)

翻訳字幕ファイルのパスは、テキストを抽出するだけなので任意です。

加工した音声や画像は output フォルダに保存します。

作成する TSV の内容は次のようになります。

TSV ファイルの内容
原音声字幕	(翻訳字幕)	(画面キャプチャファイル名)	[sound:音声ファイル名]

TSV ファイル利用の注意

字幕内の改行に HTML の <br> タグを指定していますので、HTML を読み込む設定が必要になります。

画像ファイルは、<IMG> タグを設定していませんので、カードに画像を表示するには TSV を自分で加工してタグを付けるか、テンプレートの中でタグを設定する必要があります。

Anki への読み込み

output の中の動画や画像は、Anki のメディアフォルダに保存します。 書き出した TSV ファイルは、Anki のテキストファイル読み込み機能を使って読み込みます。

オプションでは、[フィールドに HTML を利用する] を有効にします。 TSV ファイルは最低でも三つの列の内容がありますので、標準のノートタイプでは対応できません。

私の場合は、基本ノートタイプに Picture フィールドを追加したノートタイプを作りました。

フィールドの対応表は次の通りです。表面に音声ファイルと画像ファイルを配置し、裏面に字幕の内容を表示する内容です。

テキストファイル読み込み設定例
フィールド1	Back
フィールド2	<無視>
フィールド3	Picture
フィールド4	Front

カードテンプレートの準備

さて、さらにカードテンプレートの編集が必要で、表面のテンプレートを次のように設定しました。

表面テンプレートの設定例
{{Front}}
<img src="{{Picture}}">

作成例とポイント

完成品の一例を紹介しましょう。RussianPod101.com の番組を利用して作成したカードです。

作成例
図 1. 作成例

カード枚数の目安

この動画の長さは約二分で 24 枚のカードが自動作成できました。同じチャンネルの 8 分間の英語の番組では、120 枚になりました。また VOA の一分間のニュースフラッシュで 20 枚程度です。

実際に字幕ファイルを見れば、何枚カードができるかわかりますが、実用に適した番組の長さは数分程度が限界なのではないかと思います。

この方法で作ったカードを使ってみると

普段は YouTube の動画番組は、必要な箇所だけMac で再生中の音声を Anki に直接録音するで紹介していた方法で直接録音しています。

あらためていつも見ている番組を YouTube Flashcards で作ったカードと比較してみると、細かく区切った文章がある分、一つ一つの音を意識した聴き取りのカードに仕上がったのではないかと思います。

RussianPod101.com は、字幕にする音声を取捨選択していて、比較的切りのいいところで字幕が区切られています。番組によっては、特にニュースなどは、全ての音声を文字に書き起こすためか中途半端なところで音が切れて、人によっては気にするかもしれませんので、作成前に番組内容や字幕内容を確認することをお勧めします。

手動で音声を区切るとどうしても繰り返し作業が多くなります。事前に正確なタイムラインを指定しているデータを使えるのは非常にありがたく、重宝します。

まとめ

  • YouTube Flashcards を使うと OS X や Linux でも YouTube の動画と字幕を使ったカードを作成できる。

  • ファイルのダウンロードや加工方法は、シェルスクリプトの編集で指定きる。

  • 一分間あたりのカード枚数は 10-20 枚程度になるため、実用には番組の長さに注意。

  • 字幕の区切り方が番組の種類によって異なる。きれいに区切った音声が必要なら番組を選ぶ必要がある。