ガイド

SRT 字幕を音声に:字幕を音声トラックにする方法

字幕ファイルには、ナレーションに必要なものがすべてそろっています。言葉と、各セリフを聞かせるタイミングです。これを音声にすれば、チュートリアルやショート動画、翻訳した動画に、映像とぴったり合う音声トラックを、1行も録音せずに作れます。

無料の SuperClonica エンジンが各セリフをオフラインで自然な声で読み上げ、短い Python スクリプトがそれぞれの開始時刻に配置します。このガイドでは、スクリプト、長いセリフを枠に収める方法、トラックを動画に重ねる方法を紹介します。

必要なもの

エンジン自体は SRT ファイルを読みません。Python 20行ほどで対応できます。

  • SRT ファイル:編集ソフト、自動字幕、翻訳から。
  • 無料の SuperClonica エンジンと Python 3.10 以降:python -m pip install superclonica-cpu。numpy も一緒に入ります。
  • 声:10の標準音声、カタログの声、または学習させた自分の声。
  • グラフィックカードは不要。ふつうのCPUで足ります。

セリフを無料で試聴

どの声のページでも、字幕のセリフを1つ30〜100文字で貼り付け、言語を選んで生成ボタンを押します。数秒で動画の仕上がりが分かります。アカウントは不要です。

セリフから1本のトラックへ

エンジンはループの前に1回だけ作りましょう。読み込みは数秒、各セリフは1秒未満です。

  • ファイルを読む:各項目は番号、開始・終了時刻の行、テキストでできています。
  • 各項目を読み上げる:audio, sample_rate = tts.synthesize(text, voice="F2", lang="ja", seed=7)。
  • 動画と同じ長さの無音の numpy 配列を作り、各セリフをその項目の開始位置(開始秒×サンプリングレート)に足し込みます。
  • 結果を tts.save("track.wav", track) で保存。

枠に収まらないセリフ

読み上げた各セリフの長さを、その項目の長さと並べて表示します。音声が枠より長いと、次のセリフと重なります。まずテキストを短くし、短い項目を2つまとめ、それでも足りなければ Superclonica(speed=1.15) のように少し速めたエンジンを作ります(許容範囲は0.7〜2.0)。同じテキスト・声・seed なら常に同じ音声になるので、1行だけ直してトラックを作り直せます。

音声を動画に重ねる

track.wav を編集ソフトに音声トラックとして読み込むか、コマンド1つで動画と結合します:ffmpeg -i video.mp4 -i track.wav -map 0:v -map 1:a -c:v copy -c:a aac voiced.mp4。声の下に音楽や効果音を残したいなら、元の音声を2本目のトラックに置きましょう。声を付けるのは自分の動画か許可を得た動画だけにし、実在の人物をまねた声を同意なく使わないでください。