talkinghead
SILLYTAVERN 1.12.13 已停止支持 TALKINGHEAD。本页面仅出于历史原因保留。
它是什么?
这是 Talking Head Anime 3 Demo 在 AITuber 场景下的实现。它具备以下功能:
- 仅凭一张静态图片即可生成随机的、类 Live 2D 的动作。
- 对任意 TTS 输出的音频进行唇形同步。
本扩展包含 Talking Head(?) Anime from a Single Image 3: Now the Body Too 项目的原始演示程序。顾名思义,该项目可用于让动漫角色动起来,而且只需一张该角色的图片即可完成。共有两个演示程序:
manual_poser 允许你通过图形用户界面操控角色的面部表情、头部旋转、身体旋转,以及由呼吸导致的胸部起伏,并可将这些状态保存为默认表情,例如开心、悲伤、喜悦等。 ifacialmocap_puppeteer 允许你将自己的面部动作实时转移到动漫角色上。
硬件要求
你可以使用 CPU 或 GPU 模式(默认为 CPU)。不过在 CPU 模式下预计只有约 1 FPS;而在 RTX3060 的 GPU 模式下,我能获得约 9-10 FPS。
ifacialmocap_puppeteer 需要一台能够从视频画面中计算 blend shape(混合形状)参数的 iOS 设备。这意味着该设备必须能运行 iOS 11.0 或更高版本,并且必须配备 TrueDepth 前置摄像头。(更多信息请参见此页面。)换句话说,如果你拥有 iPhone X 或更新的机型,就应该没问题了。
如何使用
要使 talkinghead 正常工作,你必须启动 extras 并加载以下模块:classify 和 talkinghead!
处理 talkinghead.png 文件需要 classify 模块。此外,你还可以使用 --talkinghead-gpu 将 blend 模型加载到 GPU 显存中,使动画速度提升约 10 倍。强烈建议使用 GPU 加速!默认情况下,程序启动后会加载一张默认图片 SillyTavern-extras\talkinghead\tha3\images\lambda_00.png。你可以通过访问 http://localhost:5100/api/talkinghead/result_feed 或 YOUR EXT URL:PORT/api/talkinghead/result_feed 来验证其是否正常工作。
-
服务器启动后,进入 Extension API 标签页并连接。然后只需选择一张角色卡加载即可。(启动 server.py 时使用
--enable-modules=classify,talkinghead --talkinghead-gpu) -
现在选择 Character Expressions,如果你勾选 talkinghead 图片类型复选框,脚本会用
YOUR EXT URL:PORT/api/talkinghead/result_feed的结果替换当前的角色表情。取消勾选该复选框“应该”会把图片恢复为原始表情,但有时你需要向聊天中发送一条新消息来“重新加载”图片。 -
如果角色目录中没有 talkinghead.png 文件,它只会显示默认图片或上一个带有 talkinghead.png 文件的角色卡。动画源图片会在角色卡切换时随之更换。
-
现在打开角色表情,向下滚动到 talkinghead 图片,上传一张符合下方“输入图片的约束条件”一节中要求的图片文件。
-
然后反复勾选和取消勾选 talkinghead 复选框以重新加载角色。如果图片看起来很奇怪,可能是因为图片不透明 / 没有 alpha 通道。否则,请按照下方的说明和模板操作。
输入图片的约束条件
为使系统正常工作,输入图片必须符合以下约束:
分辨率应为 512 x 512。(如果程序接收到任何其他尺寸的图片,会将其缩放到该分辨率,并以该分辨率输出。) 必须有 alpha 通道。 必须只包含一个人形角色。 角色应直立并正面朝前。 角色的双手应位于头部下方且远离头部。 角色的头部应大致位于图片上半部分中央的一个 128 x 128 的方框内。 所有不属于角色(即背景像素)的像素,其 alpha 通道值必须为 0。
进阶部分
Python 环境
除基础功能(app.py)外,manual_poser 和 ifacialmocap_puppeteer 都可作为桌面应用程序运行。要运行它们,你需要搭建一个用于运行 Python 程序的环境。该环境需要包含以下软件包:
- Python >= 3.8
- PyTorch >= 1.11.0 with CUDA support
- SciPY >= 1.7.3
- wxPython >= 4.1.1
- Matplotlib >= 3.5.1
一种做法是安装 Anaconda,然后在 shell 中运行以下命令:
conda create -n talking-head-anime-3-demo python=3.8 conda activate talking-head-anime-3-demo conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch conda install scipy pip install wxpython conda install matplotlib
附加 Blend 模型
仅包含一个(最轻量的)模型。如果你需要附加的 blend 模型,必须从 https://www.dropbox.com/s/y7b8jl4n2euv8xe/talking-head-anime-3-models.zip?dl=0 下载模型文件,并将其解压到 SillyTavern-extras\talkinghead\tha3\models 文件夹。最终,data 文件夹的结构应如下所示:
- tha3
- models
- separable_float
- editor.pt
- eyebrow_decomposer.pt
- eyebrow_morphing_combiner.pt
- face_morpher.pt
- two_algo_face_body_rotator.pt
- separable_half
-
- editor.pt
- two_algo_face_body_rotator.pt
-
- standard_float
-
- editor.pt
- two_algo_face_body_rotator.pt
-
- standard_half
-
- editor.pt
- two_algo_face_body_rotator.pt
-
- separable_float
- models
这些模型文件采用知识共享署名 4.0 国际许可协议(Creative Commons Attribution 4.0 International License)分发,这意味着你可以将其用于商业用途。不过,其创作者为 Pramook Khungurn. Talking Head(?) Anime from a Single Image 3: Now the Body Too. https://github.com/pkhungurn/talking-head-anime-3-demo。
运行 manual_poser 桌面应用程序
打开一个 shell。将工作目录切换到仓库根目录。然后运行:
python tha3/app/manual_poser.py 请注意,在运行上述命令之前,你可能需要先激活包含所需软件包的 Python 环境。
conda activate extras 如果你尚未激活该环境。