動画生成AIを使ったMV制作
ここ数ヶ月でDreamMachineやKling、Viduといったサービスが登場し、立て続けにGen-3 alphaの強力そうなアップデートがリリースされました。
そこで今回、仕事での活用も視野に入れ、練習を兼ねた動画を制作しました。
作ってみてどうだった?
動画生成AIは現状、ひとりで簡単に映画並みの作品が作れる!みたいな、そんな気分にさせてくれる大変有意義な技術だと思います。
ただ、長尺の映像を作るには手間やコスト的になかなか厳しいのではないでしょうか。むしろ、ふと思いついた落書きのようなアイデアをすぐ形にして遊ぶのには最高の玩具のように思えます。
SNSで様々な表現を発信したり、そこそこの品質で日々量産をしたり、工夫次第で効果的なものが作れる筈。
そんなわけで、今回の作業を経験して得た知見をまとめておきます。
1. 登場人物や構成のアイデア出し
なぜ緑?なぜフルーツ?
昔近所に住んでいたヤバい人から着想を得て作りましたが、詳しいことは割愛します。
2. 大まかな制作フロー
通常の動画制作と同様ですが、収録の工程が省略される分、プロンプトを試行錯誤して素材を生成するための時間が必要になります。
編集にかかるコストは普通の動画制作と変わらないというか、むしろ生成された動画をアップスケールして、なんとか品質を保つための工数が追加されることになります。ただし、企画の自由度が高い点や、編集中に必要な素材を後からすぐに生成できる点は非常に優れています。
3. 楽曲や音声
作詞
音が決まると映像がイメージしやすくなるので、今回は先にBGMを生成しました。
曲としてのまとまりを重視するため、極力韻を踏んでもらうようにしました。韻を踏むことで自然と音数が揃い、リズムも出やすくなります。
曲構成をシンプルにするため、同じフレーズを繰り返してもらうことにも重点を置きました。
歌詞の段階で注意したのは以上の2点です。細かいところでは、ChatGPTにコード形式で歌詞を出力してもらうことで、コピペがしやすくなりました。
Suno AI
Suno AIに渡したプロンプトは以下のとおりです。
comedy show theme, comical. uptempo, funk, pop
陽気なコメディのオープニング風にしてもらいます。歌詞はそのままコピペで渡し、10曲ほど生成を試して、最終的に絞られた候補は以下の2曲です。
Extend
ついでに、尺の調整が必要になった際に備えて、同じプロンプトと歌詞でExtendしたデータも作成しました。
Suno AIで音楽を延長する際は、曲の最後からではなく、コード進行や展開のパターンが一通り出揃った後の「01:38」くらいから延長しています。一通りのフレーズが登場してから延長した方が未知のアレンジがされにくく、楽曲のフォーマットも崩れにくいためです。
生成した楽曲はひとつのwavファイルに統合し、Adobe Auditionのリミックス機能を使って指定秒数に収めました。音質については最初から諦めているので、Stem機能も使わず、マスタリングもしていません。
そのほかの音声データや効果音は、Motion Arrayで調達しました。
4. 映像素材の制作
キャラクター定義
まず、ベースとなるキャラクターのデザインをMidjourneyで作成します。顔にばらつきが出るのはある程度仕方がないと考えています。全身像を生成し、どのようなポーズでもプロンプトが適切に追従できるようにしておきます。
以降、Midjourneyで--crefを使ったイメージ参照をおこないますが、この際に頭から胴までの半身画像のみを使うと、全身を描写したい場合でも下半身が描かれないことが多々ありました。必ず全身が写った絵を用意しておくのが良さそうです。また、余計なノイズを避けるために、背景は真っ白で生成しています。
静止画の量産
定義したキャラクターを--crefで参照しながら、動画の第一フレームとなる画像を生成していきます。こまめにカットを切り替えることを前提に、最終的には300〜400枚作成しました。
最終的にはホラーにしたかったので、AIならではの不条理な構図、液体の飛び散る描写や逆再生みたいなキャラクターの動きなど、なるべく活かせるような素材を集めています。
一例
グリーンレジェンドはヤバい人という設定なので、過剰に巨大なアイテムを持っていたり、奇妙な家具を所有していたりします。あまり一般的ではない物に囲まれて得意げになっている姿は、とてもユーモラスです。
プロンプトの追従性
英語力が不足しているため、DeepLを使って翻訳しながら作業をおこないましたが、以下は思い通りにいかなかった部分です。
Jumping out of a [object]
例えば、jumping out of a [object](割れたリンゴから飛び出す老人の絵)を生成したかったのですが、明確に解釈されず、思うような結果が得られませんでした。果物から人間が飛び出すという非現実的な状況を、どのように伝えれば良いかは最後まで大きな課題でした。
非現実的なものというか、物理的に不自然なものを言葉で指示するのが難しいのは自分の英語力が足りないだけなのか、そもそも生成AIにとって難しいものなのか…
とはいえ、それこそがAIならではという部分でもあるので、今回はプロンプトの再現度が高いChatGPTに参考画像を生成してもらったり、Photoshopのコラージュ画像をリファレンスにして、なんとか希望の絵に近いものを出力してもらいました。
Orange sunglass
Orange sunglassという要素についても、キャラデザイン段階でオレンジ色のサングラスを設定していたとしても、生成された画像ではレンズが緑色になったり、素材や形状が異なったりすることが多々ありました。そのため、プロンプトには都度"Orange sunglass"を追記しています。
シーンの区分け
大きく分けて以下7種類のシーンに分け、それぞれに使えそうな素材を生成しました。
モンスターが暴れる
子供がフルーツまみれで遊ぶ
老人がフルーツと格闘する
観客がショーを楽しむ
4、5人でダンスする
ステージでマイクを持って話す老人
モンスターと抱き合う老人
ロゴ
Midjourney6になって英字のスペルを間違えることはほとんどなくなりました。出現アニメーションも生成を試みましたが、何度か試してあまり希望のものを生成できなかったため、今回は諦めました。
5. 動画生成
Midjourneyで生成した画像をスタートフレームとして、KlingのProfessional Modeを使い、大体100本程度の動画を生成しました。
Klingは中国語のプロンプトも認識します。むしろ英語よりも理解されやすいことが多かったです。
6. アップスケール / フレーム補完
一通りの素材が揃ったら、Topazなどのツールでアップスケールとフレーム補完をおこないます。今回は予算の都合上、VideoProc Converter AIを使用しました。
解像度: HD 1280x720 → 4K 3840x2160
フレームレート: 30FPS → 60FPS
7. 編集作業
最後に、今回はPremiereで編集を進めました。
素材生成とアップスケールが終われば、あとは通常の編集作業と同じです。
8. 使用したテクニック
Gen-3でキャラクターを喋らせる
グリーンレジェンドが喋るシーンのみ、Runway gen-3で生成しています。
といっても、結局リップシンクは使っていません。喋っている映像を生成し、Premiereのタイムワープで口の開閉タイミングを合わせただなので、随分雑な対応をしています。
Midjourneyのinpaint機能
今回は全然活躍しませんでしたが、生成中に何度かinpaint機能を試しました。
上記は動画生成すら使わない表現ですが、それ以外でもいろんな表現ができそうです。
Runwayのサンプルは、他のサービスでも機能するものがあると思います。
力技のPhotoshop合成
予想以上に面白い結果が得られたのは、Photoshopでコラージュした静止画を開始フレームに指定した時の結果でした。
1分くらいで作った雑なコラージュですが、光源や色味に大きな差異がなければ(多分、生成の際に深度マップのようなものを作ってるため)手前に2人、奥に1人の位置関係を理解して生成してくれることがわかりました。
9. まとめ
お疲れ様でした。以上が今回の動画制作でやったことのまとめになります。
映像はタイミングや音などが大変重要で、素材のクオリティだけでは品質を上げることはなかなか難しく、それはAIであっても変わらずでした。
とはいえやりたいことが定まっていれば、「こういったカットが欲しい」という要件を形にすることは以前より容易い部分もあり、以前より編集の作業が楽しく感じられました。
今後も仕事の合間を縫って、制作にチャレンジをしていく予定です。