AIで解説動画を作ってみた

# あれって一体どうやってやってるんだ

朝日新聞社　メディア研究開発センターの田森です。

最近YouTubeを見ていて、よく推薦されてくるのが「AIで作成した動画」です。その中でも、有名な方ご自身が動いて喋っているような動画もあります。タイトルに「AI」と入れてくれているので、よく見ると違和感を感じることもありますが、声や顔は本人そのもので、注意して見ていないと本人が話していると勘違いするでしょう。

有名なYouTuberやインフルエンサーにとっては、AIであたかも自分が出演しているような動画が生成できれば、本人でなくてもコンテンツを量産でき、でも見た目は本人だから見られやすい、というまさに夢のような錬金術が実現できます。

でも、あれ、どうやってやってるんでしょうか。ものすごい技術を駆使しているのでしょうか。それとも現在巷に溢れているAIサービスで作ることもできるのでしょうか。今回の記事は、後者でどこまでできるのか、やってみたいとぉ、おもいま〜す！

# 完成品
いきなり完成品をお見せします。今回はこんな物を作りたいと思います。まさに私ですが、写真を何枚か撮ったり、喋ったりしただけです。結局は今あるサービスでここまでできました。

:::note warn
お断り
本記事に掲載される動画はすべて生成AIが合成したものです。
本時期に掲載される動画や写真にはすべて、46歳のわたしの顔が繰り返し表示されますので、この顔が生理的に気になる方は閲覧にご注意ください
:::

<iframe width="560" height="315" src="https://www.youtube.com/embed/9uHobzXjbqM?si=PijJIdpuOjSe3YDw" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" loading="lazy" allowfullscreen></iframe>

途中の上目遣いが、考えながら喋っているみたいでそれっぽいですね。結局は10分もあればこのような動画ができました。写真さえあればできるものですから、ある意味で恐ろしい。

ここからは、この動画に至るまでの経緯を綴りたいと思います。

# 音声合成

まずはセリフ部分の音声合成をしてみたいと思います。今回は[ElevenLabs](https://elevenlabs.io/)という音声合成サービスを利用しました。Text to Speech機能を使い、テキストから音声を合成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106239/2c197c04-f6b2-468b-86a9-7ab462fda84f.png)


いろんな声色を選択できますが、今回はAsahiさんという、日本人男性の声を選択しました（別に弊社が作ったわけではない…）。

ただ、オープニングのテンション高めの音声は、なかなか気に入るような音声を生成できなかったので、Voice Changerという機能を使いました。これは自分の声を録音して処理させると、イントネーションなどはそのままで好きな声色にできるというものです。今回は自分の声を、先程と同じくAsahiさんの声色にしてみました。

次に利用するRunwayという動画生成サービスでは、作成できる動画がだいたい最長20秒くらいなので、そのくらいの長さの単位で作っていきます。で、オープニング（Voice Changer使用）で10秒、説明の導入部分で20秒、今回は大体30秒くらいの音声を用意しました。

喋る時間がない場合は原稿を書いてそれを機械に読ませればいいですし、喋る時間があれば音声合成する必要もないですし、もし私のように声に自信がない場合は、更にVoice Changerを用いると良いと思います。Text to SpeechよりもVoice Changerのほうが、安定した出力が得られます。ElevenLabsでは声色を学習させる機能もあるようで、それを使えば誰でもインフルエンサーになれます（許可は取りましょう、もちろん）。

## 動画
今回は[Runway](https://runwayml.com)というサービスを利用して動画を生成します。このサービスは、動画の最初のコマの画像を入力し、オプションで最後のコマの画像やプロンプトを入力すれば、与えた画像を最初のコマ、あるいは最後のコマとして適当な動画を作ってくれます。

まずはオープニングの10秒です。動画の最初のコマと最後のコマの画像にはこのようなものを与えました。

最初のコマです。

![IMG_0710.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106239/ddffbf88-c6b8-4bff-c6f7-e5d3fd3723f4.jpeg)

こちらが最後のコマです。

![IMG_0711 (1).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106239/074a343d-fb4f-4463-2367-844acdf4b89c.jpeg)

ワクワクする動画になりそうですね。ちなみにスタジオは狭小書斎です。

プロンプトは下記のように与えました。与えないとすごいハイテンションになりました。

```text
A man is explaining the theme of today's video at the beginning of a YouTube video. While he is generally well-mannered, he's somewhat high-energy since it's the video's introduction.
(邦訳)一人の男がYouTubeの冒頭で今日の動画のテーマの説明をしています。基本的には行儀正しいですが、動画の冒頭なので少しハイテンションです。
```

生成結果はこちら。これでも十分ハイテンションですが、いつも見るYouTuberはこんな感じなので良いでしょう。

<iframe width="560" height="315" src="https://www.youtube.com/embed/wmXUb4hGzag?si=ra49lDLr2I9A_aqQ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

音声は何もついていません。この動画に対して、入力音声に唇の動きを合わせるLip Sync機能を適用し、音声と口の動きがの合った動画を作成します。生成した動画の、左下にあるぐるぐるマーク？を押すと、メニューが出てきます。選んだあと、音声をアップした上で再生成します。

![lipsync.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106239/cd3f7225-aa09-f47e-2cbf-13421ed0a8cd.jpeg)

Lip Sync後の、音声付き動画がこちらです。

<iframe width="560" height="315" src="https://www.youtube.com/embed/QbiDZfpOjsw?si=BBdd--690LoizRYe" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

口の周りが無理やり動かされている感じもしますが、口の動きはあっていそうです。

次に、説明の導入部分です。最初のコマとして、オープニングの最後のコマを指定します。また、こちらで使用する音声の長さは20秒くらいあります。一方で、Runwayでは動画生成の長さがデフォルトでは5秒、また10秒しか選べません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106239/aafa4b5f-bd33-cf78-60a1-e933bbfb3559.png)

そこで、一度生成した後、Expand Videoという機能を使い、生成した動画をさらに8〜10秒ほど伸ばす機能があります。伸ばしたあと、Lip Syncさせます。

まずは、最初のコマの画像だけを指定して10秒の動画を生成します。

<iframe width="560" height="315" src="https://www.youtube.com/embed/2vvFSno9zHQ?si=JWpd5l_SDCX2z0JH" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

使ったプロンプトは下記のとおりです。

```text
A man is explaining something on YouTube. While he is generally well-mannered, he uses some gestures while explaining. His facial expressions change expressively throughout the explanation.
（邦訳）一人の男がYouTubeである事柄について解説しています。基本的には行儀正しいですが、少し身振り手振りをつけながら説明しています。顔の表情は豊かに変わります。
```

次に、Expand Videoで20秒の動画にします。

<iframe width="560" height="315" src="https://www.youtube.com/embed/5Jd20VbfXFQ?si=VdPkiJ2HPj9uYJRr" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

最後に、上記の20秒の動画に対してLip Syncします。音声は、先程ElevenLabsで作った20秒の音声です。

<iframe width="560" height="315" src="https://www.youtube.com/embed/4A0RArOy19U?si=YXpYQUAOhligHR3S" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

# まさかここまでとは…

最終的に、2本の動画を動画編集ツールでつなげて、合計30秒のLLM解説動画（の冒頭）ができました。これを繰り返せば、数分の動画はすぐできそうです。

しかし、まさかここまで簡単にできるとは思いませんでした。まだ試してはいませんが、動画生成としてはちょうどOpenAIから[Sora](https://openai.com/sora)も発表されましたし、このようなムーブメントは今後続くと思われます。いままでは、特殊な機材や知識がないとできなかったようなことがここまで民主化されているのかと、改めて身にしみた2024年冬でした。

# ちなみに
AIで生成した動画は、YouTubeにアップロードする際に、それを明示する必要があるようでして、要注意です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106239/715dd056-c5aa-c9c1-ec5a-7a92789e22c6.png)