mcpField
C
create-ai-avatar

create-ai-avatar

github.com/mengto创意与媒体7.5k192 次安装今天更新
代码仓库

关于 create-ai-avatar

create-ai-avatar 是一套 Node 和 bash 技能,可用个人视频或照片制作带克隆声音的说话头像。工作流将面部、声音和口型同步分开处理,并通过口部特写比较不同引擎。

主要功能

  1. 01训练 HeyGen 数字分身
  2. 02创建照片头像和说话照片
  3. 03用 ElevenLabs 生成语音音频
  4. 04渲染并比较口型同步引擎
  5. 05制作并排口部对照图

适用场景

  1. 01制作能说新台词的出镜者
  2. 02将头像渲染与源视频比较
  3. 03为人物形象挑选口型同步引擎

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mengto/skills --skill create-ai-avatar

安装后在 Claude Code 中输入/create-ai-avatar确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

agents/
openai.yaml
demo/
index.html
PROMPT.md
references/
footage.md
heygen.md
judging.md
scripts/
balance.mjs
consent.mjs
hear.mjs
keys.mjs
mouths.sh
prep-footage.sh
render.mjs
train.mjs
upload.mjs
voice.mjs

详细介绍

创建 AI Avatar

HeyGen API · ElevenLabs · ffmpeg。 脚本使用纯 Node 20 和 bash 编写,无需安装软件包。

你的 Avatar 由三部分组成,每部分都取自最合适的来源。面部和动作来自你自己的录像(HeyGen 数字分身)。声音是你在 ElevenLabs 上克隆的声音,并制成音频文件。一个引擎将两者进行口型同步。然后,你要在最容易看出相似度差异的地方评判结果:近距离看嘴部,并与真人的嘴部并排比较。

适用范围。 制作没有人物出镜的影片,请使用 html-explainer-video;将你用手机拍摄的真实片段剪成短视频,请使用 html-reel。如果你希望屏幕上的人物是你本人,说出你没有录制过的话,就使用此技能。

来源。 该流程于 2026 年 11 月使用创作者自己的数字分身构建。数字分身使用一段 YouTube 视频中的眼神交流片段进行训练(2 分 48 秒),声音则来自他在 ElevenLabs 上使用 v4 制作的克隆。三种引擎都生成了同一段 8.8 秒的台词,创作者根据嘴部表现选出了最佳结果。演示展示了四位用单张肖像制作的 HeyGen 照片 Avatar,因此展示的都不是真人录像。

工作原理

将面部、声音和口型同步分开处理,并且每次只更改其中一项。 数字分身只需训练一次。声音先制成文件,你可以在它被用于其他地方之前先听一遍。一次渲染由数字分身和该音频文件在一个引擎上生成。出现问题时,你就能判断应该更改哪个部分。比较不同引擎时,始终使用相同的台词和音频:更换台词会让你看不出引擎的实际表现。

HeyGen 无法通过 ElevenLabs 声音的 id 使用该声音。 先在 ElevenLabs 上生成台词(scripts/voice.mjs),然后将音频作为 audio_asset_id 或 audio_url 发送给 HeyGen,而不是使用 script 和 voice_id。视频时长与音频相同,最长可达 30 分钟。

通过嘴部表现来评判。 看完整画面时,每个引擎的效果都不错。从每个渲染结果和真人录像中截取六个时刻的鼻尖至下巴区域,并排列在一起(scripts/mouths.sh)。然后观察嘴唇的拉伸幅度、露齿程度、嘴唇颜色和嘴角变化。

制作 Avatar 的三种方式

数字分身照片 Avatar会说话的照片
素材来源15 秒至 10 分钟的录像,约 2 分钟效果最佳一张照片一张照片
初始成本约 $2.13 的训练费用,另需授权约 $1.32免费
引擎Avatar V、IV、IIIAvatar V、IV、III仅 Avatar IV
动作表现像你本人:你的头部动作和习惯由引擎想象由引擎想象
适用场景任何必须以假乱真的场景使用 Avatar V 根据肖像制作主持人一句简短台词

三种方式都可以使用你的音频。请从 Avatar V 开始:这是 HeyGen 最新的引擎,也是此处的默认选择。根据嘴部表现来评判;如果它把你熟悉的那个人演得过于夸张,就改用 IV 或 III。Fil 的 Create AI avatar 工作流就是照片 Avatar:将你的照片和声音接入 HeyGen Avatar V。

工作流

  1. 挑选素材(references/footage.md)。选用你最好的出镜片段:只有你一人,始终面向镜头,脸全程在画面中,环境安静,分辨率为 1080p。自然说话两到三分钟即可。与镜头有眼神交流的片段最好。每个片段只下载一次,然后用 bash scripts/prep-footage.sh footage.mp4 take-*.mp4 将它们合并。
  2. 上传。 node scripts/upload.mjs footage.mp4 可直接上传最大 200 MB 的文件,并将资源 ID 保存在文件旁边。
  3. 训练。 先说明价格($2.13)和钱包余额。然后运行 node scripts/train.mjs --footage <asset_id> --name "Ada · March takes",几分钟即可完成训练。新角色会获得一个同意链接:素材中的本人须在 24 小时内打开链接并录制一段简短声明。只有角色外观状态为 completed 且同意状态为 accepted 后,数字分身才能生成视频。要为同一个人添加新素材,请传入 --group。
  4. 制作台词。 运行 node scripts/voice.mjs "<one line, about 25 words>" line.mp3 --voice <your clone>。听一遍,然后用 node scripts/hear.mjs line.mp3 检查其中的文字。
  5. 用 Avatar V 为这句台词生成视频,不使用动作提示词:node scripts/render.mjs --look <look_id> --audio line.mp3。要进行比较,也用 --engine avatar_iv 和 avatar_iii 为同一句台词生成视频。每次生成都会先显示价格,再显示钱包余额。如果要用肖像而不是视频素材:通过 POST /v3/avatars { type: 'photo' } 创建照片 Avatar(references/heygen.md),然后用同样的方法为其外观生成视频。
  6. 评判。 运行 bash scripts/mouths.sh mouths.jpg footage.mp4 twin-avatar_v.mp4 twin-avatar_iv.mp4 twin-avatar_iii.mp4,并将各个生成结果并排播放,同时播放声音。在说出哪个最好之前,先把所有结果都给本人看:那是他们的脸(references/judging.md)。
  7. 用本人选中的版本制作正式台词,并记下相关 ID:外观、分组、声音和引擎。

规则

每条规则都说明了它能避免的问题。

  • 生成视频前,确认脸和声音的对应关系。 有一次,两个照片 Avatar 的 ID 被调换,导致四个生成结果都把一张脸配成了另一个人的声音。每个文件都用对应人物的名字命名,并在每次生成前检查外观的 name。
  • 生成新视频时,必须使用新的 Idempotency-Key。 有一次,重复提交生成请求时用了第一个视频的密钥,HeyGen 返回了第一个视频。render.mjs 会根据主体和音频生成密钥。
  • 嘴部动作过度时,换引擎,而不是改提示词。 在 Avatar V 上,嘴唇张得很开,上下两排牙齿都露了出来。motion_prompt 和 more_blinking 几乎没有改善;Avatar IV 和 III 解决了这个问题。
  • expressiveness 仅适用于 Avatar IV 的照片 Avatar。 Avatar V 不支持该参数,数字分身也不支持。
  • 平静地朗读胜过刻意表演。 使用 stability-0 并加上 [excited] 和 [laughs] 的朗读,听起来反而没有默认声音像创作者本人。先保持平静,只有在脸部效果合适后才调整声音。
  • 数字分身的清晰度不会高于其素材。 降至 720p 的片段生成了 1280×720 的外观。请使用 1080p 素材进行训练。
  • 每次付费调用前,都要说明价格和钱包余额。 钱包是账户共用的,同一密钥下的其他操作也会从中扣款。有一次,余额比数字分身和一次视频生成的费用总和多减少了 $1.76。
  • 同意授权属于特定分组和特定个人。 绝不要把其他人的素材加入某个分组,也绝不要训练未同意的人。HeyGen 不会对照片进行同意检查,因此你有责任取得本人的同意。
  • 每个源文件只下载一次,然后使用本地文件进行处理。 绝不要循环对签名链接运行 ffmpeg。
  • 训练也会克隆声音。 HeyGen 会根据素材创建 default_voice_id,并将其作为独立资源。只有在 ElevenLabs 克隆声音不可用时才使用它。删除数字分身不会删除该声音。
  • 手部动作可能不自然。 Avatar IV 会做手势,有一次生成结果里的拇指看起来像橡胶。使用片段前,请完整检查一遍画面。

同一段台词下,同一个双胞胎分身的不同引擎

引擎每秒费用嘴部表现其他表现
Avatar V$0.12嘴唇张得很开,露出上下两排牙齿,嘴唇更红磨皮效果;最爱凭空生成细节
Avatar IV$0.0805张口较小且圆润,偶尔露出上排牙齿会做手势;创作者认为它最适合自己的脸
Avatar III$0.01最接近真人:张口较小,唇色自然保留你真实的头部动作;版本最旧,因此要靠听感检查同步情况

这是同一场会话中同一张脸的表现,因此请自行判断:这就是第 6 步存在的原因。

数据

  • 素材:15–600 秒(约 2 分钟效果最佳),长边 640–4096 px,格式为 mp4 或 webm,仅限一人,直接上传最大 200 MB。
  • 训练:约 $2.13;2 分 48 秒的素材约需 4 分钟。照片分身:约 $1.32,约 10 秒即可生成。
  • 同意链接:有效期为 24 小时。
  • 台词:约 25 个词,8–10 秒;所有引擎使用相同音频。
  • 一段 8.8 秒的视频渲染费用:Avatar V $1.05、IV $0.71、III $0.09;每段需 2–3 分钟。
  • 音频:格式为 mp3 或 wav;作为素材时最大 32 MB,每段视频最长 30 分钟。
  • 嘴部对比图:每行 6 个时刻,取自 1920 像素宽的画面,裁剪框为 420 × 300,并移动位置以适应人脸。

文件

  • references/footage.md:挑选、拼接和检查素材片段
  • references/heygen.md:脚本调用的所有 HeyGen 接口及其响应
  • references/judging.md:嘴部对比图、观察要点以及向当事人展示的方式
  • scripts/keys.mjs:从环境变量或 .env.local 获取密钥,并创建 HeyGen 客户端
  • scripts/prep-footage.sh、upload.mjs、train.mjs、consent.mjs、voice.mjs、hear.mjs、render.mjs、mouths.sh、balance.mjs
  • demo/index.html:4 位演示者使用 Avatar V 生成的单张肖像分身;其中 1 位使用全部 3 种引擎,并附有嘴部对比图

密钥:HEYGEN_API_KEY、ELEVENLABS_API_KEY 和 ELEVENLABS_VOICE_ID(你的克隆音色),从环境变量或 .env.local 获取。它们绝不会被打印出来。

评论

支持 Markdown