🎬

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に食わせて、どこまで使えるか検証する。


シリーズを追いかける

著者ページ(Zenn)

Discussion