ブログに戻る

単語単位のカラオケ字幕をShorts・Reelsにつける方法

単語単位のカラオケ字幕をShorts・Reels・TikTokに追加する方法を解説。単語タイミングの取得元、Whisper・FFmpegや編集ソフトで焼き込む3つの方法、そして同期を崩してしまいがちな編集のミスまで詳しく紹介します。

2026年9月28日
Sablate Team

単語単位の字幕に必要なのは、普通の字幕ファイルにはないもの — すべての単語に対するタイムスタンプです。これはWhisperのような音声認識から取得し、話された単語をどう目立たせるか — 色の変化、ボックス、塗りつぶし、あるいは1単語ずつの表示 — を選んだうえで、字幕を映像に焼き込みます。

ここでは焼き込みは選択肢ではなく必須です。Shorts、Reels、TikTokはいずれも字幕ファイルを受け付けないため、ハイライトはピクセルとして存在するしかありません。以下では、単語タイミングがどこから来てなぜズレるのか、このエフェクトを加える3つの方法 — うち1つは無料 — 、そして気づかないうちに同期を崩してしまう編集について解説します。

単語単位の字幕に、単語タイムスタンプが必要な理由

通常の字幕キューが持つタイムスタンプは2つだけです: 行が表示される瞬間と消える瞬間です。動かない1行であればそれで十分です。しかしカラオケハイライトには、行の中の単語1つ1つに開始と終了が必要で、標準の.srtにはそれを保存する場所がありません。

Whisperは単語タイミングを2段階目の処理として生成します。テキストが確定した後、各単語をそれを生成した可能性が最も高い音声の区間に整列させますが、openai-whisperのコマンドラインは今もこのオプションを実験的なものと位置づけています。このタイミングはハイライトを動かすには十分な精度がある一方、盲目的に信頼できるほどではなく、ハイライトの挙動を左右するある癖も持っています。

隣り合う単語は、境界がぴったり一致していることがよくあります。Whisperモデル比較のために調べたクリップでは、単語間の間隔177個のうち172個がちょうど0秒でした。実際に間があるときは、その間ハイライトをどうするかをツールが決める必要があります:

  • 話されている単語だけを光らせる。 間があるたびにハイライトが消え、「a」や「it」のような短い単語は1〜2フレームだけ点滅します。Whisper自身のハイライターはこの方式で、間のたびにハイライトなしのプレーンな行を書き込みます。
  • 次の単語が始まるまで、各単語を光らせたままにする。 ハイライトが途切れることはなく、どの単語も画面に十分な時間表示されます。多くの字幕アプリはこの方式で動作しており、ショート動画の視聴者もこちらに慣れています。

後者の方式は編集にも強く、単語ごとの区間が最初の単語から最後の単語までキュー全体を余すところなくカバーするからです。

カラオケ字幕の4つのスタイル

「カラオケ」という言葉は見た目の異なる4つのスタイルをまとめて指しており、ツールを選ぶ前にどれが欲しいのかを把握しておくと役に立ちます:

スタイル視聴者に見えるもの別の呼び方
色話された単語だけ色が変わり、残りの行は白のままHormoziスタイルの字幕
ボックス話された単語の背後に色付きのボックスが表示されるボックスハイライト、ピルハイライト
塗りつぶし単語が話されるたびに色が変わり、そのまま変化した状態が続くクラシックなカラオケスイープ
1単語話された単語だけが大きく中央に表示されるシングルワード字幕

色とボックスは、話者を映すクリップで最も読みやすいスタイルです。塗りつぶしはリリックビデオの見た目です。1単語は4つの中で最も主張が強く、冒頭のつかみには効果的ですが、1分間ずっと続くと見ていて疲れます。

単語単位の字幕を追加する3つの方法

  1. WhisperとFFmpeg — 無料、ローカル、コマンドライン。シンプルなハイライト、細部まで自分で制御でき、多少のセットアップが必要です。
  2. 動画編集ソフトの字幕テンプレート — CapCutまたはDaVinci Resolve Studio。編集ソフトの中に入ってしまえばワンクリックで、違いが出るのは利用規約の方です。
  3. デスクトップ向け字幕アプリ — Sablate。プリセット、縦型フレーミング、焼き込みが1つのウィンドウに揃っていて、すべて自分のパソコン上で完結します。

方法1: WhisperとFFmpeg(無料、完全ローカル)

この方法にはPythonとFFmpegがインストール済みで、PATHが通っている必要があります。すべて自分のパソコン上で実行され、Whisperのモデルは初回使用時に一度だけダウンロードされます。

  1. Whisperをインストールします:
pip install -U openai-whisper
  1. 単語タイムスタンプとハイライトを有効にし、1キューあたり3単語で文字起こしします:
whisper clip.mp4 --model turbo --word_timestamps True --highlight_words True --max_words_per_line 3 --output_format srt

これによってclip.srtが書き出され、各単語が独自のキューを持ち、話された単語が<u>タグで囲まれます。

  1. 必要であれば、下線を色に変えられます。FFmpegはSRTファイル内の<font color>タグを読み取れるので、置換するだけで済みます(macOSとLinux、またはWindowsのGit Bash):
sed -e 's/<u>/<font color="#FFE900">/g' -e 's#</u>#</font>#g' clip.srt > karaoke.srt
  1. 焼き込みます:
ffmpeg -i clip.mp4 -vf "subtitles=karaoke.srt:force_style='FontName=Arial,FontSize=16,Outline=2,MarginV=60'" -c:a copy clip-captioned.mp4

この数値には理由があります。FFmpegはSRTを焼き込む際、まずテキストを384×288の仮想キャンバス上に配置するため、FontSizeとMarginVは動画のピクセル数ではなくこの288という単位を基準に測られます。MarginV=60は、行をフレームの高さのおよそ5分の1だけ持ち上げ、ShortsやReelsのインターフェースを避けます。Windowsで字幕ファイルが見つからないとFFmpegが表示する場合はパスのエスケープが必要です — 焼き込みガイドで対処法を解説しています。

正直な限界を挙げておきます: 得られるのは下線か単色の変化だけで、ボックスもポップもなく、間があるとハイライトは消えます。厄介なのは編集です。単語ごとに独立したキューがその行全体を保持しているため、3単語の行でスペルミスがあれば、少なくとも3つのキューで同じミスが繰り返されます。SRTを生成する前に、生成した後ではなく、文字起こしを修正してください。

方法2: 動画編集ソフトの字幕テンプレート

すでにこれらのどちらかで編集しているなら、単語ハイライトはテンプレートを選ぶだけです。

CapCut。 自動字幕を生成し、単語ハイライト付きの字幕テンプレートを適用します。デスクトップでもスマートフォンでも可能です。ただし条件が2つあります。音声はCapCut側で処理され、そのプライバシーポリシーには、字幕生成などのために「作成、インポート、アップロードの時点での事前アップロードを通じて」コンテンツを収集する場合があると記載されています。またCapCutのヘルプセンターは、自動字幕をPro限定機能を含みうる機能として挙げており、Pro機能を使ったプロジェクトを書き出すにはサブスクリプションが必要です。

DaVinci Resolve Studio。 Timeline → AI Tools → Create Subtitles from Audioが、自分のパソコン上で文字起こしを行います。Resolve 20以降、AnimatedタイトルにWord Highlightテンプレートが含まれており、これを字幕トラックのヘッダーにドラッグし、Inspectorで色、フォント、速度を設定します。自動字幕はStudio版の機能で — 買い切り$295 — 文字起こしは標準で14言語に対応し、追加ダウンロードでさらに増やせます。すでにStudioを持っているなら、このページで紹介する方法の中で最も手間のかからない選択肢です。

方法3: デスクトップ向け字幕アプリ

デスクトップ向け字幕アプリは、文字起こし、修正、スタイル選択、縦型フレーミング、レンダリングという作業全体を、自分のパソコン上の1つのウィンドウで完結させます。

Sablateには、上記4つの見た目をカバーする6つの単語ハイライトプリセット — Hormozi、Beast、Reels、One Word、Karaoke、Pop — が用意されており、Word-by-word highlightスイッチを使えば他のどのスタイルにもこの効果を追加でき、モードにはColor、Box、Fill、Wordを選べます。プリセットの背後にある字幕用フォント(Montserrat ExtraBold、Anton、Bangers、Bebas Neue、Archivo Black)はアプリ本体とレンダラーの両方に同梱されているため、焼き込みはプレビューと同じ書体で描画されます。書き出した字幕がエディタと違って見える原因の多くは、このフォントの不足です。

タイミングは、このページの冒頭で説明したルールに従います。各単語は次の単語が始まるまで光ったままなので、間があってもハイライトが消えることはありません。誤字を直しても単語数が変わらなければ記録済みのタイミングはそのまま保たれ、単語を追加または削除した場合はその行だけが推定タイミングに戻ります。焼き込みは平坦なオーバーレイとして重ねるのではなく、メディアプレイヤーが使っているのと同じ字幕レンダラーであるlibassによって描画され、クロップするか元映像のぼかしたコピーでパディングすることで、9:16、1:1、16:9のいずれでもレンダリングできます。

他の方法より一歩進んでいるのが言語対応です。各翻訳レイヤーは独自のスタイルと独自の文字体系フォントを持つため、複数言語での配信で解説している通り、同じ1本のShortを1回の文字起こしから英語、スペイン語、韓国語のカラオケ字幕付きで書き出せます。翻訳レイヤーのタイミングは、実際に誰もその単語を話していないため測定値ではなく推定値になり、アプリはそのことをスイッチのすぐ隣で明示します。

単語単位のスタイル設定はProの機能で、$29の一度きりの支払いで使えるようになります。無料プランでもすべてのプリセットをプレビューでき、それ以外のスタイルは小さなコーナーマーク付きで焼き込めます。

どの方法を選ぶべきか

WhisperとFFmpegCapCutDaVinci Resolve StudioSablate
価格無料無料プランあり、Proはサブスクリプション買い切り$295買い切り$29
音声がパソコンの外に出るか出ない出る、自動字幕の場合出ない出ない
ハイライトの見た目下線または単色テンプレートライブラリWord Highlightテンプレート色・ボックス・塗りつぶし・1単語
フル機能の動画編集ソフトかできないできるできるできない
スマートフォンで動作するかしないするしないしない
縦型9:16の書き出し追加のフィルターが必要対応対応対応、クロップまたはぼかし

この表のうち2行はSablateにとって不利です: 動画編集ソフトではなく、スマートフォンでも動作しません。スマートフォンでカット編集をして音楽を加え、そのまま公開しているなら、デスクトップ向け字幕アプリは近道ではなく余分な一手間になります。

「1本のクリップで、ターミナルにも抵抗がない」 WhisperとFFmpegです。無料でローカルに完結し、色が変わるだけのハイライトなら十分な仕上がりです。

「すでにCapCutで編集していて、毎日投稿している」 そのまま使い続けてください。テンプレートこそが強みであり、どうせProに料金を払っているなら、コストを理由に変える意味はありません。

「DaVinci Resolve Studioで編集している」 Word Highlightを使ってください。ライセンスはすでに持っていて、文字起こしもローカルで完結します。

「映像を自分のパソコンの外に出せない」 CapCut以外ならどれでも構いません。オフライン字幕生成ツールでは、ローカルで完結する選択肢をより詳しく比較しています。

「同じShortを3つの言語で公開する」 Sablateです: 1回の文字起こしから言語ごとにカラオケスタイルを設定でき、翻訳には推定タイミングが使われます。

「ミュージックビデオで、音節単位のタイミングが欲しい」 無料のAegisubです。カラオケモードでASSの\kタグを音節ごとに手作業でタイミング付けします — 時間はかかりますが、歌詞に対してはそれでも最良の結果になります。ASS形式は、カラオケタイミングをそもそも保存できる唯一の一般的な字幕形式です。

単語単位の字幕の同期を保つ方法

ハイライトの品質は、その土台となる単語タイミング次第であり、いくつかの習慣を守ることでそれを崩さずに済みます:

  • スタイルを設定する前に修正する。 タイミングは認識された単語に紐づいています。「there」を「their」に直すような同じ長さの修正ならタイミングは保たれますが、行を書き直すとタイミングは失われます。
  • 名前は事前にWhisperへ伝えておく。 Whisperには、文字起こしを誘導する短いプロンプトとして名前や専門用語を渡せます — --initial_promptオプション、またはSablateのDefaults → Custom vocabularyです。最初から正しく綴られた名前は、タイミングを乱す修正を一切必要としません。これは保証ではなく傾向を誘導するものなので、それでも名前は目視で確認してください。
  • フォントを縮めるより、長いキューを分割する。 縦型動画では、3〜5単語の1行ならハイライトが移動している間に読み切れますが、2行分の文字数ではそれができません。
  • タイミングを調整したら、必ず再生して確認する。 キューの端をドラッグしても、その中の単語タイミングは通常そのままの位置に残るため、新しい端に近い単語が詰まってしまいます。少し動かしたら、そのキューを一度再生して確認してください。
  • プレビューだけでなく、レンダリング結果も確認する。 アップロードする前に、最初のキュー、最後のキュー、そして発話が最も速い箇所を確認してください。

単語単位の字幕とは、スタイルをまとった1つのタイミング問題にほかなりません。まずクリーンな単語タイムスタンプを手に入れ、修正では長さを変えないようにし、見た目を選ぶのはそのあとです。プリセット、縦型フレーミング、複数言語対応を1つにまとめたいなら、SablateをWindowsまたはMac向けにダウンロードして、1本のShortを実際に試してみてください。