Intelligence本記事では、Wav2Lipと呼ばれる機械学習手法を用いて任意の動画の人物の唇の動きを、任意の音声に合わせて動かす方法をご紹介します。Wav2Lip概要Wav2Lipは、任意のビデオに映る人物の唇の動きを、ターゲットの音声に一致させるlip-syncing技術です。従来のリップシンクでは、動的で制約のない会話中の顔のビデオでは、唇の動きを正確にモーフィングすることができず、ビデオが上手く音声と同期しないという問題がありました。Expertから学習することによって正確なリップシンクを生成します。同様に事前訓練されたDiscriminatorを用いてリップシンクエラーを検出することで視覚品質を向上させています。Wild詳細はこちらの論文をご参照ください。本記事では上記手法を用いて、任意の動画に映る人物の唇の動きを、任意の音声に同期させていきます。デモ(Colaboratory)それでは、実際に動かしながらリップシンクを行っていきます。ソースコードは本記事にも記載していますが、下記のGitHubでも取得可能です。Colaboratoryで開くこともできます。このデモはPythonで実装しています。Pythonの実装に不安がある方、Pythonを使った機械学習について詳しく勉強したい方は、以下の書籍やオンライン講座などがおすすめです。本記事では、現役機械学習エンジニアとして働く筆者が実際に読んだ書籍の中でおすすめの書籍をレベル別に紹介しています。本記事では、機械学習エンジニアとして働く筆者が、AI・機械学習をまったく知らない方でも取り組みやすいおすすめのオンライン講座をご紹介しています。取り扱いに関する免責事項これからご紹介する技術はあくまでご自身の顔画像処理技術の理解を深めるためにのみご活用ください。本記事を参考にして生じたいかなる損害に関しても当ブログは責任を負いません。環境セットアップそれではセットアップしていきます。Colaboratoryを開いたら下記を設定しGPUを使用するようにしてください。初めにGithubからソースコードを取得します。b9759a3467cb1b7519f1a3b91f5a84cb4bc1ae4a次にライブラリをインストールします。librosa==0.8.1最後にライブラリをインポートします。display以上で環境セットアップは完了です。学習済みモデルのセットアップ続いて、論文発表元が公開する学習済みモデルをロードします。./face_detection/detection/sfd/s3fd.pth入力動画・音声のセットアップYoutubeから入力動画と音声をダウンロードします。人物の顔が映る動画をダウンロードします。動画の切り抜き範囲(秒)を指定してください。subclip.write_videofile(input_clip_path)続いて動画をダウンロードし、音声を抽出します。動画の切り抜き範囲(秒)を指定してください。videoclip.audioaudioclip.write_audiofile(input_audio_path)Wav2Lip動画と音声が揃ったので、リップシンクを実行します。./input_audio/audio.mp3出力結果は以下の通りです。AIで、音声に合わせて動画の人物の唇の動きを変えてみました。2023まとめ本記事では、Wav2Lipを用いて、任意の動画でリップシンクを用いる方法をご紹介しました。本記事では、機械学習を動かすことにフォーカスしてご紹介しました。学術的に体系立てて学びたいという方には以下の書籍などがお勧めです。*このブログについてホームサイトマップTeDokologyTeDokology。