1つの動画に複数言語の字幕をつける方法
1つの動画に複数言語の字幕をつける方法を解説。文字起こしは一度だけ行い、翻訳はレイヤーとして追加し、読み上げ速度とフォントを言語ごとに調整してから、ファイル・複数言語トラック・焼き込みという3つの書き出し方法から選びます。
多言語字幕 — 1つの動画に複数の言語の字幕をつけること — は、1つの長い工程ではなく3つの決定に集約されます: 元の言語で一度だけ文字起こしを行い、他の言語はそれぞれ同じタイミングの上に翻訳レイヤーとして追加し、最後に配信方法を選びます — 言語ごとの個別ファイル、切り替え可能なトラックを持つ1本の動画、あるいは言語ごとの焼き込みコピーです。多言語字幕づくりが行き詰まるケースのほとんどは、この順序を間違えたことが原因です。
この記事では、実際にうまくいく順序と、その過程で翻訳がタイミングやフォントに与える影響、各プラットフォームが実際に受け付ける書き出し形式、そしてYouTubeの動画にすべての言語を載せる方法について解説します。
文字起こしは一度だけ、翻訳はレイヤーで
最も時間を無駄にする失敗は、言語ごとに音声認識をやり直すことです。
音声認識は同時に2つのことを行います。テキストを生成することと、キューの区切り — 各字幕がどこで始まり、どこで終わるか — を生成することです。テキストは言語ごとに変わりますが、区切りは変わってはいけません。同じ動画を5回文字起こしすると、少しずつ違う5種類の区切りができてしまい、スペイン語版の同期を直してもドイツ語版には何の効果もありません。これが2時間の録音になると、ワークフローそのものが崩壊します。
その代わりに文字起こしを翻訳すれば、タイムラインは1つのまま保たれます:
- 話されている言語での文字起こしを1回、正確なタイミング付きで。
- 修正を1回 — 名前、製品用語、句読点。
- 修正済みテキストをN言語に翻訳。すべてが同じキュー区切りを引き継ぎます。
レバレッジが働くのはステップ2です。翻訳前に直したスペルミスの姓は、どの言語でも直っています。翻訳後に同じ姓を直すとなると、8回別々に編集することになります。すでに完成したSRTがあって他の言語だけが必要なら、SRTファイルを翻訳してもタイミングを崩さない方法で、キューの区切りを保ってくれるツールを紹介しています。
Sablateでは、ジョブの構造自体がまさにこの考え方です: 翻訳は新しいジョブではなく、既存の文字起こしに追加されるレイヤーです。オフライン翻訳(Argos)はあなたのパソコン上で動作し、DeepL、OpenAI、Claudeは自分のAPIキーを用意すれば使えます。オフライン経路について知っておく価値があるのは、Argosが公開しているパッケージのほとんどが英語を片側に含むペアだけだという点です。そのためトルコ語からドイツ語のような組み合わせには直接のパッケージがなく、英語を中間ホップとして経由する形で構成されます。これは実際に機能しますが、トルコ語からドイツ語への行がトルコ語から英語への行よりもわずかに硬く読める理由でもあります。
始める前に書き出し形式を決める
これが書き出し全体を決めるので、最初に決めてください。
| 言語ごとの個別ファイル | 言語ごとに1トラックの1本のMKV | 言語ごとの焼き込みコピー | |
|---|---|---|---|
| 視聴者が言語を切り替えられるか | プラットフォーム側で | プレイヤー内で | できない |
| スタイルが残るか | 最小限(太字、斜体、色) | 残る、ASSトラック | 残る、デザインどおりに |
| YouTube / Vimeoで使えるか | 使える、ファイルを個別にアップロード | 使えない | 使える、単なる動画だから |
| TikTok / Reels / Shortsで使えるか | 使えない | 使えない | 使える |
| オフライン再生 / テレビやUSBメモリで使えるか | ファイル名を揃える必要がある | 使える、1ファイルで済む | 使える |
| 動画を再エンコードするか | しない | しない、ストリームはコピーのみ | する、言語ごとに1回 |
| 9番目の言語を追加するコスト | 小さなファイルが1つ増えるだけ | トラックが1つ増えるだけ | フルエンコードが1回増える |
多くの人が最終的に落ち着くパターンはこうです: 対応しているプラットフォームにはファイルを、アーカイブとローカル再生には1本のMKVを、そしてメイン視聴者が話す1〜2言語だけを焼き込みで用意する。
そのプラットフォームが.srt、.vtt、.assのどれを求めているか分からない場合は、形式の比較記事でそれぞれが何を扱えるのかを詳しく解説しています。
翻訳がタイミングに与える影響
翻訳された字幕は、決まった、予測できる形で崩れます: タイミングは正しいままなのに、その行がもう読めなくなるのです。
英語からスペイン語、フランス語、イタリア語、ポルトガル語に翻訳すると、多くの場合20〜30%長くなります。ドイツ語の複合語は別の形で長くなります — 単語数は少なくても、42文字の行に収まらない単語になるのです。キューの開始と終了は、話者が話し始めた瞬間と話し終えた瞬間のままです。視聴者は単純に、1.8秒でそれだけの文字数を読み切れません。
これを測る指標は「1秒あたりの文字数(CPS)」で、詳しくは読み上げ速度のガイドで解説しています。基準となる数値はNetflixの言語別スタイルガイドにあります:
| 言語 | 読み上げ速度(成人向け番組) | 1行あたりの文字数 |
|---|---|---|
| 英語(アメリカ) | 最大20 CPS | 42 |
| ロシア語 | 最大17 CPS | 42 |
| 韓国語 | 最大12 CPS | 16 |
| 中国語(簡体字) | 最大9 CPS | 16 |
| 日本語 | 最大4 CPS | 全角13文字 |
これらの上限は、恣意的な厳しさではありません。日本語の字幕は1文字が担う意味の量がはるかに多いため、同じ1秒間の発話でも画面に表示すべき文字数はずっと少なくなります。英語の上限まで文字を詰め込んだ機械翻訳の字幕は、読めるものではありません。
解決策としてタイムスタンプを動かすことは絶対にありません — タイムスタンプは音声に一致しており、それだけは変えられないものだからです。解決策は、文言を短くするか、キューを2つに分割することです。Sablateのエディタは編集中に17 CPSを超えるキューに警告を出しますが、これはラテン文字やキリル文字を使う言語の大半には適切な基準でも、日本語や韓国語に対しては意図的に緩めに設定されています。これは最低限の目安であって、合格の保証ではないと考えてください。
各言語に、描画できるフォントを用意する
この問題はレンダリングの瞬間まで見えず、そしてその瞬間になると非常にはっきり見えてしまいます。
表示用の字幕フォント — 字幕らしい見た目を作る太くて縦に詰まったフォント — の多くは、ラテン文字、キリル文字、ギリシャ文字しかカバーしていません。それをアラビア語、ヘブライ語、タイ語、デーヴァナーガリー、ハングル、CJKに当てると、すでに20分もかけてエンコードした動画の中に、空の四角が並ぶことになります。
Sablateはこれに対応するため、各言語レイヤーの文字体系を確認し、実際にそのグリフを含むシステムフォントに置き換えます。プレビューでも焼き込みでも同じ処理が行われるので、エディタで見た通りのものがファイルに反映されます。各言語レイヤーは独自のスタイルも持っており、これはフォントだけの問題ではありません: 英語ではちょうどよく読めるサイズが、16文字の韓国語の行には大きすぎることがよくあります。
YouTubeに複数言語の字幕をアップロードする
YouTubeは、1つの動画につき言語ごとに1つの字幕ファイルを、それぞれ別のステップでアップロードする形を取ります。複数言語をまとめてアップロードできる字幕ファイルというものは存在しません — 複数の言語はファイルの中ではなく、プラットフォームの側にあります。これは上のワークフローにとっては好都合です: 各翻訳レイヤーはそれぞれ独立した.srtとして書き出され、その.srt1つがそのまま動画上の1言語になります。
最初に動画の言語を設定する
何かをアップロードする前に、動画自体に設定されている言語を確認してください。YouTubeのヘルプには、自動字幕は動画のデフォルトの言語でのみ生成されると記載されており、設定した言語は、YouTubeが元のトラックにつけるラベルにもなります。言語の設定が間違っている動画では、間違った言語の自動文字起こしが生成され、アップロードしたファイルと並んで表示されてしまいます。
YouTube Studioでの手順
- YouTube Studioを開き、左側のメニューから「字幕」を選びます。
- 動画を選びます。
- 「言語を追加」をクリックし、これからアップロードするファイルの言語を選びます。
- 「字幕」の欄で「追加」をクリックし、続けて「ファイルをアップロード」を選びます。
- タイミング情報付きのファイルをアップロードするオプション(英語表示ではWith timing)を選んで進みます — SRTやVTTファイルにはすでにタイムスタンプが含まれているためです。
- その言語のファイルを選び、「保存」をクリックします。
- 手順3〜6を、残りの言語ごとに繰り返します。
タイトルと概要欄の翻訳は、言語ごとの同じ行に専用の列としてあり、入力しておく価値があります: スペイン語で検索する視聴者には、スペイン語のタイトルが表示されるからです。
視聴者に実際に見えるもの
アップロードした言語はそれぞれプレイヤーの字幕メニューに表示され、視聴者がその中から1つを選びます。YouTubeはすべてのキャプションをプレイヤー自体のスタイルで表示し、視聴者側でスタイルを変えることもできるため、あなたのファイルのフォントや色は誰にも見えません。見た目が動画の一部なら、その言語を焼き込んで、残りはファイルとしてアップロードしてください。
YouTube自体の自動翻訳は無料かつ即時で、コストの面では確かに他に負けません — ただしこれは自動生成された文字起こしを翻訳しているだけなので、認識が間違えた単語はすべての言語でそのまま間違って残ります。自分で修正した翻訳をアップロードすれば、あなたにとって重要な言語については、その推測任せの部分を置き換えられます。
各ツールの立ち位置
| Sablate | YouTube自動翻訳 | Subtitle Edit | クラウド字幕ツール | |
|---|---|---|---|---|
| 価格 | $29、買い切り | 無料 | 無料、オープンソース | 月額サブスクリプション |
| 動画がパソコンの外に出るか | 出ない、クラウドAPIキーを有効にした場合を除く | 出る | 出ない | 出る |
| 1回の文字起こしから複数の言語レイヤー | できる | できる、自身の文字起こしから | できる、手動で | ツールによる |
| 言語ごとのスタイルと文字体系フォント | 対応 | 非対応、プレイヤーのスタイルのみ | 非対応 | ほぼ非対応 |
| 複数トラックのMKV書き出し | 対応(Pro) | 非対応 | 外部muxingを経由 | 非対応 |
| 長時間の録音 | Proは長さ無制限 | 動画全体 | 制限なし | 分単位課金が多い |
| フル動画をカバーする無料プラン | ない — 無料は10分まで | ある、長さ無制限 | ある、すべて対応 | 通常ウォーターマーク付き |
Subtitle Editについては正直に触れておく価値があります: 無料で、優れていて、文字起こしも翻訳もできます。その代わりに求められるのは設定作業です — モデル、ツール、muxingをそれぞれ別に構成する必要があり、スタイル付きの焼き込みは作れません。そうした設定作業が苦にならない人にとっては、このカテゴリーで最良の無料の選択肢です。
結果を書き出す
レイヤーがそろえば、書き出し自体は短い作業です:
- 言語ごとの字幕ファイル —
.srt、.vtt、.txtのいずれかを言語ごとに1つ、プラットフォームへのアップロード用に。 - 全言語を収めた1本のMKV — 各言語を正しい言語タグ付きの独立したASSトラックとして書き込み、字幕フォントをファイルに添付し、最初のトラックをデフォルトに設定します。映像と音声はストリームコピーなので何も再エンコードされず、書き出しはエンコードにかかる時間ではなく数秒で完了します。Pro。
- 焼き込み動画 — 言語ごとに1本、16:9、9:16、1:1のいずれかでレンダリング。TikTok、Reels、Shortsで通用する唯一の配信方法です。焼き込みの仕組みでは画質面について詳しく解説しています。
無料プランでは1つのジョブにつき1つのオフライン翻訳レイヤーが使え、10分の壁を最初に超えるジョブでは3つのレイヤーを使える場合があります。Proは$29の一度きりの支払いでこの制限をすべて外します — 具体的な内容は料金ページをご覧ください。
まとめ
多言語字幕とは、複数の文字起こしではなく、1つの文字起こしと複数のレイヤーのことです。文字起こしは一度だけ。何かを翻訳する前に、その文字起こしを修正する。言語は同じタイミングの上にレイヤーとして追加する。テキストが変わればどちらも変わるので、言語ごとに読み上げ速度とフォントを確認する。そして、そのプラットフォームが実際に受け付ける書き出し形式を1つ選ぶ — その答えが「3つとも」であっても、やるべき作業は変わりません。
よくある質問
1つの動画に複数言語の字幕をつけるには、どうすればいいですか?
動画は元の言語で一度だけ文字起こしを行い、その文字起こしを修正してから、同じタイミングの上に各言語への翻訳をレイヤーとして追加します。最後に書き出し方法を選びます — 言語ごとの字幕ファイル、切り替え可能なトラックとして全言語を収めた1本の動画、または言語ごとに焼き込んだコピーです。この順序が重要なのは、翻訳前に行う修正はすべて、その後は繰り返さなくて済む修正だからです。
動画そのものを翻訳するべきですか、それとも字幕ファイルを翻訳するべきですか?
字幕ファイルを翻訳してください。タイミングはすでに存在し、しかも正確なので、翻訳はそのタイミングを再利用するテキスト作業になります。言語ごとに音声認識をやり直すと、言語ごとに異なるキュー区切りが生まれてしまい、結果として言語ごとに別々にズレが生じ、同じ同期の問題を何度も直すことになります。
1つのMP4に複数言語の字幕を収めることはできますか?
確実にはできません。MP4にも字幕トラックの仕組みはありますが、プレイヤー側の対応がまちまちで、スタイルも失われがちです。この用途のために作られたコンテナはMKVで、言語ごとに1つの字幕トラックとフォントを添付でき、視聴者はプレイヤー内で言語を切り替えられます。MP4で配信する場合は、ファイルを分けて用意するか、コピーごとに1言語を焼き込んでください。
翻訳した字幕が、なぜタイミングに合わなくなるのですか?
言語によって文章の長さが違うからです。英語からスペイン語、フランス語、ドイツ語に翻訳した行は、多くの場合20〜30%長くなりますが、読み上げにかけられる秒数はまったく同じです。ズレるのはキューではなく読み上げ速度です。直す方法は文言を短くするか、キューを分割することで、タイムスタンプを動かすことではありません。
翻訳した字幕には、別のフォントが必要ですか?
多くの場合、必要です。字幕用に作られた表示フォントの大半は、ラテン文字、キリル文字、ギリシャ文字しかカバーしていません。アラビア語、ヘブライ語、タイ語、デーヴァナーガリー、ハングル、CJKにそのフォントを当てると、焼き込み後の画面には空の四角が並びます。これはレンダリングの瞬間まで見えてこない問題なので、12言語を書き出す前に確認しておく価値があります。
1つの動画に対して、言語数が多すぎるという線引きはありますか?
切り替え可能なMKVやファイル一式であれば、実質的な上限はありません — 言語を追加してもファイルが増えるだけで、レンダリングは増えません。一方、焼き込みコピーには上限があります。言語ごとに動画のエンコードとアップロードが別に発生するからです。多くの人はメイン視聴者が話す1〜2言語だけを焼き込み、残りはファイルとして配布しています。
YouTubeの動画に複数言語の字幕を追加するには、どうすればいいですか?
言語ごとに字幕ファイルを1つずつアップロードします。YouTube Studioで「字幕」を開いて動画を選び、「言語を追加」をクリックし、字幕の欄の「追加」から「ファイルをアップロード」を選び、タイミング情報付きのファイルのオプション(英語表示ではWith timing)を指定して、その言語のSRTまたはVTTを選びます。これを言語ごとに繰り返します。視聴者はプレイヤーの字幕メニューから言語を選び、どの言語もYouTube独自のキャプションスタイルで表示されます。