diff --git a/voicevox-remotion-template/README.md b/voicevox-remotion-template/README.md index 9c1c38f..1500b3b 100644 --- a/voicevox-remotion-template/README.md +++ b/voicevox-remotion-template/README.md @@ -40,12 +40,67 @@ `src/data/voicevox-manifest.json` に長さ・話者・スタイル情報を記録します。 音声が未生成の行は、プレビュー時にテキスト長から尺を推定します。 -### 5. プレビュー +ピザ窯サンプルの音声を生成する場合は、次を実行します。 + +```bash +npm run voice:generate:pizza-kiln +``` + +### 5. 口パク指示データを生成 +Rhubarb Lip Sync CLI を使い、VOICEVOX 音声から口形タイムラインを生成します。 + +```bash +npm run lipsync:generate +``` + +生成物は、Rhubarb の生 JSON が `public/lipsync/raw/*.rhubarb.json`、 +Remotion 用に正規化した JSON が `src/generated/lipsync/*.mouth.json`、 +プレビュー時に同期 import する集約 manifest が `src/generated/lipsync/manifest.json` です。 + +単体音声だけ再生成する場合は、次のように音声ファイルを指定できます。 + +```bash +npm run lipsync:generate -- public/audio/lines/zunda-001.wav +``` + +処理順は `1. npm run voice:generate`、`2. npm run lipsync:generate`、 +`3. npm run start` です。音声を作り直したら、口パク指示データも再生成してください。 + +Rhubarb CLI は次の順で検出します。 + +- `RHUBARB_BIN` に指定された実行ファイル +- `node_modules/.bin/rhubarb` +- `tools/rhubarb/` または `vendor/rhubarb/` 配下の実行ファイル +- PATH 上の `rhubarb` + +Windows / Linux / macOS で実行ファイル名が異なることがあります。 +Dev Container で使う場合は Linux 版 Rhubarb を配置し、必要なら +`RHUBARB_BIN=/usr/local/bin/rhubarb` のように指定してください。 + +日本語音声では Rhubarb の `phonetic` recognizer を使います。音声のみからの推定なので、 +日本語の母音完全一致ではなく、動画用に自然に見える口パクを目的にしています。 +Rhubarb 口形は次のように丸めます。 + +```ts +{ + X: "rest", + A: "closed", + B: "i", + C: "e", + D: "a", + E: "o", + F: "u", + G: "i", + H: "e", +} +``` + +### 6. プレビュー ```bash npm run start ``` -### 6. レンダリング +### 7. レンダリング ```bash npm run render YukkuriZundamon out/video.mp4 ``` @@ -53,6 +108,7 @@ ## 編集ポイント - 時系列脚本: `src/data/script.ts` - 音声タイミング: `src/data/voicevox-manifest.json` (自動生成) +- 口パクタイミング: `src/generated/lipsync/manifest.json` (自動生成) - 映像の構成: `src/yukkuri-composition.tsx` ## 字幕方針 @@ -70,5 +126,8 @@ ## 立ち絵の差し替え 現在の小夜は CSS の仮立ち絵です。画像素材を使う場合は `public` 配下に画像を置き、 `characters.sayo.avatar.imagePath` に `images/sayo.png` のような `public` からの相対パスを設定してください。 +口パクを使う場合は、立ち絵本体と同じ寸法の `a.png` / `i.png` / `u.png` / `e.png` / `o.png` / +`closed.png` / `rest.png` を `image/<キャラクター>-rhubarb-mouths/` に置くか、 +`avatar.mouthImageDir` で配置先を指定してください。 以前の `public/audio/zundamon.txt` と `src/data/script.json` は互換用に残していますが、現在は参照しません。