動画上の唇を音声と同期させる生成AIサービス「sync.」を使って既存動画に口パクをさせてみた

[Supership](https://supership.jp/)の名畑です。人生において私のそばに常にいる存在といえば週刊少年ジャンプなわけですが、買い続けている理由の一つが[僕のヒーローアカデミア](https://www.shonenjump.com/j/rensai/myhero.html)でした。[連載終了](https://twitter.com/horikoshiko/status/1821223942771896521)おめでとうございます。これまでありがとうございます＆お疲れ様でした。
そしてまったく関係ないですが[ニコニコ動画の復活](https://blog.nicovideo.jp/niconews/226054.html)もお疲れ様でした＆ありがとうございます。私の人生を支えてくれているWebサービスと言っても過言ではありません。

## はじめに

> 具体的には、これまでのリップシンクがImage to Videoだったのに対し、Video to Videoが可能である点。この一点で価値があります。HeyGen、D-ID、SadTalker、Hedra、Character-1、いずれも元になる静止画を参照してリップシンクできますが、すでにできてしまった動画に、音声だけをリップシンクさせるということはできませんでした。
> 
> [動画と音声ガッチャンコでなんでもAI口パク「sync.」。リップシンクはVideo to Videoの時代に突入した（CloseBox） | テクノエッジ TechnoEdge](https://www.techno-edge.net/article/2024/08/12/3591.html)

ということで話題の[sync.](https://synclabs.so/)を実際に使ってみました。

[Web API](https://docs.synclabs.so/api-reference/introduction)も用意されていますが、今回はブラウザ上での動画生成を行います。

## ログイン

[sync.のトップページ](https://synclabs.so/)で**login**か**try for free**をクリックすと[login画面](https://app.synclabs.so/login)に遷移します。ページ下部に「**Don't have an account? Sign up**」と書かれたリンクがあるので、ここをクリックすると**Sign up**のページです。

![sync_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/29e55144-cfa0-30e0-4dae-02a306cee70f.png)

メールアドレス、Googleアカウント、Githubアカウントのいずれかが使えます。
メールアドレスの場合は登録したアドレスに認証用のメールが届きますので、そちらに従います。

loginが完了して、いくつかアンケート的なものに答えます。

![sync_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/5a031023-c94f-78ce-6fbd-5d86e241be2c.png)

すると実際に使うことができるようになります。

## 元動画

今回は過去記事「[話題の動画生成AIサービス「Gen-3 Alpha」と「Dream Machine」を比較してみた](https://qiita.com/nabata/items/01ca8a2a7fd005765db3)」で作成した以下の動画を用います。以下はアニメーションGIFですが、実際はmp4です。

![gen-3-alpha-3.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/029598d3-03bd-39df-f669-679e71d8a849.gif)

ほぼ唇が動いていない動画ですね。

## 音声と同期した動画の生成

![sync_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/74e177d7-a361-236c-4aa2-d990b5e15d6c.png)

new projectを選択します。

するとvideoとaudioの指定画面に遷移します。

![sync_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/823e6d37-bd45-f977-d752-dd7785f3c3eb.png)

音声は「**text to audio**」を選ぶと、元ファイルがなくても読み上げてもらうことができます。実際は既存音声が存在するユースケースの方が多い気はしますが、今回は「**text to audio**」で「**足つぼの科学的根拠を教えてよ**」と読んでもらうことにします。
この言葉に特に深い理由はないです。私が足つぼ好きなだけです。

声質を選ぶことができますので、ここでは「**Young Ameridcan Female**」としました。

Modelはデフォルトのままで**syn-1.7.1-beta**としています。

**generate**を押してしばらく待ちます。

## 結果

音声付きのためアニメーションGIFにできず、YouTubeにアップしました。唇の動きが小さいため、低解像度での再生だとわからないかもしれません。

<iframe width="560" height="315" src="https://www.youtube.com/embed/v4FJ_wj14uc?si=PK1hPCU_8Q1D6quG" 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>

唇と音声がきっちり同期しているかはともかく、元々ほとんど動いていなかった唇が動いてはいます。

生成過程を知らずに見せられれば、そこまで違和感を持たない気もします。
ただ、唇が小さいからか、わかりづらいですね。

せっかくなのでもう一つ試してみます。
別の過去記事「[Stable Video DiffusionのWeb API呼び出しをPythonで実装して静止画を動画にしてみた](https://qiita.com/nabata/items/00ae91dbb4a429b092ec)」で生成した以下を元にして生成してみました。

![1704610199_seed_0_cs_2.5_mbi_40.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/c4e05476-ac9a-a2b0-878e-0bb5e3612125.gif)

読み上げる言葉は「**足つぼの科学的根拠を教えてよ**」、声質は「**Young Ameridcan Female**」で、どちらも先ほどと同じ選択としました。

結果は以下です。正方形だとショート動画扱いになってしまうため、両脇に黒帯をつける修正のみしています。

<iframe width="560" height="315" src="https://www.youtube.com/embed/yUWXRA11VOQ?si=gnRsU7ZpRwW3Pb1k" 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>

こちらも自然とまでは言い切れないですが、唇並びにその周辺だけがそれっぽく動く結果にはなっていますね。

## 最後に

動画生成に至る過程の気軽さがなによりも大きいですね。

## 宣伝

[SupershipのQiita Organization](https://qiita.com/organizations/supership-inc)を合わせてご覧いただけますと嬉しいです。他のメンバーの記事も多数あります。

Supershipではプロダクト開発やサービス開発に関わる方を絶賛募集しております。
興味がある方は[Supership株式会社 採用サイト](https://supership.jp/recruit/)よりご確認ください。