【第5回】同じお題を Muse・Gemini・手元の Wan で作り比べた——Wan は「低級言語」だった
感情表現の練習課題「エチュード」を、同じお題で 3 つのルートに作らせた。Muse と Gemini は短い文からカット割りも演技も決めてくれる。手元の Wan は、カット割り・キャラと物のそろえ方・表情のタイミングを全部こちらが書く。書き損じはそのまま破綻になった。書き下ろす側(コンパイラ)を Claude から agy に替えた結果も含めた記録。
← 前の記事: 【第4回】MiniMax H3 の代わりを探す——Wan と LTX を『鼻』と同じ入力で比べたこの記事の動画は、すべて AI 生成動画(映像: Muse/Gemini/Wan 2.2 TI2V 5B、Wan の開始画: GPT-image-2)。音は、Muse 版と Wan 版は編集で合成した効果音、Gemini 版は Gemini が映像と一緒に生成したもの。
前回の締めに「カットの切り方の物差しが無い。次はここを固めたい」と書いた。今回はその続きで、題材は「エチュード」にした。
先に結論を書いておく。
- 同じお題を、Muse(自分のエージェント)、Gemini(1 回の生成)、手元の Wan 2.2 5B で作った。Wan の分は Claude Code が組み立てた
- Muse と Gemini は「高級言語」だった。短い文から、カット割り・キャラと物のそろえ方・表情のタイミングを裏で決めてくれる
- Wan は「低級言語」だった。開始画・画角・使う区間・止め・全カットで共有する定義を、全部こちらが書く。書き損じは、1 アングルのまま・半目で止まる・扉が消える・別人の顔・左右逆の手として、そのまま出た
- 書き下ろす側(コンパイラ)を Claude から agy(Gemini)に替えると、設定画を先に決めて全カットをそろえてきた。ただし手の左右の誤りは画像モデルの段で残った
- 直すべき所が多く、一つずつ拾うのは砂漠で砂金を探すようなものだったので、ここでいったん終える
エチュードとは
演劇のエチュード(即興の練習課題)にならった、生成動画の感情表現の練習課題だ。状況を 1 つに固定して、感情の変化だけを課題にする。研究用のテストで終わらせず、投稿できる短い動画として成り立たせる。仕様書は Muse が作った。
お題はこれ。
疲れて帰宅した女性が、冷蔵庫を開けたら、昨日のプリンが残っていたことに気づいて喜ぶ。
感情の弧: 疲労(無表情)→ 発見の驚き(柔らかい驚き)→ 至福(目を閉じて噛みしめる)→ 喜びの保持(抱えて笑顔で止まる)
比べるときに見る点も 4 つ決まっている。
- 音なしで、感情の変化が段階的に読めるか
- 視線・手の届く先・対象物の位置と同一性が、全カットで一致するか
- 表情が大げさすぎず真剣すぎず、キャラクターが別人にならないか
- 手・髪型・衣装・背景が、変化に巻き込まれて崩れないか
縦 9:16、登場人物は 1 人、セリフなし、音は編集で合成した効果音だけ。冒頭 1 秒に、いちばん強い表情を先に出す。
高級言語の 2 本
Muse(v4・22.8 秒)
Muse が仕様書と一緒に作った完成版。Muse 自身が v1 から v4 まで、本人のフィードバックで直している。キャラクターは Muse の「日焼けミュー」。
Muse 版(v4)
Gemini 版(1 回の生成・10 秒)
Gemini(1 回の生成・10 秒)
キャラクターの絵を渡して、次の文で 1 回だけ生成した。カット割りは何も指定していない。
Vertical 9:16 anime short video, unified 2D anime style. Scene: a small home kitchen in the evening with warm dim light. The woman from the reference image pulls a refrigerator door open and leans in slightly to look inside. Cool light from inside the refrigerator spills onto her face. At first, her expression is tired and flat. Then she spots a caramel flan on a plate on the shelf. Her expression changes to a soft surprise: her eyes widen gently, and her mouth opens in a small round 'o'. Finally, she closes her eyes and savors a warm, blissful smile.
それでも、1 本の中で 6 カットに割られていた。
- 反応の顔は正面の寄り。カメラを冷蔵庫の中(プリンの位置)に置いて、プリンを見る顔を正面から撮っている
- 1 カットに 1 つの表情。表情の変化は、カットの切り替えで起こしている。1 カットは 1.5 秒前後
- 目を閉じた至福は、その顔だけの 2 秒のカットになっている
冷蔵庫の中から撮る、はっと見つけた顔を正面から撮る、は予想どおりの典型的な選び方だ。いつもこれが良いとは限らないが、このお題にはいい選択をしている。
低級言語で書く(手元の Wan)
道具
- 映像: Wan 2.2 TI2V 5B Turbo(手元の RTX 3090・ComfyUI)。入力は開始画 1 枚と英語の文で、出力は 704×1280・24fps・約 5 秒。終わりのコマも途中のコマも指定できない
- 開始画: GPT-image-2(codex)。キャラクターの参照画像などを渡して描かせ、中央を 9:16 に切る
- 編集: ffmpeg。クリップの区間を切ってつなぎ、最後のコマを止める。題名のテロップと合成の効果音を足し、-14 LUFS に合わせる
- キャラクター: Muse 版の日焼けミューとは別の、金髪のポニーテールの女性。参照画像を 1 枚渡し、服だけ仕様書どおり部屋着にした(Gemini 版も、参照画像を渡して作っている)
Wan に渡せるのは「この絵から、こう動け」だけだ。カットを何枚に割るか、どの画角か、何秒使うか、どこで止めるか、キャラクターと冷蔵庫をどうそろえるかは、全部こちらで書くことになる。
v1: 全部ひとつのアングル
最初は、Muse の仕様書のカット表と指示文を、キャラクターの記述だけ替えてそのまま Wan に流した。つなぎ目を飛ばさないように、前のクリップの最後のコマを次のクリップの開始画にした(仕様書の制作ルールにある)。
Wan v1(22.3 秒)
冷蔵庫を開けてから取り出すまでの約 18 秒が、ずっと膝から上を横から撮った引きのままだった。最後のコマから次を作ると、画角までそのまま引き継がれる。発見の顔も引きの中で小さい。完全に失敗作だった。
v2: カット割りを原則から決める
Muse 版の画角を写せば直るが、それでは学びにならない。そこで、カット割りの原則を Web で集めた(撮影・編集の教科書的な解説が中心)。手元にあるマンガのネームの演出の決まりとも突き合わせた。
| 原則 | 中身 |
|---|---|
| 引き → 中 → 寄り | 場所を見せてから、動作、顔へと寄ると、空間と芝居が保たれる |
| 寄りは山にとっておく | 顔の寄りは「ここが大事」の合図。感情の山のカットに使うと効く |
| 見る顔 → 見た物 → 反応の顔 | この 3 つで、セリフなしに気づきが伝わる |
| 隣り合うカットに差をつける | 大きさか角度をはっきり変える。足りないとジャンプカットに見える(30 度ルール) |
| 縦型は顔と文字を中央の約 7 割に | 上下に UI が重なる(数字は 1 社の目安) |
出どころは、StudioBinder のショットの解説(ショットサイズ・クローズアップ・主観ショット・インサート)、Wikipedia の 30-degree rule・Eyeline match・180-degree rule など。縦型の数字は映像制作会社のブログで、裏の取れた値ではない。
手元のマンガの決まりにある「隣り合うコマで距離・角度・左右が全部同じなら、読ませる物を変える」は、映像の 30 度ルールと同じだった。v1 はこれにも反していた。
この問いで採点すると、v1 は 12 項目中 6 つが NO だった。v2 は画角を「引き → 横顔の胸から上 → プリンだけのカット → 顔の寄り → 中サイズ → 正面」と決め直し、各カットの開始画を参照画像から新しく描いた。
Wan v2(20.7 秒)
同じ問いは、Muse 版の弱い所も拾った。プリンだけのカットが無い、同じ寄りが約 13 秒続く、棚のびんにラベルの文字が出ている(仕様書は「映像の中に文字を入れない」)。
表情の演技
カット割りは良くなった。でも、肝心の表情の演技はまだまだ Muse の方が上で、「疲れている」「見つけた」「ぱっと嬉しくなる」のどれも分かりづらかった。
指示文を見直すと、演技の書き方は Muse の指示文とほぼ同じだった(眉は寄せずに丸く上げる、口は小さい「お」など)。同じ文で差が出ているので、差は文ではなく生成のルートの側にある。
v3 では、感情の段ごとに 5 秒ずつクリップを分けた。段の頭の変化(頭が垂れる、満面の笑顔)は出やすくなった。一方で「目を閉じたまま 2 秒止める」のような、変化のあとで表情を保つ演技は、まばたきになって出なかった。
v4 では、Gemini 版で見えたことを当てはめた。
- 表情は開始画の時点で描いておき、Wan には 1.5〜2 秒の小さな動きだけをさせる
- 1 カットに 1 つの表情にして、変化はカットの切り替えで起こす
- 反応の顔は、冷蔵庫の中から撮った正面の寄りにする
Wan v4(18.5 秒)
このお題・この 1 回では、正面の寄りで「ぱっと目が見開いて口が『お』」が 1.0 秒目に出た。目を閉じた至福は、Wan が 1.25 秒で目を開けてしまうので、閉じたと見えたコマを止めて 2 秒にした(あとで拡大したら、そのコマは半目だった。次の節)。
逆効果だった言葉もある。v2 では「柔らかく」「ゆっくり」と書いて、変化がほとんど出なかった。v4 では「ぱっと見開く(snap wide open)」と書いて、瞳が点に縮むショックの顔になった。
問題探し
v4 を見たら「こわい」と言われた。正体は、最後のカットが半目で止まっていたことだった。
0.25 秒ごとのコマの一覧で「いちばん明るい笑顔」を選び、そのコマを 0.8 秒止めた。止めた 1 コマそのものを、拡大して確かめていなかった。至福の止めも、目が閉じきらない半目だった。
そこから問題を探すと、次々に出てきた。
| 問題 | 中身 |
|---|---|
| 冷蔵庫の開け閉めが破綻 | 扉が開く途中で扉そのものが消える。次のカットでは開く向きが逆 |
| アップの顔が別人 | 正面の寄りだけ、髪が白く、顔が丸く広い |
| 冷蔵庫にかけた手が左右逆 | カメラから遠い左腕の先が、右手の形。開始画の時点で、もうそうなっていた |
| 切れ目で目の状態が逆 | プリンを見て目を開けた次のカットが、目を閉じた顔から始まる |
| 棚の中身が違う | カットによって、棚が空だったり、びんが並んでいたりする |
根っこはほとんど 1 つだ。カットごとに開始画を別々の参照から描いたので、キャラクター(髪の色・顔の形)と冷蔵庫(扉の向き・中身)に、全カットで共有する定義が無かった。Gemini 版は 1 回の生成なので、そこが自動でそろう。
高級言語と低級言語
並べてみると、Wan は低級言語、Muse と Gemini は高級言語だと思えた。
| 高級言語(Muse・Gemini)が裏でやること | 低級言語(Wan)でこちらが書くこと |
|---|---|
| 短い文から、カット割りを決める | 画角の表・カットごとの開始画・使う区間・止め |
| 1 回の生成の中で、キャラクターと物を同じに保つ | 参照画像を毎回渡す。渡し方を誤ると別人になり、扉の向きが変わる |
| 表情の変化のタイミング(ぱっと・ためる) | 1 カット 1 表情に分け、止めるコマを 1 コマ単位で選ぶ |
今回の破綻は、低級言語でよくある型だった。別人の顔・扉の向き・棚の中身は、全カットで共有すべき状態を、各カットがばらばらに持っていたから起きた。半目の止めは、境界の値を確かめずに 1 コマを使い回したバグに近い。
逆に、低級言語ならではの所もある。Gemini のカットは典型で、それがこのお題には合っていた。典型でない画角や演技にしたいとき、高級言語の既定の選び方は外しにくい。Wan は手元で何度でも回せ、1 カットずつ直せ、中で何が起きているかも全部見える。
ただ、これは「Claude がコンパイルできていない」問題とも言える。お題(高級言語)を Wan への命令(低級言語)に訳したのは Claude だ。共通の定義を持たなかった、「柔らかい驚き」を「ぱっと見開く」と訳し違えた、止めるコマや切れ目を確かめなかった、典型のカット割りを最初は知らなかった。コンパイラとして落としていた所は、これだけある。
コンパイラを替える(agy)
そこで、書き下ろす側を agy(Google の Antigravity CLI。モデルは Gemini 4 Argon)に替えてみた。お題を渡して、カット割りから各カットの命令(開始画の指示文・動画の指示文・使う区間・止め・音)までを、決まった形の JSON に書かせる。実行は同じ手元の道具だ。
1 回目は、Muse の仕様書の文字をまるごと渡し、こちらで測った Wan の苦手も並べた。すると、Muse 版のカット表をそのままなぞってきた。キャラクターも、参照画像を無視して仕様書の「日焼けミュー」(日焼け・そばかす・サイドの編み込み)に書き換えた。各カットの理由は、こちらが並べた苦手の言い換えだった。エチュードは、お題に沿ってカット割りまで考える課題だ。答えにあたる物を渡してはいけなかった。
2 回目は、お題(趣旨・お題・感情の弧・評価基準・形式・キャラクター)と、機械で「できること」だけを渡した。agy は自分で 8 カットに割り、設定画を 3 枚(キャラクターの全身と胸から上・台所と冷蔵庫とプリン・冷蔵庫の前の位置関係)決めて、全カットの参照に回してきた。
Wan・agy がコンパイル(21.0 秒)
Wan・Claude がコンパイル(v4)
- キャラクター・冷蔵庫の向き・プリンは、全カットでそろった。v4 で崩れた「共通の定義」を、agy は最初から入れていた
- プリンは皿のフランではなく、カップのプリンになった。お題の「昨日のプリン」からの解釈だ
- 顔は 3/4 正面の胸から上が中心で、冷蔵庫の中から撮るカットは無かった。場所の分かる引きも無い
- 「見つけた」カットの最後で、もうプリンを手に持っていて、次の「取り出す」カットと順番が合わない
手の左右は、agy の指示文では「右手で扉を開ける」と正しく書かれていた。それでも画像モデルは、右手の形をカメラから遠い左腕につないだ。コンパイラが正しくても、その下の段で誤る。
実行の側でも、こちら(Claude)が誤った。agy の JSON を手元の道具に渡す変換で、動画の指示文の頭に全カット共通でキャラクターの記述を足した。そのせいで、人の映らない冷蔵庫の中のカットに、Wan が別の女の子を描き足した。足すのをやめて、そのカットだけ作り直した。
砂漠に砂金
カット割りは、原則を集めてチェックリストにすれば直せた。そろい方は、設定画を先に決めて全カットに渡せば直る(agy がやってみせた)。
一方で、手の左右・扉の破綻・止めたコマの半目は、画像モデルや動画モデルの段で、カットごとにばらばらに出る。低級言語のままでは、1 コマずつ拡大して拾うしかない。砂漠で砂金を探すような作業になるので、この試みはここでいったん終える。
時間とコスト
| 項目 | 数 |
|---|---|
| Wan のクリップ | 34 本(1 本 190〜320 秒。1 本だけ VAE デコードで 15 分止まりかけた) |
| GPU の時間 | 合計 約 2.3 時間(手元の RTX 3090) |
| 開始画(GPT-image-2) | 26 枚(1 枚 1〜2 分)。週の利用枠は 18% → 21% |
| Colab のユニット | 0 |
| 版 | v1〜v4(Claude がコンパイル)と agy 版。ほかに agy の 1 回目(実行せず) |
まだ分かっていないこと
- 演技の差のうち、どこまでがモデルの大きさの差か。同じ分け方のまま Wan 2.2 14B にすると、どこまで縮まるか
- 設定画を共通の定義にしたうえで、手の左右や扉の向きを、画像の段で機械的に確かめる方法
- 典型でないカット割り(冷蔵庫の中から撮らない、正面にしない)で、同じくらい感情が読めるか