動画を翻訳して日本語字幕をつける方法
動画を日本語に翻訳して字幕をつける方法を解説。Whisperのtranslate taskは英語のみのため、文字起こし後にタイムコードを保って翻訳する4つの方法を、SablateやYouTubeも含めて紹介します。
動画を日本語に翻訳するには、音声のタイミングに合った日本語字幕が必要です。最速の無料ルートはWhisperのtranslate taskですが、これは外国語の音声から英語字幕を直接作るもので、出力は英語のみです。そのため日本語にする場合は、まず文字起こしをして、そのテキストをすべてのタイムコードを保ったまま翻訳します。複数の言語を同時に作る場合も同じ流れです。
このガイドでは、翻訳の4つの方法、翻訳先が英語でないときに何が変わるか、公開前に結果を確認する方法を解説します。
字幕か吹き替えか:ここでの「動画の翻訳」とは
動画の翻訳には、2つの異なる作業があります。このガイドが扱うのは1つ目、つまり画面上のテキストである字幕を翻訳して、話されている内容に合わせて表示する作業です。2つ目は音声そのものの翻訳、つまり新しい言語の吹き替えトラックやボイスオーバーです。こちらは別の作業で、使うツールも別です。Sablateは吹き替えを行わないため、以下のどの方法でも話し言葉の翻訳は生成されません。
どの方法も、すでにディスク上にある動画または音声ファイルから始めます。
動画を日本語に翻訳するには?4つの方法
- Whisperのtranslate task。 無料で、コマンドラインから実行し、出力は英語のみ。
- 文字起こしをしてから、字幕ファイルを翻訳する。 どの翻訳先の言語でも、好きなツールで使える。
- Sablate。 一度文字起こしし、翻訳をレイヤーとして追加して、書き出すか焼き込む。
- YouTubeの自動翻訳。 視聴専用。ファイルも書き出しもない。
違いが最も大きいのは2点です。どの言語に対応するか、そして自分のものになる字幕ファイルが手元に残るかどうかです。
方法1:Whisperのtranslate task(英語のみ)
WhisperはOpenAIのオープンソースの音声モデルです。READMEによると、多言語の音声認識、音声翻訳、言語識別を行うマルチタスクモデルです。ここで役に立つのは翻訳の部分で、READMEには日本語の音声を英語にする次の例が載っています。
whisper japanese.wav --model medium --language Japanese --task translate
デフォルトの出力ではなく字幕ファイルがほしい場合は、--output_format srtを追加します。このコマンドラインツールはFFmpegでメディアをデコードするため、音声だけでなく動画ファイルも読み込めます。.mp4をそのまま指定できます。
英語のみ。 translate taskの翻訳先は1言語だけです。トルコ語、ドイツ語、日本語の字幕が必要な場合、この方法では作れません。
turboは使わないでください。 「Whisperが動画を翻訳してくれなかった」という報告の多くは、このミスが原因です。READMEには、turboモデルは翻訳タスク向けに学習されておらず、--task translateを指定しても元の言語のまま返すと書かれています。翻訳品質のためにはmediumまたはlargeが勧められています。「翻訳」の結果が元の言語で返ってきたなら、実行したモデルを確認してください。
制約は実務的なものです。コマンドラインとPython環境が必要です。出力は1言語だけで、エディターもないため、固有名詞が誤訳されたらSRTを手作業で直すことになります。1本の動画を無料で英語にするなら、これに勝る方法はなかなかありません。モデル選びで迷うときは、Whisperモデルの比較で各サイズの所要時間と精度を確認できます。
方法2:先に文字起こしをして、字幕ファイルを翻訳する
2つ目のルートは、作業を2つに分けます。話されている言語で、好きなWhisperツールを使って字幕ファイルを作り、タイムコードを保ったままテキストを翻訳します。翻訳が別の工程なので、英語を含めどの翻訳先の言語でも使えます。
2段階目を実行する方法はいくつかあります。自動翻訳機能のある字幕エディター、.srtを受け付ける文書翻訳ツール、厳密なプロンプトを与えた言語モデルなどで、そのあとブロック数がまだ一致しているかを確認します。ツールと落とし穴についてはタイミングを崩さずにSRTを翻訳する方法で扱っているため、ここでは繰り返しません。
利点はコントロールが効くことです。言語ごとに翻訳ツールを選べ、翻訳する前に元のテキストを修正できます。代償は、複数のツールと複数の受け渡しが必要になることです。文字起こしがまだファイルになっていない場合は、動画をテキストに文字起こしする方法が前半をカバーしています。
方法3:Sablateで動画を翻訳する(レイヤーとして)
SablateはWindows 10 64ビット以降とmacOS 12 Monterey以降に対応したデスクトップアプリです。Whisperのtranslate taskは使いません。話されている言語のまま音声を文字起こしし、そのテキストをキューごとにレイヤーとして翻訳するので、訳文の各行は元の行のタイミングを保ちます。
手順は次のとおりです。
- 「New job」をクリックし、ディスク上の動画または音声ファイルをドロップします。
- 「Spoken language」を設定するか、自動検出のままにします。文字起こしはfaster-whisperでローカルに実行され、100の話し言葉に対応しています。
- 「Translate into」で、翻訳先の言語を1つ以上選びます。
- 「Start」をクリックします。
- エディターで行を読みます。あとから「Add language…」で別の言語を追加でき、文字起こしをやり直す必要はありません。
.srt、.vtt、.txtを書き出すか、字幕を.mp4に焼き込みます。Proでは.assとマルチトラックの.mkvも書き出せます。
「Argos」はオフラインの翻訳エンジンです。自分のマシン上で動作し、言語パックは一度ダウンロードするだけです。Argosのパッケージは言語と英語をペアにしているため、英語から日本語への翻訳は直接行われます。スペイン語から日本語のように英語を含まないペアは、英語を中継として通るため、やや平板な訳文になります。Argosが対応する翻訳先は約50言語です。自分のAPIキーを使えば、ProではDeepL、OpenAI、Claudeも使えます。これらは一般に表現が自然ですが、その場合は字幕のテキストが各プロバイダーに送られます。
翻訳は1回の文字起こしに乗るレイヤーなので、何も繰り返さずに2つ目、3つ目の言語を追加でき、各レイヤーが独自のスタイルと言語に合ったフォントを持ちます。この作業の流れは複数言語の字幕をつける方法で解説しています。
無料プランはアカウント不要で、10分までの動画、月3ジョブ、FastとBalancedのモデル、オフライン翻訳レイヤー1つに対応します。焼き込み動画には隅に小さなマークが入ります。Proは$29の買い切りまたは月$5.99で、制限がなくなります。詳しくは料金をご覧ください。音声モデルとArgosの言語パックをダウンロードしたあとは、文字起こし、オフライン翻訳、焼き込みがインターネット接続なしで動作します。短いクリップで試すには、Sablateをダウンロードしてください。
方法4:YouTubeの自動翻訳(視聴するだけの場合)
動画がYouTubeにあり、内容を理解したいだけなら、ファイルは不要です。プレーヤーで設定の歯車を開いてSubtitles/CCを選び、使いたい言語が一覧にない場合はAuto-translateを選んで言語を指定します。これはYouTubeの字幕の設定に関するヘルプページに説明があります。
無料ですぐに使えますが、字幕が表示されるのはYouTube自身のプレーヤーの中だけです。ファイルも書き出しも、焼き込むものもありません。YouTubeの自動字幕のページには、自動字幕は機械生成で品質にばらつきがあると書かれており、その上に作られた翻訳も同じ性質を引き継ぎます。講演の内容を理解するには、それで十分なことが多いでしょう。公開する動画には向きません。
動画を日本語に翻訳する(または英語以外の言語にする)
多くの人が必要なのは英語ではなく、日本語やドイツ語、フランス語、トルコ語です。そうなると方法が変わります。
- Whisperのtranslate taskは使えません。 英語のみだからです。このガイドの中で、他の言語には当てはまらない唯一の事実です。
- 文字起こしをしてから翻訳する。 翻訳は音声認識とは別の工程なので、方法2と3はどの翻訳先の言語でも使えます。
- 直接か中継か。 Argosでは、英語を含むペアは直接翻訳です。スペイン語から日本語のように英語を含まないペアは英語を経由するため、意味がずれる場所がもう1つ増えます。元の言語か翻訳先が英語なら、この余計な中継を避けられます。
- 大きな音声モデルより、良い翻訳ツールのほうが効く。 文字起こしが正しければ、表現の質は翻訳ツールで決まります。Sablate Proで自分のキーを使うDeepL、OpenAI、Claudeは、一般にオフラインのArgosより自然です。引き換えに、テキストがマシンの外に出ます。
- 文字とフォント。 中国語、日本語、韓国語、アラビア語、デーヴァナーガリーには、その文字を実際に含むフォントが必要で、なければ焼き込み動画に空の四角が表示されます。Sablateは言語レイヤーごとに、その文字に合ったフォントを割り当てます。
英語の動画を日本語にする場合も、同じ方法で翻訳できます。ソース言語は実際に話されている言語で、翻訳先は自分が選んだ言語です。
翻訳がタイミングと読み上げ速度に与える影響
翻訳はタイミングを保ち、読み上げ速度を崩します。キューは話し手と同じ位置で始まり終わりますが、訳文は長くなることがあり、視聴者が読める秒数は変わりません。英語からドイツ語はよくある例で、テキストが増え、余裕のあったキューが速すぎるものになります。
指標は1秒あたりの文字数で、字幕の読み上げ速度(CPS)で解説しています。対処は、文言を短くするか、キューを2つに分けることです。タイムスタンプは音声に合っているので、動かさないでください。
公開前には、すべての行を必ず読んでください。字幕の機械翻訳は直訳調になり、慣用句、冗談、固有名詞は、ざっと見ただけでは気づけない形で誤訳されます。オフラインのArgosは、表現の面ではDeepLや最新の言語モデルより下で、人間の目を置き換えられるエンジンはありません。
動画の翻訳はオンラインか、オフラインか?
ブラウザ型の動画翻訳ツールは、ファイルをサーバーにアップロードし、そこで翻訳して結果を返します。手軽ですが、動画がパソコンの外に出ることになります。非公開の映像、クライアントの案件、遅い回線では、ローカルの方法が安全な初期設定です。Whisperのtranslate taskもSablateのArgosルートも、ファイルを自分のマシン上で処理します。
4つの方法の比較
| Whisperのtranslate task | 文字起こししてからSRTを翻訳 | Sablate | YouTube自動翻訳 | |
|---|---|---|---|---|
| 翻訳先の言語 | 英語のみ | 翻訳ツールが対応する言語すべて | Argosでオフライン約50言語、自分のAPIキーでさらに多く | YouTubeが一覧表示する言語 |
| オフラインで動く | はい(モデルのダウンロード後) | 翻訳ツール次第 | はい(Argosの言語パックのダウンロード後) | いいえ |
| 動画ファイルが必要 | はい | はい(SRTを作るため) | はい | いいえ |
| 字幕ファイルが手に入る | はい(--output_format srt付き) | はい | はい(SRTまたはVTT) | いいえ |
| タイミングを保つ | はい | はい(ブロック数を確認すれば) | はい(キューごと) | はい(プレーヤー内) |
| 焼き込み | いいえ | 別のツールで | はい | いいえ |
| 1回の文字起こしから複数言語 | いいえ | 言語ごとに1回実行 | はい(レイヤーとして) | 視聴者が1つずつ選ぶ |
| 行を直すエディター | いいえ | あり(字幕エディターで) | あり | いいえ |
| 価格 | 無料 | 無料から有料まで、ツール次第 | 無料プラン。Proは$29買い切りまたは月$5.99 | 無料 |
価格と手軽さでは、Whisperのtranslate taskもYouTubeもSablateに勝ります。前者は無料でアプリを買う必要がなく、後者は何も必要ありません。1本の動画を英語にするだけ、あるいは講演を追いたいだけなら、どちらかで十分かもしれません。
どの方法を選ぶべきか?
- 1本の動画を英語に翻訳したい(日本語ではなく英語)。ターミナルに抵抗がない: mediumまたはlargeモデルでWhisperのtranslate task。
- YouTube動画を理解したいだけ: YouTubeの自動翻訳。これを前提に作業の流れを組まないでください。
- 日本語、1本の動画: 文字起こしをして、最も信頼できる翻訳ツールでSRTを翻訳する。
- 複数の言語、公開する動画、または焼き込み字幕: Sablate。1回の文字起こしがすべての言語に使え、エディターで長すぎる行を見つけられるためです。
- プライバシーより表現の質が大事: どの文字起こしにもDeepLや言語モデルを組み合わせ、見直しの工程は省かない。
結果を公開するなら、字幕ファイルと焼き込み動画ではプラットフォームごとに挙動が違うことに注意してください。どちらが必要かはハードサブとソフトサブで、レンダリングについては動画に字幕を焼き込む方法で解説しています。
よくある質問
動画を日本語に無料で翻訳するにはどうすればいいですか?
無料でできますが、Whisperのtranslate taskは英語しか出力できません。無料のWhisperツールで音声を文字起こしし、字幕のテキストを翻訳してください。Sablateの無料プランなら、10分までの動画にオフライン翻訳レイヤーを1つ付けて、アプリ上で同じ作業ができます。
Whisperで動画を日本語に翻訳できますか?
できません。Whisperに内蔵されたtranslate taskは英語にしか翻訳できません。日本語など他の言語にするには、まず元の言語で音声を文字起こしし、そのテキストを別の翻訳ツールで翻訳してください。タイムコードはそのまま保ちます。この2段階目はArgos、DeepL、大規模言語モデルのどれでも行えます。
Whisperが動画を翻訳してくれなかったのはなぜですか?
おそらくturboモデルを使ったためです。WhisperのREADMEによると、turboは翻訳向けに学習されておらず、translate taskを指定しても元の言語のまま返します。mediumまたはlargeモデルに切り替えて同じコマンドを実行してください。READMEは翻訳の品質のためにこの2つを勧めています。
動画をアップロードせずオフラインで翻訳できますか?
できます。Whisperは文字起こしと英語への翻訳をローカルで行い、Sablateはローカルの文字起こしとオフライン翻訳のArgosを組み合わせて日本語にも対応します。音声モデルと言語パックを一度ダウンロードすれば、どちらもネット接続なしで動作します。ブラウザ型の翻訳ツールはファイルをサーバーにアップロードして処理します。
動画を翻訳すると字幕のタイミングは崩れますか?
テキストを翻訳してタイムコードを保てば崩れません。キューの開始と終了の時刻は、音声に合った位置のままです。変わるのは長さです。訳文は長くなりがちで、キューが速すぎて読めなくなることがあります。タイムスタンプを動かさず、文言を短くするかキューを分割して直してください。
英語の動画を日本語に翻訳するにはどうすればいいですか?
英語の音声を文字起こしし、そのテキストをタイミングを保ったまま日本語に翻訳します。Whisperのtranslate taskではこの方向はできません。Sablateなら翻訳レイヤーとして行え、英語から日本語はArgosの直接のペアです。公開前に必ず訳文を読んでください。機械翻訳の字幕は直訳調になりがちです。