声音好听,颜值能打,基于PaddleGAN给人工智能AI语音模型配上动态画面(Python3.10)

news2024/12/23 9:07:14

借助So-vits我们可以自己训练五花八门的音色模型,然后复刻想要欣赏的任意歌曲,实现点歌自由,但有时候却又总觉得少了点什么,没错,缺少了画面,只闻其声,却不见其人,本次我们让AI川普的歌声和他伟岸的形象同时出现,基于PaddleGAN构建“靓声靓影”的“懂王”。

PaddlePaddle是百度开源的深度学习框架,其功能包罗万象,总计覆盖文本、图像、视频三大领域40个模型,可谓是在深度学习领域无所不窥。

PaddleGAN视觉效果模型中一个子模块Wav2lip是对开源库Wav2lip的二次封装和优化,它实现了人物口型与输入的歌词语音同步,说白了就是能让静态图的唇部动起来,让人物看起来仿佛正在唱歌。

除此以外,Wav2lip还可以直接将动态的视频,进行唇形替换,输出与目标语音相匹配的视频,如此一来,我们就可以通过AI直接定制属于自己的口播形象了。

本机配置CUDA和cudnn

要想把PaddlePaddle框架在本地跑起来,并非易事,但好在有国内深度学习领域的巨擘百度进行背书,文档资源非常丰富,只要按部就班,就不会出太大问题。

首先,在本地配置好Python3.10开发环境,参见:一网成擒全端涵盖,在不同架构(Intel x86/Apple m1 silicon)不同开发平台(Win10/Win11/Mac/Ubuntu)上安装配置Python3.10开发环境

随后,需要在本地配置好CUDA和cudnn,cudnn是基于CUDA的深度学习GPU加速库,有了它才能在GPU上完成深度学习的计算。它就相当于工作的工具,而CUDA作为计算平台,就需要cudnn的配合,这俩个在版本上必须配套。

首先点击N卡控制中心程序,查看本机N卡驱动所支持的CUDA版本:

从图上可知,笔者的显卡是RTX4060,当前驱动最大支持CUDA12.1的版本,换句话说只要是小于等于12.1的CUDA就都是支持的。

随后查看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卡的官网下载安装包即可。

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

接着在终端进入demo文件夹:

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

接着在Python终端中验证PaddleGan是否安装成功:

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生成一张懂王的静态图片:

关于Stable-Diffusion,请移步:人工智能,丹青圣手,全平台(原生/Docker)构建Stable-Diffusion-Webui的AI绘画库教程(Python3.10/Pytorch1.13.0),囿于篇幅,这里不再赘述。

接着进入到项目的tools目录:

\PaddleGAN\applications\tools>

将川普的静态图片和歌曲文件放入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站)搜索:刘悦的技术博客,欢迎诸君品鉴,本文所有涉及的安装包和动态库请参见:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/550180.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux软件包管理器yum

Linux软件包管理器yum 一.什么是安装包二.关于rese1.windows传到Linux2.linux到windows 三.安装四.卸载五.yum扩展源六.一些好玩的软件1.第一个2.第二个 一.什么是安装包 1.在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序. 2.但是这样太麻…

阿里云服务器ECS是什么?详细介绍

阿里云服务器ECS是什么&#xff1f;云服务器和传统的物理服务器有什么区别&#xff1f;云服务器有哪些优势&#xff1f;云服务器可以什么&#xff1f;云服务器架构及云服务器包含哪些功能组件&#xff1f;阿里云百科来详细说下什么是云服务器ECS&#xff1a; 目录 阿里云服务…

Python+Selenium教程

PythonSelenium教程 准备工作1.安装selenium2.下载浏览器驱动3.测试执行 元素定位控制浏览器操作控制浏览器窗口大小浏览器后退前进浏览器刷新 Webelement常用方法点击和输入提交其他 鼠标操作键盘操作获取断言信息等待页面加载完成显示等待隐式等待 Selenium是一个用电脑模拟人…

验证知识点总结

1、常用总线对比 AMBA (Advanced Microcontroller Bus Architecture) 高级处理器总线架构 AHB (Advanced High-performance Bus) 高级高性能总线 ASB (Advanced System Bus) 高级系统总线 APB (Advanced Peripheral Bus) 高级外围总线 AXI (Advanced eXtensible Interface) 高…

521之虚拟女友-程序猿的你不认领一个?

520已经来了&#xff0c;你准备好迎接这一浪漫的日子了吗&#xff1f; 作为知否AI问答向你推荐一个值得期待的礼物——知否AI虚拟女友。目前人们对虚拟女友的需求越来越高&#xff0c;而知否AI虚拟女友正是满足这一需求的最佳选择。 01 — 知否AI虚拟女友 作为一款基于ChatG…

Compose For Desktop 实践:使用 Compose-jb 做一个时间水印助手

前言 在我之前的文章 在安卓中实现读取Exif获取照片拍摄日期后以水印文字形式添加到照片上 中&#xff0c;我们已经实现了在安卓端读取 Exif 信息后添加文字水印到图片上。 也正如我在这篇文章中所说的&#xff0c;其实这个需求使用手机来实现是非常不合理的&#xff0c;一般…

CPU和显卡才是最抗热的?

高温是电脑蓝屏和掉帧的罪魁祸首&#xff0c;虽然硬件有了保护不会因为高温烧坏&#xff0c;但当你的工作进行到一半时突然蓝屏&#xff0c;或是游戏中的关键时刻突然掉帧&#xff0c;你的内心肯定是崩溃的&#xff0c;那么电脑中的硬件温度应该控制在多少度呢&#xff1f; 首先…

二进制部署高可用Kubernetes集群 (成功) 看报错

SUMMARY 参考网上的教程和网课&#xff0c;进行二进制高可用Kubernetes部署。并对整个过程和报错进行简单记录。 架构图 设备规划 序号名字功能VMNET 1备注 1备注 2备注 3 备注 4备注 50orgin界面192.168.164.10haproxykeepalived192.168.164.2001reporsitory仓库192.168.1…

〖大学生·技术人必学的职业规划白宝书 - 优质简历篇②〗- 面试官所青睐的优秀简历是什么样的?

历时18个月&#xff0c;采访 850 得到的需求。 不管你是在校大学生、研究生、还是在职的小伙伴&#xff0c;该专栏有你想要的职业规划、简历、面试的答案。说明&#xff1a;该文属于 大学生技术人职业规划白宝书 专栏&#xff0c;购买任意白宝书体系化专栏可加入TFS-CLUB 私域社…

【OpenCv • c++】形态学技术操作 —— 顶帽操作与黑帽操作

&#x1f680; 个人简介&#xff1a;CSDN「博客新星」TOP 10 &#xff0c; C/C 领域新星创作者&#x1f49f; 作 者&#xff1a;锡兰_CC ❣️&#x1f4dd; 专 栏&#xff1a;【OpenCV • c】计算机视觉&#x1f308; 若有帮助&#xff0c;还请关注➕点赞➕收藏&#xff…

Ae 入门系列之十一:抠像

抠像&#xff0c;英文为 Keying&#xff0c;故也被称为“键控”。在早期电视节目制作中&#xff0c;意思是吸取画面中的某一颜色并使得此颜色相关区域成为透明&#xff0c;从而保留所需要的内容。 我们通常称要抠出&#xff08;要保留&#xff09;的主体为前景 Foreground&…

进程间通信-管道

文章目录 1. 进程间通信介绍1.1 进程间通信目的1.2 进程间通信分类 2. 管道2.1 什么是管道2.2 站在文件描述符角度-深度理解管道2.2.1 具体通信的过程 2.3 匿名管道2.4 代码实现 3. 进程控制4. 管道读写规则5. 管道特点6. 命名管道6.1 创建一个命名管道6.2 代码实现 1. 进程间通…

索引的底层数据结构,讲讲B+ 树,B树

B 树的变种。 B树&#xff1a;所有节点&#xff08;非叶子节点 叶子节点&#xff09;&#xff0c;都存储真正的行数据&#xff0c;所以一个数据页能存储的数量&#xff0c;相较于 B 树&#xff0c;就少很多。 B 树&#xff1a; ● 只有叶子节点存储具体的行数据&#xff0c;非…

【进阶】C 语言表驱动法编程原理与实践

数据压倒一切。如果选择了正确的数据结构并把一切组织的井井有条&#xff0c;正确的算法就不言自明。编程的核心是数据结构&#xff0c;而不是算法。——Rob Pike 目录 说明 概念提出 查表方式 直接查找 索引查找 分段查找 实战示例 字符统计 月天校验 名称构造 值名…

Python——sentenceSimilarity 的简单demo(测试句子相似度)

一、sentenceSimilarity 是什么&#xff1f; sentenceSimilarity 属于机器学习的领域 Python 中的 sentenceSimilarity 库是一个用于计算句子相似度的工具库&#xff0c;主要用于自然语言处理相关的应用中。该库支持多种模型计算句子相似度&#xff0c;包括 TF-IDF、LSI、LDA 等…

MySQL进阶篇(三)

七.MySQL管理 7.1 系统数据库 Mysql数据库安装完成后&#xff0c;自带了一下四个数据库&#xff0c;具体作用如下&#xff1a; 7.2 常用工具 7.2.1 mysql 该mysql不是指mysql服务&#xff0c;而是指mysql的客户端工具。 -e选项可以在Mysql客户端执行SQL语句&#xff0c;而…

【Linux】Linux环境基础开发工具使用(yum和vim)

⭐博客主页&#xff1a;️CS semi主页 ⭐欢迎关注&#xff1a;点赞收藏留言 ⭐系列专栏&#xff1a;Linux ⭐代码仓库&#xff1a;Linux 家人们更新不易&#xff0c;你们的点赞和关注对我而言十分重要&#xff0c;友友们麻烦多多点赞&#xff0b;关注&#xff0c;你们的支持是我…

NSFW 图片分类

NSFW指的是 不适宜工作场所&#xff08;“Not Safe (or Suitable) For Work;”&#xff09;。在本文中&#xff0c;将介绍如何创建一个检测NSFW图像的图像分类模型。 数据集 由于数据集的性质&#xff0c;我们无法从一些数据集的网站(如Kaggle等)获得所有图像。 但是我们找到…

少儿编程 中国电子学会图形化编程等级考试Scratch编程四级真题解析(选择题)2023年3月

2023年3月scratch编程等级考试四级真题 选择题(共25题,每题2分,共50分) 1、编写一段程序,从26个英文字母中,随机选出10个加入列表a。空白处应填入的代码是 A、 B、 C、 D、 答案:C

[CTF/网络安全] 攻防世界 simple_php 解题详析

[CTF/网络安全] 攻防世界 simple_php 解题详析 代码解读PHP弱语言特性姿势参数a限制绕过参数b限制绕过 总结 题目描述&#xff1a;小宁听说php是最好的语言,于是她简单学习之后写了几行php代码。 代码解读 $a$_GET[a]; 从HTTP GET请求参数中获取一个名为a的变量&#xff0c…