Nodaro ドキュメント
ドキュメントノードリファレンスモデルAI エージェント(MCP)開発者向けセルフホスティングリサーチ
動画

字幕を追加

動画を文字起こしして字幕を焼き込みます。シンプルな静的字幕か、単語ごとに動く 5 種類のアニメーションスタイルから選べ、フォント、縁取り、位置、1 行の単語数も調整できます。

字幕を追加(Add Captions)ノードは、動画に字幕を入れます。動画内の音声を文字起こしするか、接続された文字起こしを受け取り、その言葉を映像に焼き込みます。シンプルな静的字幕のほか、音声に合わせて単語ごとに動く 5 種類のアニメーションスタイルから選べます。フォント、縁取り、位置、1 行あたりの単語数も調整できます。

使いどころ

  • 人物が話す動画やナレーション動画に、字幕を付けたいとき。
  • TikTok、Reels、Shorts 向けに、単語ごとに動くアニメーション字幕を付けたいとき。
  • 音声のあるあらゆる動画に、アクセシビリティのための字幕を付けたいとき。
  • ミュージックビデオに、カラオケ風の歌詞を表示したいとき。

クイックスタート

ノードを追加する

キャンバス上で Tab を押し、動画 › タイトル、グラフィック、字幕 › 字幕を追加を選びます。

動画を接続する

音声がはっきり聞き取れる動画を、動画入力に接続します。ノードが自動で音声を文字起こしします。手元にある文字起こしを使う場合は、それも文字起こし入力に接続します。

スタイルとルックを選ぶ

設定パネルを開き、TikTok 風ワード(キネティック)などのスタイルを選んでから、ルックを選びます。パネル内のプレビューで結果を確認できます。TikTok 風の太字などの標準プリセットから始めることもできます。

実行する

実行をクリックします。字幕付きの動画がノードに表示されます。

動画オーディオ動画文字起こし動画アップロード話す人物オーディオを抽出文字起こし単語のタイミング字幕を追加TikTok 風ワード、縁取りTikTok 投稿
動画の音声を単語のタイミング付きで文字起こしし、投稿の前に、字幕を追加ノードがその単語を TikTok 風の字幕として焼き込みます。

入力

入力接続できるノード説明
動画動画ノード字幕を付ける動画です。必須です。
文字起こし文字起こし(Transcribe)または EDL 適用(Apply EDL)の文字起こし出力任意です。単語とそのタイミングです。接続しない場合、ノードが動画の音声を文字起こしします。

出力の動画は、字幕が焼き込まれた動画です。

設定

設定説明
スタイル字幕の表示方法です。デフォルトは字幕(静的)です。ほかの 5 つのスタイルはアニメーションします。字幕のスタイルを参照してください。
ルックフォント、縁取り、大文字・小文字、発話中の単語の色をまとめたプリセットで、縁取り(TikTok)とクリーンがあります。字幕(静的)では、そのデフォルトであるなし(プレーン)も選べます。下の各コントロールで、ルックの個々の要素を上書きできます。ルックを参照してください。
位置下(デフォルト)、上、中央のいずれかです。位置を参照してください。
縦位置0〜100% のスライダーで、字幕ブロックの中心の高さを指定します。設定すると、位置より優先されます。自動を選ぶと、配置は再び位置に従います。
フォントサイズ12〜200 ピクセルです。デフォルトは 32 です。アニメーションスタイルに切り替えると、32 のままのフォントサイズは 64 に変わります。その逆の切り替えでは 32 に戻ります。
色テキストの色です。デフォルトは白(#FFFFFF)です。
フォント自動(ルックに従う)、または 24 種類のフォントのいずれかです。Montserrat、Inter、Anton、Bebas Neue、Oswald、Poppins などがあります。
フォントの太さ自動(ルックのデフォルト)、または 100 極細〜900 極太の太さです。フォントにその太さがない場合は、最も近い太さが使われます。
1 行あたりの最大単語数1〜20 です。空欄にすると、フレームの幅に収まるだけの単語を入れます。ワードポップは常に 1 単語を表示するため、この設定は表示されません。1 行あたりの最大単語数を参照してください。
すべて大文字字幕を大文字で表示します。
縁取りの色テキストの周りの縁取りの色です。自動ボタンを押すと、色の指定はルックに戻ります。
縁取りの太さ0〜40 ピクセルです。空欄ではルックに従い、0 は縁取りなしを意味します。
発話中の単語の色アニメーションスタイルのみ。話されている単語の色です。自動ではルックに従います。
アニメーションアニメーションスタイルのみ。デフォルトはオンです。オフにすると、単語ごとの動きが止まります。アニメーションを参照してください。
単語単位の字幕アニメーションスタイルのみ。デフォルトはオンで、1 単語につき 1 つの字幕になります。オフにすると、接続された文字起こしの単語を行ごとにまとめます。
字幕を追加ノードの設定パネル。「TikTok 風ワード」スタイル、「縁取り(TikTok)」ルック、字幕のライブプレビュー、位置とフォントサイズの設定が表示されています。字幕を追加ノードの設定パネル。「TikTok 風ワード」スタイル、「縁取り(TikTok)」ルック、字幕のライブプレビュー、位置とフォントサイズの設定が表示されています。

フォント

フォントの一覧には、24 種類のフォントがあります。

種類フォント
サンセリフInter、Roboto、Open Sans、Montserrat、Poppins、Raleway、Nunito、Lato、Rubik、Heebo、Cairo、Tajawal
セリフPlayfair Display、Merriweather、Lora、EB Garamond
幅の狭いディスプレイ書体Bebas Neue、Oswald、Anton
手書きDancing Script、Pacifico、Caveat
等幅Roboto Mono、Fira Code

Rubik、Heebo、Cairo、Tajawal は、ヘブライ語とアラビア語に対応しています。ヘブライ語とアラビア語の字幕は、右から左に表示されます。方向は字幕の大部分を占める言語に従うため、ヘブライ語のクリップの冒頭にラテン文字のブランド名があっても、行の向きは反転しません。

字幕のスタイル

スタイル表示のされ方
字幕(静的)標準的な字幕です。文字起こしした音声を、フレーズ単位の行で 1 行ずつ、画面に留めて表示します。
単語ハイライト(キネティック)1 行ずつ表示し、話している単語を強調します。
カラオケ(キネティック)1 行ずつ表示し、話すのに合わせて単語ごとに塗りつぶしていきます。
TikTok 風ワード(キネティック)1〜4 単語ずつのページが、ポップに現れます。ページが文の終わりや間をまたぐことはありません。
ワードポップ(キネティック)1 単語ずつ、弾むように現れます。各単語は、次の単語が始まるまで表示されます。
バウンス(キネティック)1 行ずつ表示し、話すのに合わせて各単語が弾みます。

5 つのアニメーションスタイルは、アプリではキネティックスタイルと呼ばれています。

ルック

ルックは、複数の見た目の選択をひとまとめにしたものです。1 つの設定を選ぶだけで、読みやすい字幕になります。

ルック描画される内容
縁取り(TikTok)Montserrat Black(太さ 900)の大文字で、白いテキストに太い黒の縁取りが付き、発話中の単語は黄色になります。アニメーションスタイルのデフォルトです。
クリーンInter を使い、縁取りも大文字化もありません。
なし(プレーン)字幕(静的)専用で、そのデフォルトです。縁取りも大文字化もない、Inter のニュートラルな字幕です。
  • コントロールは、ルックの個々の要素を上書きします。縁取り(TikTok)で発話中の単語の色だけを変えた場合、フォント、大文字、縁取りはそのまま保たれます。
  • 発話中の単語の色が表示されるのは、3 つのスタイルです。1 単語ずつ強調するのは、TikTok 風ワード、カラオケ、単語ハイライトだけです。字幕(静的)とワードポップは、ルックのフォント、縁取り、大文字・小文字を 1 色で使います。
  • フォントサイズの見え方は、ルックのフォントによって変わります。Montserrat Black の大文字は、大文字と小文字が混在する Inter より、1 文字あたり約 30% 幅が広くなります。そのため、同じフォントサイズでも、縁取り(TikTok)では 1 行に入る単語が少なくなります。クリーン、Bebas Neue、Anton、Oswald などの幅の狭いフォント、または小さいサイズを選んでください。
  • 縁取りは、テキストに合わせて太くなります。ルックが縁取りを描く場合、その太さはフォントサイズの 10% を丸めた値で、最小 2 ピクセルです。その半分は文字の外側にあるため、見える縁の太さはフォントサイズの約 5% です。たとえば、サイズ 64 では 6 ピクセル、サイズ 32 では 3 ピクセルの縁取りになります。独自の太さにするには縁取りの太さを設定し、縁取りをなくすには 0 を設定します。

字幕を行にまとめる仕組み

単語ハイライト、カラオケ、バウンスと、文字起こしを使う字幕(静的)は、字幕を 1 行ずつ表示します。1 単語ずつ表示するのでも、文字起こし全体を 1 つのブロックで表示するのでもありません。

  • 1 行には、選んだフォントサイズとフォントで、フレームの幅の約 85% に収まるだけの単語が入ります。
  • 行は、文の終わり(.、!、?、… で判断)や、2 つの単語のあいだに 0.5 秒以上の間があるところで、早めに終わります。
  • 1 行に収まらない長いフレーズは、バランスの取れた複数の行に分割されるため、最後の単語だけが 1 行に取り残されることはありません。たとえば、最後に STUDIO. だけが残るのではなく、OK SO I BUILT / A WORLD IN / NODARO STUDIO. のように分割されます。
  • 行は最後の単語の後、最長 1.5 秒間画面に残り、次の行が始まった瞬間に次の行に置き換わります。行内の間や、行と行のあいだの短い間によって、何も表示されないフレームができることはありません。1.5 秒を超える無音があると、字幕は消えます。
  • 行の中では、ハイライト、塗りつぶし、バウンスといったエフェクトが、単語から単語へと移ります。発話が途切れている間は、最後に話された単語がアクティブなままです。静的字幕の行には、単語ごとのエフェクトはありません。

行を使わない 2 つのスタイルも、同じルールに従います。

  • ワードポップは、次の単語が始まるまで各単語を画面に表示します。ただし、表示は単語の終わりから最長 1.5 秒までです。
  • TikTok 風ワードのページは、文の終わりや 0.5 秒以上の間をまたぐことがありません。各ページは次のページが始まるまで表示されます。ただし、表示は最後の単語から最長 1.5 秒までです。

1 行あたりの最大単語数

1 行あたりの最大単語数は、1 行、または TikTok 風ワードの 1 ページに入る単語の数を制限します。この設定は、上記のルールに加えて働きます。行は引き続き、フレームの幅の 85%、文の終わり、間のところで終わります。上限によって行が短くなることはあっても、長くなることはありません。短くインパクトのある字幕には 1 または 2 を使い、幅いっぱいに表示するには空欄のままにします。

スタイル効果
単語ハイライト、カラオケ、バウンス1 行に、設定した数を超える単語は入りません。
TikTok 風ワード1 ページに、設定した数を超える単語は入りません。
字幕(静的)フレーズの 1 行に、設定した数を超える単語は入りません。
ワードポップ効果はありません。このスタイルは常に 1 単語を表示します。

たとえば、上限がない場合、単語ハイライトは OK SO I BUILT、A WORLD IN、NODARO STUDIO. の各行を表示します。1 行あたりの最大単語数を 2 にすると、OK SO、I BUILT、A WORLD のように表示し、各行は次の行が始まるまで画面に残ります。単語数が奇数のフレーズは、1 単語だけの行で終わります。

上限が数えるのは、字幕のエントリーではなく単語です。上限より多くの単語を含むフレーズ単位の字幕は、短い部分に分割されます。その表示時間は、テキストの長さに応じて各部分に配分されます。

アニメーション

アニメーションは、アニメーションスタイルの単語ごとの動きを切り替えます。オフにすると動きは止まりますが、行のまとまり、行の表示の保持、発話中の単語の色はそのまま残ります。

スタイル止まる動き
単語ハイライトアクティブな単語のサイズの変化
カラオケ徐々に塗りつぶしていくスイープ
TikTok 風ワードページが弾むように現れる動き
ワードポップ単語が弾むように現れる動き。単語はすぐに表示され、次の単語まで表示されたままです。
バウンス各単語のバウンス

色の変化もない完全に静的な字幕にするには、発話中の単語の色も色と同じ値に設定します。

位置

どの位置でも、字幕ブロックは、フレームの端に最も近い辺を基準に固定されます。そのため、折り返して行が増えた字幕は内側に向かって広がり、見切れることはありません。配置はどのスタイルでも同じです。

設定ブロックの位置
上ブロックの上端が、フレームの高さの 12% の位置にきます。増えた行は下に向かって広がります。
下(デフォルト)ブロックの下端が、フレームの下端から 18% 上の位置にきます。TikTok や Reels のボタンにはかかりません。増えた行は上に向かって広がります。
中央ブロックの中心が、フレームの高さの 50% の位置にきます。
縦位置ブロックの中心が、上端から測って設定したパーセンテージの位置にきます。位置より優先されます。

縦位置が指定するのは、端ではなく中心です。85% の場合、ブロックの中心が高さの 85% の位置にあり、ブロックの下端はそれより低い位置まで下がります。高さ 1920 ピクセルのフレームでは、83.5% で中心が約 1,603 ピクセルの位置になります。65% 前後の値にすると、顔の下、かつアプリ下部のボタンの上に収まります。

単語の取得元

エディターでは、字幕を追加ノードは次の 2 つの方法のいずれかで単語を取得します。

  • 動画を文字起こしします。文字起こし入力に何も接続されていない場合、ノードは Incredibly Fast Whisper で動画の音声を文字起こしします。音声がはっきり聞き取れることを確認してください。
  • 接続された文字起こしを読み取ります。文字起こしまたは EDL 適用の文字起こし出力を、文字起こし入力に接続します。EDL 適用はカットに合わせてすべての単語を移動するので、字幕は再編集された動画に合ったままになります。クロスフェードをまたぐ場合でも、ずれは約 80 ミリ秒以内です。

文字起こしには単語のタイミングが必要

接続する文字起こしには、各単語のタイミングが含まれている必要があります。単語を含まない文字起こしは、クレジットが確保される前に拒否されます。

文字起こしノードの Whisper エンジンが返すのは、単語のタイミングではなくフレーズです。Whisper を使う文字起こしノードが、直接または EDL 適用を経由してこのノードにつながっていると、何かが実行されたり課金されたりする前に、ワークフローが停止します。メッセージには、その文字起こしノードの名前が表示されます。その文字起こしノードを、Incredibly Fast Whisper や ElevenLabs STT など、単語のタイミングを返すエンジンに切り替えてください。同じチェックは、サブワークフロー内のつながりにも適用されます。サブワークフローの境界をまたぐつながりだけは、文字起こしが実行された後に、このノードで拒否されます。

単語単位の字幕

文字起こしを接続し、アニメーションスタイルを選んでいる場合、単語単位の字幕によって、文字起こしの単語をどのように字幕にするかが決まります。

  • オン(デフォルト):1 単語につき 1 つの字幕を作ります。単語ごとに動くスタイルには、これが必要です。
  • オフ:先に単語を行にまとめます。行は、話者の切り替わり、文の終わり、無音、または最大単語数で終わります。落ち着いた、1 行ずつの字幕にしたいときに使います。

1 行あたりの最大単語数は、どちらの場合にも適用されます。

文字起こしエンジン

エンジン単語のタイミング選べる場所
Incredibly Fast Whisperありどこでもデフォルト
ElevenLabs STTありAPI、MCP、SDK、CLI
Whisperなし(フレーズのみ)API、MCP、SDK、CLI

エンジンによって、字幕を追加ノードの料金は変わりません。アニメーションスタイルには単語のタイミングが必要なため、Incredibly Fast Whisper か ElevenLabs STT が必要です。字幕(静的)に必要なのはフレーズのタイミングだけなので、どのエンジンでも使えます。

結果のフレームレート

アニメーション字幕のレンダリングでは、元の動画のフレームレートが維持されます。フレームレートは整数に丸められ(たとえば 23.976 は 24、29.97 は 30)、15〜60 fps の範囲に収められます。次の 3 つの場合は、代わりに 30 fps でレンダリングされます。

  • 元の動画のフレームレートを読み取れない場合。
  • 元の動画が可変フレームレートの場合。
  • クリップが、レンダリングのフレーム数の上限である 108,000 フレームより長い場合。60 fps では、30 分より長いクリップが該当します。

プレーンな静的字幕では、常に元の動画のフレームレートが維持されます。

標準プリセット

字幕を追加ノードには、字幕スタイルフォルダーに 7 つのプリセットが用意されています。どのプリセットも、スタイル、位置、フォントサイズ、色を設定し、動画を文字起こしします。

プリセットスタイル位置フォントサイズ色
シンプルな字幕字幕(静的)下32白
TikTok 風の太字TikTok 風ワード中央72白
カラオケ風ハイライトカラオケ下56白
ワードポップワードポップ中央64黄(#FFE600)
弾む字幕バウンス下64白
単語ハイライト単語ハイライト下48シアン(#00E5FF)
上部バナー字幕(静的)上36白

プリセットの適用、保存、共有の方法は、プリセットを参照してください。

クレジット

字幕を追加ノードの料金は 2 種類です。

レンダリングクレジット
独自の固定テキストを使い、スタイル関連のコントロールを何も設定していない、プレーンな静的字幕30
それ以外のすべて:すべてのアニメーションスタイル、文字起こしを実行する字幕、接続した文字起こしを使う字幕、スタイル関連のコントロールを設定した字幕、セグメントごとの字幕50

設定パネルにはテキスト入力欄がないため、エディターで設定したノードは常に音声または文字起こしに字幕を付け、1 回の実行ごとに 50 クレジットかかります。30 クレジットの字幕は、API、MCP、SDK、CLI から送信する固定テキストの字幕です。文字起こしエンジンとスタイル関連のコントロールによって、アニメーションスタイルの料金は変わりません。

ヒント

  • 内容に合わせてスタイルを選ぶ:プロフェッショナルなコンテンツには字幕(静的)を、SNS には単語ハイライトや TikTok 風ワードを使います。
  • プラットフォームのボタンに注意する:デフォルトの下の位置は、すでに TikTok や Reels のボタンを避けています。縦型の SNS 動画では、中央も適しています。
  • 読みやすいテキストにする:暗い映像の上では、白いテキストが最も読みやすくなります。明るい映像には、色付きのテキストを使います。
  • 先に単語を修正する:最も正確な字幕にするには、文字起こしで文字起こしし、テキストを修正してから、強制アライメント(Forced Alignment)でタイミングを合わせます。
  • 字幕は最後に付ける:字幕を追加ノードは、動画オーバーレイ(Video Overlay)の後に配置します。そうすれば、ロゴやカードが字幕の下になります。

トラブルシューティング

ワークフローが実行前に停止し、文字起こしノードの名前が表示される:その文字起こしノードは Whisper エンジンを使っており、Whisper は単語のタイミングを返しません。Incredibly Fast Whisper か ElevenLabs STT に切り替えてください。

1 行に入る単語が思ったより少ない:縁取り(TikTok)ルックは幅の広いフォントを使います。クリーン、Bebas Neue などの幅の狭いフォント、または小さいフォントサイズを選んでください。

字幕がフレームの端で見切れる:端に近い縦位置ではなく、位置の選択肢を使ってください。位置の選択肢はブロックの端を基準に固定するため、増えた行は内側に広がります。

API と MCP から使う

コードや AI アシスタントからは、エディターよりも多くのことができます。POST /v1/add-captions、add_captions MCP ツール、SDK の client.media.addCaptions(...)、CLI は、いずれも設定パネルと同じコントロールに加えて、次の項目を受け付けます。

  • 独自のテキスト:字幕(静的)では、text は動画全体を通して 1 つの固定ブロックとして焼き込まれ、文字起こしで上書きされることはありません。テキスト内の改行は、強制的に新しい行を作ります。アニメーションスタイルでは、text はフォールバックにすぎません。文字起こしで単語が見つからなかったときに使われ、動画全体に均等に配分されます。
  • 独自の単語タイミング:captions は字幕エントリーのリストで、各エントリーに text、startMs、endMs があります。アニメーションスタイルでは、1 単語につき 1 エントリーを指定します。
  • 文字起こしエンジン:transcribe_provider で、incredibly-fast-whisper(デフォルト)、elevenlabs-stt、whisper のいずれかを選びます。Whisper を使い、ほかに単語の取得元がないアニメーションスタイルは、クレジットが確保される前に拒否されます。文字起こしをオフにするには、auto_transcribe を false に設定します。単語の取得元がまったくないリクエストは拒否されます。
  • 時間範囲ごとに異なる処理:segments を使うと、同じ動画の時間範囲ごとに異なるスタイルとルックを、1 回の呼び出しで適用できます。セグメントごとの字幕を参照してください。

リクエストに複数の単語の取得元が含まれる場合、ノードは captions、文字起こしデータ、字幕(静的)での text、文字起こしの実行の順で、最初にあるものを使います。

フィールド名は、利用する手段によって異なります。REST のボディと SDK では maxWordsPerLine、MCP ツールでは max_words_per_line、CLI では --max-words-per-line を使います。

セグメントごとの字幕

各セグメントには、ミリ秒単位の開始と終了があります。セグメントはほかのセグメントと重なってはならず、独自のスタイルやルックのコントロールを設定できます。独自の単語を持たないセグメントは、共通の字幕または文字起こしのうち、そのセグメントの時間範囲に含まれる部分を使います。字幕の時間は、セグメントの開始からではなく、常に動画の開始から測ります。セグメントごとの字幕は常にアニメーション用のレンダリングを使うため、50 クレジットかかります。

たとえば、add_captions MCP ツールに次の引数を渡すと、最初の 3 秒間は縁取り付きの大きなフレーズを上部に表示し、その後は 1 単語ずつ下部に表示します。

{
  "video_url": "https://example.com/clip.mp4",
  "look": "outline",
  "segments": [
    { "start_ms": 0, "end_ms": 3000, "style": "subtitle", "position": "top", "font_size": 96, "text": "Same face, every shot. No re-prompting." },
    { "start_ms": 3000, "end_ms": 20000, "style": "word-pop", "position": "bottom", "font_size": 48 }
  ]
}
  • 境界上の単語:1 つの単語は、その開始時点を含むセグメントに属するため、2 回表示されることはありません。境界をまたぐフレーズは境界で分割され、各部分はそれぞれのセグメントのスタイルで表示されます。250 ミリ秒より短い部分は削除されます。ただし、削除するとフレーズ全体が失われる場合は削除されません。
  • セグメントが継承するもの:色、背景色、位置、縦位置、アニメーション、1 行あたりの最大単語数は、セグメントで設定されていない場合、トップレベルの値を使います。独自の位置を設定したセグメントは、トップレベルの縦位置を継承しません。フォント、太さ、縁取り、発話中の単語の色、大文字化などのルックのコントロールは、独自の look を持たないセグメントだけが継承します。ルックを指定したセグメントは、そのルックのプリセットから改めて始まります。

よくある質問

最終更新

目次