音声は素晴らしく、額面どおりに再生でき、PaddleGAN に基づいて人工知能 AI 音声モデルと動的な画像を一致させます (Python3.10)

So-vits の助けを借りて、さまざまな音色モデルを自分でトレーニングし好みの曲を再現して、自由に曲をオーダーできるようになりましたが、常に何かが足りないと感じることがあります。AIトランプの歌声と精悍なイメージが同時に現れ、PaddleGANをベースに「美しい声と美しいイメージ」を備えた「Knowing King」を構築しました。

PaddlePaddleはBaiduのオープンソースディープラーニングフレームワークであり、その機能はテキスト、画像、ビデオの3つの主要分野で計40モデルをカバーする包括的なものであり、ディープラーニングの分野で見られるものと言えます。 。

PaddleGAN 視覚効果モデルのサブモジュールである Wav2lip は、オープンソース ライブラリ Wav2lip を二次パッケージ化して最適化したもので、キャラクターの口の形と入力された歌詞や音声の同期を実現し、まるで歌っているように聞こえます。

また、Wav2lipは動的な映像を唇の形状に直接置き換えて、対象の音声に合わせた映像を出力することもでき、AIを通じて自分の口腔イメージを直接カスタマイズすることも可能です。

CUDA と cudnn をネイティブに構成する

PaddlePaddle フレームワークをローカルで実行するのは簡単ではありませんが、幸いなことに、中国のディープラーニング分野の巨人である Baidu によって承認されており、ドキュメント リソースも非常に豊富です。大きな問題はないだろう。

まず、ローカルで Python3.10 開発環境を構成します (「オールインワン カバレッジ、さまざまなアーキテクチャ (Intel x86/Apple m1 シリコン) を備えたさまざまな開発プラットフォーム (Win10/Win11/Mac/Ubuntu) での Python3 のインストールと構成」を参照してください。10)開発環境

次に、CUDA と cudnn をローカルで構成する必要があります。cudnn は CUDA ベースの深層学習 GPU アクセラレーション ライブラリです。これを使用する場合のみ、GPU 上で深層学習の計算を完了できます。これは作業ツールに相当し、CUDA はコンピューティング プラットフォームとして cudnn の協力を必要とし、2 つのバージョンを一致させる必要があります。

まず、N カード コントロール センター プログラムをクリックして、ネイティブ N カード ドライバーでサポートされている CUDA バージョンを確認します。

写真を見ると、筆者のグラフィックスカードはRTX4060で、現在のドライバーは最大バージョンのCUDA12.1、つまりCUDA 12.1以下であればサポートされていることがわかります。

次に、PaddlePaddle フレームワークの公式ドキュメントを確認して、Python3.10 でサポートされているフレームワークのバージョンを確認します。

https://www.paddlepaddle.org.cn/documentation/docs/zh/install/Tables.html#ciwhls-release

ドキュメントによると、Python3.10 の場合、サポートされている PaddlePaddle の最高バージョンは win-cuda11.6-cudnn8.4-mkl-vs2017-avx です。つまり、CUDA のバージョンは 11.6、cudnn のバージョンは 8.4 です。 . サポートされなくなりました。

したがって、このマシンには CUDA11.6 と cudnn8.4 をインストールする必要があります。

バージョンが一致している必要があることに注意してください。一致しないと、後でプログラムを開始できません。

バージョン番号がわかれば、N カードの公式 Web サイトにアクセスしてインストール パッケージをダウンロードするだけです。

CUDA11.6インストールパッケージのダウンロードアドレス:

https://developer.nvidia.com/cuda-toolkit-archive

cudnn8.4 インストール パッケージのダウンロード アドレス:

https://developer.nvidia.com/rdp/cudnn-archive

まず CUDA11.6 をインストールします。インストールが完了したら、cudnn8.4 圧縮パッケージを解凍し、解凍したファイルを CUDA11.6 インストール ディレクトリにコピーします。CUDA のインストール パスは次のとおりです。

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6

次に、bin ディレクトリをシステムの環境変数に追加する必要があります。

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\bin

次に、ターミナルでデモ フォルダーに入ります。

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\extras\demo_suite

BandwidthTest.exe コマンドを実行すると、次の結果が返されます。

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\extras\demo_suite>bandwidthTest.exe  
[CUDA Bandwidth Test] - Starting...  
Running on...  
  
 Device 0: NVIDIA GeForce RTX 4060 Laptop GPU  
 Quick Mode  
  
 Host to Device Bandwidth, 1 Device(s)  
 PINNED Memory Transfers  
   Transfer Size (Bytes)        Bandwidth(MB/s)  
   33554432                     12477.8  
  
 Device to Host Bandwidth, 1 Device(s)  
 PINNED Memory Transfers  
   Transfer Size (Bytes)        Bandwidth(MB/s)  
   33554432                     12337.3  
  
 Device to Device Bandwidth, 1 Device(s)  
 PINNED Memory Transfers  
   Transfer Size (Bytes)        Bandwidth(MB/s)  
   33554432                     179907.9  
  
Result = PASS  
  
NOTE: The CUDA Samples are not meant for performance measurements. Results may vary when GPU Boost is enabled.

これは、インストールが成功し、deviceQuery.exe を通じて GPU デバイスをクエリできることを意味します。

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\extras\demo_suite>deviceQuery.exe  
deviceQuery.exe Starting...  
  
 CUDA Device Query (Runtime API) version (CUDART static linking)  
  
Detected 1 CUDA Capable device(s)  
  
Device 0: "NVIDIA GeForce RTX 4060 Laptop GPU"  
  CUDA Driver Version / Runtime Version          12.1 / 11.6  
  CUDA Capability Major/Minor version number:    8.9  
  Total amount of global memory:                 8188 MBytes (8585216000 bytes)  
MapSMtoCores for SM 8.9 is undefined.  Default to use 128 Cores/SM  
MapSMtoCores for SM 8.9 is undefined.  Default to use 128 Cores/SM  
  (24) Multiprocessors, (128) CUDA Cores/MP:     3072 CUDA Cores  
  GPU Max Clock rate:                            2370 MHz (2.37 GHz)  
  Memory Clock rate:                             8001 Mhz  
  Memory Bus Width:                              128-bit  
  L2 Cache Size:                                 33554432 bytes  
  Maximum Texture Dimension Size (x,y,z)         1D=(131072), 2D=(131072, 65536), 3D=(16384, 16384, 16384)  
  Maximum Layered 1D Texture Size, (num) layers  1D=(32768), 2048 layers  
  Maximum Layered 2D Texture Size, (num) layers  2D=(32768, 32768), 2048 layers  
  Total amount of constant memory:               zu bytes  
  Total amount of shared memory per block:       zu bytes  
  Total number of registers available per block: 65536  
  Warp size:                                     32  
  Maximum number of threads per multiprocessor:  1536  
  Maximum number of threads per block:           1024  
  Max dimension size of a thread block (x,y,z): (1024, 1024, 64)  
  Max dimension size of a grid size    (x,y,z): (2147483647, 65535, 65535)  
  Maximum memory pitch:                          zu bytes  
  Texture alignment:                             zu bytes  
  Concurrent copy and kernel execution:          Yes with 1 copy engine(s)  
  Run time limit on kernels:                     Yes  
  Integrated GPU sharing Host Memory:            No  
  Support host page-locked memory mapping:       Yes  
  Alignment requirement for Surfaces:            Yes  
  Device has ECC support:                        Disabled  
  CUDA Device Driver Mode (TCC or WDDM):         WDDM (Windows Display Driver Model)  
  Device supports Unified Addressing (UVA):      Yes  
  Device supports Compute Preemption:            Yes  
  Supports Cooperative Kernel Launch:            Yes  
  Supports MultiDevice Co-op Kernel Launch:      No  
  Device PCI Domain ID / Bus ID / location ID:   0 / 1 / 0  
  Compute Mode:  
     < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >  
  
deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 12.1, CUDA Runtime Version = 11.6, NumDevs = 1, Device0 = NVIDIA GeForce RTX 4060 Laptop GPU  
Result = PASS

この時点で、CUDA と cudnn が構成されます。

PaddlePaddle フレームワークを構成する

CUDA を構成したら、PaddlePaddle フレームワークをインストールしましょう。

python -m pip install paddlepaddle-gpu==2.4.2.post116 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html

ここでpaddlepaddleのGPUバージョンをインストールします、バージョン番号は2.4.2.post116、2.4が最新バージョン、116はCudaのバージョンを表します、バージョンを間違えないように注意してください。

次に、PaddleGan プロジェクトのクローンを作成します。

git clone https://gitee.com/PaddlePaddle/PaddleGAN

コマンドを実行して、PaddleGan プロジェクトをローカルにコンパイルしてインストールします。

pip install -v -e .

次に、他の依存関係をインストールします。

pip install -r requirements.txt

説明が必要な落とし穴がいくつかあります。

まず第一に、PaddleGan が依存する numpy ライブラリはまだ古いバージョンであり、最新バージョン 1.24 をサポートしていないため、numpy のバージョンが 1.24 の場合は、最初に numpy をアンインストールする必要があります。

pip uninstall numpy

次に、バージョン 1.21 をインストールします。

pip install numpy==1.21

次に、PaddleGan が Python ターミナルに正常にインストールされていることを確認します。

import paddle  
paddle.utils.run_check()

このエラーが報告された場合:

PreconditionNotMetError: The third-party dynamic library (cudnn64_7.dll) that Paddle depends on is not configured correctly. (error code is 126)  
      Suggestions:  
      1. Check if the third-party dynamic library (e.g. CUDA, CUDNN) is installed correctly and its version is matched with paddlepaddle you installed.  
      2. Configure third-party dynamic library environment variables as follows:  
      - Linux: set LD_LIBRARY_PATH by `export LD_LIBRARY_PATH=...`  
      - Windows: set PATH by `set PATH=XXX; (at ..\paddle\phi\backends\dynload\dynamic_loader.cc:305)  
      [operator < fill_constant > error]

cudnn64_7.dll ダイナミック ライブラリをダウンロードし、それを CUDA11.6 の bin ディレクトリにコピーする必要があります。ダイナミック ライブラリのアドレスは後で公開されます。

バリデーターを再度実行すると、以下が返されます。

Python 3.10.11 (tags/v3.10.11:7d4cc5a, Apr  5 2023, 00:38:17) [MSC v.1929 64 bit (AMD64)] on win32  
Type "help", "copyright", "credits" or "license" for more information.  
>>> import paddle  
>>> paddle.utils.run_check()  
Running verify PaddlePaddle program ...  
W0517 20:15:34.881800 31592 gpu_resources.cc:61] Please NOTE: device: 0, GPU Compute Capability: 8.9, Driver API Version: 12.1, Runtime API Version: 11.6  
W0517 20:15:34.889958 31592 gpu_resources.cc:91] device: 0, cuDNN Version: 8.4.  
PaddlePaddle works well on 1 GPU.  
PaddlePaddle works well on 1 GPUs.  
PaddlePaddle is installed successfully! Let's start deep learning with PaddlePaddle now.

これは、作業が完了し、インストールが成功したことを意味します。

ローカルな推論

次に、トランプの歌に動的な画像を追加しましょう。まず、安定拡散を通じて国王の静的な画像を生成します。

Stable-Diffusion については、人工知能、Danqing マスター、フル プラットフォーム (ネイティブ/Docker) ビルド Stable-Diffusion-Webui AI ペインティング ライブラリ チュートリアル (Python3.10/Pytorch1.13.0) に移動してください。スペースの制限により、ここでは終了しました。繰り返す。

次に、プロジェクトの tools ディレクトリに入ります。

\PaddleGAN\applications\tools>

トランプの静止画像と歌のファイルをツール ディレクトリに置きます。

次に、ローカル推論のためにコマンドを実行します。

python .\wav2lip.py --face .\Trump.jpg --audio test.wav --outfile pp_put.mp4 --face_enhancement

ここで、--face はターゲット画像、--audio は唇の形状と一致する必要がある曲、--outfile パラメータは出力ビデオです。

face_enhancement: パラメータで顔の強調を追加できます。パラメータを追加しない場合、デフォルトでは拡張機能は使用されません。

ただし、このパラメーターを追加するには、モデル ファイルを別途ダウンロードする必要があります。

音声との正確なリップシンクにおける Wav2Lip の画期的な進歩の鍵は、リップシンク弁別器を使用してジェネレーターに正確でリアルな唇の動きを継続的に生成させることです。さらに、弁別器で単一フレームの代わりに複数の連続フレームを使用することで視覚的品質を向上させ、時間的相関を考慮するために (単なるコントラスト損失ではなく) 視覚的品質損失を使用します。

具体的な効果:

エピローグ

場合によっては、人工知能 (AI) テクノロジーの発展により、人々は本当に隔世の感を感じ、聴覚や視覚が真実ではなくなる可能性があります。最後に、完成したビデオは Youtube プラットフォーム (B ステーション) で検索できます。Liu Yue の技術ブログ、ぜひ皆さんも味わってみてください。この記事に関係するすべてのインストール パッケージとダイナミック ライブラリは次の場所にあります。

https://pan.baidu.com/s/1-6NA2uAOSRlT4O0FGEKUGA?pwd=oo0d   
提取码:oo0d

おすすめ

転載: juejin.im/post/7234111773389553722