AIで作る業務動画 Day 6|Rhubarb Lip Syncで口パクデータを自動生成する
今日のゴール
Rhubarb Lip SyncをWindowsにインストールして、音声ファイルから口パクデータ(JSON)を自動生成できるようにする。
Day 1〜5で音声生成の土台を作った。今日からPhase 2に入る。
音声ができたら、次は「口パク」。キャラクターが話しているように見せるには、音声に合わせて口の形を変える必要がある。手作業でやると大変だけど、Rhubarb Lip Syncを使えば自動化できる。
Rhubarb Lip Syncとは
音声ファイルを解析して、どのタイミングでどの口の形にすればいいかを教えてくれるツール。
| 項目 | 内容 |
|---|---|
| 開発者 | Daniel Wolf |
| ライセンス | MIT License(無料で商用利用可) |
| リポジトリ | https://github.com/DanielSWolf/rhubarb-lip-sync |
| 対応OS | Windows、macOS、Linux |
コマンドラインツールなので、スクリプトに組み込みやすい。ゲーム開発やアニメ制作でよく使われている。
前提条件
- Windows 10/11
- 約90MBの空き容量
特別な依存関係はない。ダウンロードして配置するだけで動く。
手順
Step 1: ダウンロード
Releasesページから最新版をダウンロードする。
今回ダウンロードしたファイル:
-
Rhubarb-Lip-Sync-1.14.0-Windows.zip(約83MB)
Step 2: 配置
ZIPを解凍して任意のフォルダに配置する。
C:\development\tools\rhubarb\
├── rhubarb.exe
├── res/
│ └── (音声認識用のデータファイル)
└── extras/
└── AdobeAfterEffects/
└── demo/
└── riddle.wav (デモ音声)
rhubarb.exeが本体。resフォルダには音声認識エンジンのデータが入っている。
Step 3: PATHに追加(任意)
どこからでもrhubarbコマンドを実行したい場合は、環境変数PATHに追加する。
PowerShellで設定する場合:
# ユーザー環境変数に追加
[Environment]::SetEnvironmentVariable(
"PATH",
$env:PATH + ";C:\development\tools\rhubarb",
"User"
)
設定後、新しいターミナルを開くと反映される。Cursorを使っている場合は、Cursorの再起動が必要(Day 2で触れた環境変数の継承と同じ理由)。
PATHに追加しない場合は、フルパスで実行する。
C:\development\tools\rhubarb\rhubarb.exe --version
Step 4: 動作確認
バージョン確認コマンドを実行する。
rhubarb --version
以下の出力が表示されれば成功。
Rhubarb Lip Sync version 1.14.0
ヘルプを表示して、利用可能なオプションを確認する。
rhubarb --help
主要なオプション:
| オプション | 説明 | 使用例 |
|---|---|---|
-o |
出力ファイル指定 | -o output.json |
-f |
出力形式 | -f json |
-r |
認識エンジン | -r phonetic |
Step 5: テスト音声でリップシンク生成
付属のデモ音声ファイルriddle.wavで動作を確認する。
rhubarb -f json -o riddle-lipsync.json extras/AdobeAfterEffects/demo/riddle.wav
成功すると以下のような出力が表示される。
Processing extras/AdobeAfterEffects/demo/riddle.wav
Analyzing audio file...
Done.
Step 6: 出力結果の確認
生成されたriddle-lipsync.jsonを開いてみる。
{
"metadata": {
"soundFile": "C:\\development\\tools\\rhubarb\\extras\\AdobeAfterEffects\\demo\\riddle.wav",
"duration": 14.37
},
"mouthCues": [
{"start": 0.00, "end": 0.09, "value": "X"},
{"start": 0.09, "end": 0.15, "value": "B"},
{"start": 0.15, "end": 0.27, "value": "C"},
{"start": 0.27, "end": 0.37, "value": "D"},
...
]
}
mouthCues配列に、各時点での口の形(A〜X)が記録されている。
| 項目 | 値 |
|---|---|
| 音声長 | 14.37秒 |
| 生成されたキュー数 | 73個 |
口の形(Mouth Shapes)について
Rhubarbは9種類の口の形を出力する。
| Shape | 説明 | 対応する音 |
|---|---|---|
| A | 閉じた口(休息) | M, B, P |
| B | 少し開いた口 | K, S, T など |
| C | 開いた口 | E, AE |
| D | 広く開いた口 | AI, A |
| E | 丸めた口 | O |
| F | 歯を見せる口 | F, V |
| G | 歯を閉じた口(拡張) | L |
| H | 舌を見せる口(拡張) | L(代替) |
| X | 無音時の閉じた口 | 無音区間 |
今回のテストでは、A, B, C, D, E, F, G, Xの8種類が出現した。
最小構成で使う場合は、6種類(A〜F)や3種類(開/閉/中間)に集約することもできる。
日本語対応について
今回は英語音声でテストした。日本語音声の場合は-r phoneticオプションを使う。
# 日本語音声の場合
rhubarb -r phonetic -f json -o output.json japanese-audio.wav
日本語でどこまで使えるかは、Day 7で検証する。
出力形式
用途に応じて3種類の形式を選べる。
| 形式 | オプション | 用途 |
|---|---|---|
| JSON | -f json |
プログラムから利用 |
| TSV | -f tsv |
タブ区切りテキスト |
| XML | -f xml |
構造化データ |
Remotionで動画を作る場合はJSON形式が扱いやすい。
動作確認チェックリスト
| 確認項目 | 期待値 |
|---|---|
rhubarb --versionでバージョンが表示される |
✓ |
| デモ音声でJSONが生成される | ✓ |
JSONにmouthCues配列が含まれている |
✓ |
| 複数のShapeが出現する(A, B, C...) | ✓ |
うまくいかない場合
| 症状 | 原因 | 対処 |
|---|---|---|
| 「rhubarb is not recognized」 | PATHが通っていない | フルパスで実行 or PATH追加 |
| 「Cannot read audio file」 | 対応形式外 | WAV/OGGに変換 |
| 出力がほぼ「X」だけ | 無音が多い | 入力音声を確認 |
今日の成果物
- 動作確認済みのRhubarb環境(v1.14.0)
- 英語音声でのリップシンク生成テスト完了
検証環境
| 項目 | バージョン |
|---|---|
| OS | Windows 11 Pro |
| Rhubarb Lip Sync | 1.14.0 |
| テスト音声 | riddle.wav(付属デモ) |
| 検証日 | 2026-01-01 |
明日のテーマ: 日本語音声でリップシンクを生成する。Gemini TTSで作った音声ファイルをRhubarbに食わせて、どこまで使えるか検証する。
シリーズを追いかける
Discussion