Remotion ナレーション
Remotion コンポジションをボイスオーバーで駆動するために必要なすべてを生成します:シーンごとのオーディオ、正確な長さ、開始フレーム、キャプション。シーンの長さは実際のオーディオから決定されるため、ずれは発生しません。
使用すべきタイミング
- ユーザーがスクリプト(Markdown、テキスト、または JSON)と Remotion プロジェクトを持っており、ナレーションを追加したい場合。
- シーンの長さをボイスオーバーと正確に一致させ、キャプションを単語単位で音声に追従させたい場合。
手順
-
MIRAGEA_API_KEYが設定されていることを確認します(絶対に表示しないでください)。音声を選択します:--voice VOICE_ID- ユーザーの Miragea アカウントに保存された音声、または--ref-url https://...- クローン元となる公開クリップ(ユーザーの同意が必要)、さらに--ref-text "クリップ内の正確な単語"を指定すると、より安価な 1x レートが適用されます。
-
スクリプトを記述します。各
## 見出し(または空白行で区切られた段落)が1つのシーンになります:## intro Meet Retake, the fastest way to fix a voiceover mistake. ## demo Type the right word. Retake re-voices the sentence and splices it in. -
Remotion の
public/フォルダに生成します:python3 scripts/narrate.py script.md --voice VOICE_ID --out public/narration --fps 30 -
コンポジションで
public/narration/narration.jsonを使用します(examples/Narrated.tsxを参照):totalFramesをdurationInFramesに、各シーンのstartFrame/durationInFramesを<Sequence>に、staticFile('narration/' + scene.file)を<Audio>に、そしてscene.captions(RemotionCaption[]:text,startMs,endMs,timestampMs,confidence)を@remotion/captionsのcreateTikTokStyleCaptions()と組み合わせてアニメーションキャプションに使用します。 -
スクリプトを編集して自由に再実行できます:変更されていないシーンはマニフェストから再利用されるためコストはかかりません。途中で実行が停止した場合、完了したシーンは保持され、次の実行時に再開されます。
オプション
| フラグ | デフォルト | 意味 |
|---|---|---|
--fps | 30 | フレーム計算用のフレームレート |
--pad | 0.4 | 各シーンの後に追加する余白時間(秒) |
--captions miragea | はい | 生成されたオーディオからキャプションのタイミングを取得(正確;+3 ポイント/秒) |
--captions estimate | 無料:単語の長さに基づいて均等に配置 | |
--model | expressive | standard は参照音声により忠実に従う |
--speed | 1.0 | 0.25〜4 |
2000 文字を超えるシーンは文の末尾で分割され、自動的に結合されます。
トラブルシューティング
choose a voice->--voiceまたは--ref-urlを指定してください。参照 URL は公開されており、1024 文字未満で、直接配信される必要があります(GitHub raw、S3/R2 の公開オブジェクトは動作します;署名付きリダイレクトは動作しない場合があります)。401/402/429-> キー、残高、レート制限の問題です。再実行は常に安全です。