# 大一立项 **Repository Path**: sun_mingyang/ppt ## Basic Information - **Project Name**: 大一立项 - **Description**: 大一大一大一大一大一 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2023-07-02 - **Last Updated**: 2023-07-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # **基于PPT和视频的演讲视频自动生成系统** 这个仓库包括将PPT转化为不带虚拟人头像的视频的代码,训练并生成视频的代码,以及一些前端网页代码 [![star](https://gitee.com/sun_mingyang/ppt/badge/star.svg?theme=white)](https://gitee.com/sun_mingyang/ppt/stargazers) ![输入图片说明](%E5%AD%A6%E9%95%BF%E7%9A%84%E4%BB%A3%E7%A0%81/resources/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202023-07-21%20021715.png) ### 项目简介 #### 现在人们越来越多的交流转为线上进行。通常在线的课堂,或者大型演讲、大型会议等场景下,会制作一段视频来让参与者了解内容。这需要讲解人提前以播放PPT同时录制语音的方式制作视频,十分繁琐,耗时耗力。我们的项目希望能够设计一个平台,使用者在我们的平台上输入一个PPT文件和相关的备注,加上一段简短的、有讲解者头部的讲话视频。平台就会自动根据PPT的内容,生成视频讲解的文案,合成讲解的音频,通过训练讲话视频得到模型,接着结合音频输出讲解头像视频,最后输出一个有声有色,真实生动的PPT讲演视频。
在实现这些功能的时候,我们主要依赖的是RAD-NeRF算法,它提出了一种基于 NeRF 的高效框架,利用最近基于网格的 NeRF 的成功,能够实时合成有声肖像并实现更快的收敛。这种算法的关键是将固有的高维肖像表示分解为三个低维特征网格。具体来说,分解的音频空间编码模块使用 3D 空间网格和 2D 音频网格对动态头部进行建模。躯干由轻量级伪 3D 可变形模块中的另一个 2D 网格处理。这两个模块都在保证良好渲染质量的前提下注重效率。 ## 安装使用过程 ### PART1:
根据PPT备注生成纯讲解视频 ```bash git clone https://gitee.com/Jowib/apnvg.git ``` #### 在终端运行 ```bash # 打开存放下载文件的目录 cd apnvg # 下载依赖 pip install -r requirements.txt # 运行 python RunMainWindow.py ``` ### PART2:
训练并合成人脸 在ubuntu22.04,Pytorch 1.12 和 CUDA 11.6的配置环境下测试 ``` git clone https://github.com/ashawkey/RAD-NeRF.git cd RAD-NeRF ``` ### 安装依赖 ```bash # 对于Ubuntu系统,需要安装portaudio来让pyaudio运行 sudo apt install portaudio19-dev pip install -r requirements.txt ``` ### 构建扩展(可选) 默认情况下,我们使用 [`load`](https://pytorch.org/docs/stable/cpp_extension.html#torch.utils.cpp_extension.load) 在运行时构建扩展。然而这样做有时可能会出错,因此,我们还提供了 `setup.py`来构建每个扩展。 ```bash # 下载每个扩展 bash scripts/install_ext.sh ``` # 数据预处理 ### 准备: ```bash ## 下载pytorch3d pip install "git+https://github.com/facebookresearch/pytorch3d.git" ## 准备人脸解析模型 wget https://github.com/YudongGuo/AD-NeRF/blob/master/data_util/face_parsing/79999_iter.pth?raw=true -O data_utils/face_parsing/79999_iter.pth ## 准备 basel face 模型 # 1. 下载 `01_MorphableModel.mat` from https://faces.dmi.unibas.ch/bfm/main.php?nav=1-2&id=downloads 并且放到 `data_utils/face_tracking/3DMM/` # 2. 从 AD-NeRF的仓库下载其他必要的文件: wget https://github.com/YudongGuo/AD-NeRF/blob/master/data_util/face_tracking/3DMM/exp_info.npy?raw=true -O data_utils/face_tracking/3DMM/exp_info.npy wget https://github.com/YudongGuo/AD-NeRF/blob/master/data_util/face_tracking/3DMM/keys_info.npy?raw=true -O data_utils/face_tracking/3DMM/keys_info.npy wget https://github.com/YudongGuo/AD-NeRF/blob/master/data_util/face_tracking/3DMM/sub_mesh.obj?raw=true -O data_utils/face_tracking/3DMM/sub_mesh.obj wget https://github.com/YudongGuo/AD-NeRF/blob/master/data_util/face_tracking/3DMM/topology_info.npy?raw=true -O data_utils/face_tracking/3DMM/topology_info.npy # 3.运行convert_BFM.py cd data_utils/face_tracking python convert_BFM.py cd ../.. ## 准备 ASR 模型 # 如果你想使用DeepSpeech来替代AD-NeRF,你应该自行下载tensorflow 1.15 # 另外,我们也支持PyTorch中的Wav2Vec. ``` ### 预处理定制训练视频 * 将训练视频放在 `data//.mp4`. 视频必须为 **25FPS,所有帧都包含说话人**。分辨率应约为 512x512,持续时间约为 1-5 分钟。 ```bash # 一个来自AD-NeRF的奥巴马示例视频 mkdir -p data/obama wget https://github.com/YudongGuo/AD-NeRF/blob/master/dataset/vids/Obama.mp4?raw=true -O data/obama/obama.mp4 ``` * 运行脚本(可能需要几个小时,具体取决于视频长度) ```bash # 运行所有步骤 python data_utils/process.py data//.mp4 # 如果你想一步步运行 python data_utils/process.py data//.mp4 --task 1 # extract audio wave ``` * 完成所有步骤后的文件结构: ```bash ./data/ ├──.mp4 # original video ├──ori_imgs # original images from video │ ├──0.jpg │ ├──0.lms # 2D landmarks │ ├──... ├──gt_imgs # ground truth images (static background) │ ├──0.jpg │ ├──... ├──parsing # semantic segmentation │ ├──0.png │ ├──... ├──torso_imgs # inpainted torso images │ ├──0.png │ ├──... ├──aud.wav # original audio ├──aud_eo.npy # audio features (wav2vec) ├──aud.npy # audio features (deepspeech) ├──bc.jpg # default background ├──track_params.pt # raw head tracking results ├──transforms_train.json # head poses (train split) ├──transforms_val.json # head poses (test split) ``` # 用法 ### 快速开始 我们[在这里](https://drive.google.com/drive/folders/14LfowIkNdjRAD-0ezJ3JENWwY9_ytcXR?usp=sharing) 提供一些预训练模型,用于对任意音频进行快速测试 *下载预训练模型。 例如我们下载 `obama_eo.pth` 到 `./pretrained/obama_eo.pth` *下载姿势序列文件。 例如我们下载`obama.json` 到`./data/obama.json` * 将音频准备为 `.wav`, 并提取音频特征。 ```bash # 如果模型是`_eo.pth`, 它会使用 wav2vec 提取特征 python nerf/asr.py --wav data/.wav --save_feats # save to data/_eo.npy # 如果模型是`.pth`, 他会使用 deepspeech 提取特征 python data_utils/deepspeech_features/extract_ds_features.py --input data/.wav # save to data/.npy ``` 您也可以下载预处理的音频功能。例如,我们下载`intro_eo.npy` 到 `./data/intro_eo.npy`. * 运行估算:以 40FPS 运行估算(在 V100 上测量)大约需要 2GB GPU 内存。 ```bash # 保存视频到 trail_obama/results/*.mp4 # 如果模型是 `.pth`, 应该附加 `--asr_model deepspeech` 并且使用 `--aud intro.npy` 替代. python test.py --pose data/obama.json --ckpt pretrained/obama_eo.pth --aud data/intro_eo.npy --workspace trial_obama/ -O --torso # 提供一张背景图片()默认为白色 python test.py --pose data/obama.json --ckpt pretrained/obama_eo.pth --aud data/intro_eo.npy --workspace trial_obama/ -O --torso --bg_img data/bg.jpg # 用 GUI 测试 python test.py --pose data/obama.json --ckpt pretrained/obama_eo.pth --aud data/intro_eo.npy --workspace trial_obama/ -O --torso --bg_img data/bg.jpg --gui ``` ### 详细使用方法 第一次运行需要一些时间来编译 CUDA 扩展。 ```bash # 训练(头部) # 默认情况下,我们从磁盘动态加载数据 # 我们还可以将所有数据预加载到 CPU/GPU 以加快训练速度,但这对于大型数据集来说非常消耗内存。 # `--preload 0`: 从磁盘加载(默认,慢). # `--preload 1`: 从CPU加载 需要约 70G CPU 内存 (较慢) # `--preload 2`: 从GPU加载 需要约 24G GPU memory (快) python main.py data/obama/ --workspace trial_obama/ -O --iters 200000 # train(将嘴唇再微调 50000 步,按照上述命令运行!) python main.py data/obama/ --workspace trial_obama/ -O --iters 250000 --finetune_lips # 训练(躯干) # .pth 应该是 Trial_obama 中的最新检查点 python main.py data/obama/ --workspace trial_obama_torso/ -O --torso --head_ckpt .pth --iters 200000 # 在测试拆分上进行测试 python main.py data/obama/ --workspace trial_obama/ -O --test # use head checkpoint, will load GT torso python main.py data/obama/ --workspace trial_obama_torso/ -O --torso --test # 使用 GUI 进行测试 python main.py data/obama/ --workspace trial_obama_torso/ -O --torso --test --gui # 使用GUI进行测试(加载语音识别模型以进行实时应用) python main.py data/obama/ --workspace trial_obama_torso/ -O --torso --test --gui --asr # 使用特定的音频和姿势序列进行测试 # --test_train: 使用训练片段分割进行测试 # --data_range: u使用此范围的姿势和眼睛序列(如果比音频短,则自动镜像并重复) python main.py data/obama/ --workspace trial_obama_torso/ -O --torso --test --test_train --data_range 0 100 --aud data/intro_eo.npy ``` 检查'scripts'目录以获取更多提供的示例。 #### 安装教程 1. xxxx 2. xxxx 3. xxxx #### 使用说明 1. 克隆到本地,查看html文件夹 2. 666 3. xxxx #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request