AI · AIショート動画
AIで動画に自動字幕を付ける方法
結論
自動字幕は、Whisperなどの音声認識モデルで音声を文字起こしし、固有名詞や数字を直したうえで、1行を約42文字以内(中国語は16文字)の短い行に分け、読む速さを1秒あたり約20文字以下に収めてから、SRTまたはWebVTTファイルで書き出して作ります。完成したファイルは、ソフト字幕としてアップロードするか、映像に焼き込みます。
文字起こしを開くAI字幕ジェネレーターは実際に何をしているのか
自動字幕は、自動音声認識(ASR)で作られます。モデルが音声トラックを聞き、フレーズごとの開始・終了時刻つきで言葉を書き出します。代表的なオープンモデルがWhisperで、論文によると68万時間の多言語音声で学習されているため、1つのモデルで多くの言語を文字起こしでき、英語への翻訳もできます。モデルの仕組みについては、音声認識の解説ガイドをご覧ください。
ASRの出力は下書きであり、完成した字幕ではありません。YouTubeの自動字幕のヘルプにも、品質にはばらつきがあり、必ず確認して正しく文字起こしされていない部分を直すよう書かれています。きちんとした字幕にするには、生の文字起こしにはない3つの工程が必要です。誤りの修正、読みやすい行への分割、そして読める長さのタイミング調整です。
動画から字幕を生成する場所は、大きく3つあります。プラットフォーム内(YouTube、TikTok、Instagramはいずれも何らかの自動字幕機能があります)、編集ソフト内(CapCut/剪映、Premiere Pro、DaVinci Resolve、Descript)、そして字幕ファイルを書き出せる文字起こし専用ツールです。専用ツールで作った字幕ファイルは最も自由度が高く、どのプラットフォームにも使い回せます。たとえばcv.cmの音声文字起こしツールは、ブラウザ上でWhisperを動かし、音声をアップロードせずにTXT、SRT、VTTで書き出せます。
手順をひとつずつ
- 完成した編集から、クリーンな音声トラックを書き出します。字幕は投稿するカットと一致させる必要があるので、文字起こしは映像が確定した後の最後に行います。
- Whisper系のモデルで文字起こしします。言語がわかっているなら手動で指定してください。短いクリップや音楽で始まるクリップでは、自動検出が外れることがあります。
- 音声を聞きながら文字起こしを読み、固有名詞、ブランド名、数字、専門用語、同音異義語を直します。
- テキストを字幕カードに分けます。1カードは短い1〜2行で、自然な文の切れ目で改行します。
- タイミングを確認します。各カードは言葉が始まると同時に出て、読めるだけの長さ表示されるようにします。
- 画面向けにスタイルを整えます。フォントサイズ、縁取りか背景ボックス、セーフゾーンの内側の位置を決めます。
- 納品します。SRTかVTTを字幕トラックとしてアップロードするか、字幕を動画に焼き込むか、その両方を行います。
1行の文字数と読む速さのルール
プロの字幕ガイドは、視聴者が映像を見逃さずに読めるよう、厳密な上限を定めています。Netflixは言語ごとの字幕スタイルガイドを公開しており、確認できる数値として出発点に使えます。
| 言語(Netflixのガイド) | 1行の文字数 | 1カードの行数 | 読む速さ(大人) | 読む速さ(子ども) |
|---|---|---|---|---|
| 英語(米国) | 42 | 最大2行 | 1秒あたり最大20文字 | 1秒あたり最大17文字 |
| 中国語(簡体字) | 16 | 最大2行 | 1秒あたり最大9文字 | 1秒あたり最大7文字 |
英語のガイドには、改行の位置も書かれています。句読点の後、接続詞の前、前置詞の前で改行します。冠詞は名詞と、形容詞は名詞と、名は姓と同じ行に置きます。
読む速さのルールを実際に当てはめてみます。Three things nobody tells you about captions というカードは、スペースを含めて44文字です。1秒あたり20文字なら、画面に最低2.2秒必要です。話し手が1.5秒で言い終えるなら、カードを長く出し続けるか、Three things nobody tells you(29文字、約1.5秒)のように文を短くします。
縦型のショート動画では、テレビ画面よりも厳しい上限が必要です。幅1080ピクセルのスマホのフレームに大きな太字を入れると、1行に入る文字数は42よりずっと少なくなります。実際のところ、スマホでは1行あたり、英数字なら約20〜30文字、中国語なら8〜12文字が読みやすい目安です。日本語の字幕は、Netflixの日本語ガイドラインでは横書き1行13文字までとされています。多くのクリエイターは、1カードに短いフレーズを1つだけ出し、カードをこまめに切り替えています。
SRTとWebVTT:2つの字幕ファイル形式
ほとんどのプラットフォームと編集ソフトはSRTに対応しています。WebVTT(VTT)は、HTMLのvideo要素で使うWeb向け字幕のW3C標準です。見た目はほぼ同じです。
SRT (file: captions.srt)
1
00:00:00,000 --> 00:00:01,600
Three things nobody tells you
2
00:00:01,600 --> 00:00:03,400
about auto captions.
WebVTT (file: captions.vtt)
WEBVTT
00:00:00.000 --> 00:00:01.600
Three things nobody tells you
00:00:01.600 --> 00:00:03.400 line:70%
about auto captions.- SRTは各カードに番号を振り、ミリ秒の前にカンマを使います。
00:00:01,600のようになります。 - WebVTTは
WEBVTTの行で始まり、ミリ秒の前にピリオドを使います。00:00:01.600のようになり、カード番号は不要です。 - WebVTTでは、タイミングの後に
line、position、alignなどのキュー設定を付けて、カードの表示位置を指定できます。ただし、すべてのプレーヤーが対応しているわけではありません。 - どちらもUTF-8のテキストとして保存してください。アクセント記号や日本語などのCJK文字が壊れません。
焼き込み字幕とソフト字幕
| 種類 | 内容 | 向いている用途 | デメリット |
|---|---|---|---|
| ソフト字幕(字幕トラック) | プレーヤーが上に重ねて表示する、別ファイルのSRTまたはVTT | YouTubeへのアップロード、複数言語、アクセシビリティ、検索用テキスト | ファイルのアップロードに対応していないショート動画アプリもある。見た目はプレーヤー任せ |
| 焼き込み(オープン)字幕 | 映像のピクセルに文字を描き込んだもの | 音を消して見る人が多いTikTok、リール、ショート。見た目を完全に制御できる | オフにも翻訳もできない。誤りは再書き出しが必要 |
多くのクリエイターは両方を使っています。ショート動画アプリにはスタイルを付けた焼き込み字幕、YouTubeにはクリーンなSRTです。それぞれのffmpegコマンドを下に示します。subtitles フィルターには、libassつきのffmpegビルドが必要です。
# Burn captions into a 1080x1920 video (white text, black outline, raised above the bottom UI)
ffmpeg -i final.mp4 \
-vf "subtitles=captions.srt:force_style='FontName=Arial,FontSize=12,Bold=1,PrimaryColour=&H00FFFFFF,OutlineColour=&H00000000,BorderStyle=1,Outline=2,Alignment=2,MarginV=100'" \
-c:v libx264 -crf 18 -pix_fmt yuv420p -c:a copy captioned.mp4
# Add a soft caption track to an MP4 without re-encoding the video
ffmpeg -i final.mp4 -i captions.srt -map 0 -map 1 -c copy -c:s mov_text \
-metadata:s:s:0 language=eng soft_captions.mp4焼き込みコマンドでは、SRTファイルは高さ288ユニットの仮想キャンバスに描画されます。そのため FontSize=12 は高さ1920ピクセルのフレームで約80ピクセルに相当し、MarginV=100 は文字を下端から3分の1ほど持ち上げます。短いクリップでテストして調整してください。
縦型動画の字幕スタイル
- 位置:アカウント名、説明文、ボタンが表示される下の3分の1には字幕を置かないでください。セーフゾーンのピクセル数は、縦型動画サイズのガイドをご覧ください。
- サイズ:スマホでは、編集画面で大きく見える文字がちょうどよいことが多いです。実際のスマホを腕の長さに離して確認しましょう。
- コントラスト:白か黄色の文字に濃い縁取りか半透明のボックスを付ければ、どんな背景でも読めます。
- 顔を隠さない:話し手の顔がフレーム中央にあるなら、口の上ではなく、あごのすぐ下に字幕を置きます。
- 1本の動画につきスタイルは1つ:カードごとにフォントや色を変えると、視聴者は言葉ではなくスタイルを読むことになります。
単語ごと、いわゆるカラオケ風の字幕は、1〜3語ずつ表示し、話している単語をハイライトします。単語単位のタイムスタンプが必要ですが、Whisper系のツールなら生成できます。テンポの速いトーク動画では視線を画面に留められますが、長い解説では疲れます。フックやオチに使い、残りは通常の2行カードにしましょう。
字幕の翻訳
翻訳するのは、生の文字起こしではなく、修正済みの元字幕です。カードのタイミングはそのままにして、カードごとに翻訳すれば、翻訳後の行も話している瞬間に合います。
翻訳すると長さが変わります。同じ内容でも、スペイン語やドイツ語は英語より文字数が増えがちで、中国語や日本語は文字数が少なくなる一方、読む速さの上限はかなり低くなります。翻訳後は、すべてのカードを対象言語の1行の長さと読む速さの上限に照らして確認し、必要なら短くしてください。字幕ファイルの機械翻訳は手早い下書きとしては便利ですが、公開前にその言語を流暢に話せる人が読むようにしましょう。
自動字幕のよくある誤りと限界
- 固有名詞と新語:モデルは最も近い一般的な単語を書きます。人名やブランド名の表記リストを作り、文字起こしの中を検索してください。
- 数字:価格、日付、数量のすべてを、話した内容と照らし合わせてください。字幕の数字が間違っているのは、字幕がないよりも悪い結果になります。
- 音楽とノイズ:BGM、群衆の音、話し声の重なりは精度を下げます。可能なら音楽を下げたバージョンで文字起こししましょう。
- 無音部分の文字:実際に、ASRモデルが長い無音やBGMだけの部分で言葉を書いてしまうことがあります。誰も話していない場所に出たカードは削除してください。
- 言語の混在:言語が切り替わるクリップは、片方の言語でしか文字起こしされないことがあります。分割して、言語を手動で指定してそれぞれ文字起こししましょう。
- アクセシビリティ:聴覚に障害のある視聴者向けの字幕には、[ドアが閉まる音]のような重要な音の表記も必要ですが、ASRはこれを追加しません。
よくある質問
動画から無料で字幕を生成するには?
Whisperベースの文字起こしツールか、編集ソフトの自動字幕機能を使い、SRTファイルを書き出します。公開前に、テキストを確認して直してください。
YouTubeの自動字幕は正確ですか?
使える場合は多いものの、固有名詞、数字、ノイズの多い音声では信頼できません。YouTube自身も、品質にはばらつきがあるので確認して編集するよう案内しています。
SRTとVTTの違いは何ですか?
どちらも字幕テキストと開始・終了時刻を並べたものです。SRTはミリ秒の前にカンマを使い、各カードに番号を振ります。WebVTTは WEBVTT で始まり、ピリオドを使い、位置の設定も持てます。
字幕は1行に何文字がよいですか?
Netflixの英語ガイドでは1行42文字以内、2行までです。簡体字中国語のガイドでは1行16文字です。縦型のショート動画では、もっと短い行のほうが読みやすくなります。
字幕は焼き込むべきですか、SRTをアップロードすべきですか?
TikTok、リール、ショートでは、スタイルを固定したく、音を消して見る人も多いので焼き込みます。YouTubeや他の言語には、視聴者がオン・オフできるようSRTをアップロードします。