关于 create-ai-avatar
create-ai-avatar 是一套 Node 和 bash 技能,可用个人视频或照片制作带克隆声音的说话头像。工作流将面部、声音和口型同步分开处理,并通过口部特写比较不同引擎。
主要功能
- 01训练 HeyGen 数字分身
- 02创建照片头像和说话照片
- 03用 ElevenLabs 生成语音音频
- 04渲染并比较口型同步引擎
- 05制作并排口部对照图
适用场景
- 01制作能说新台词的出镜者
- 02将头像渲染与源视频比较
- 03为人物形象挑选口型同步引擎
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mengto/ skills --skill create-ai-avatar安装后在 Claude Code 中输入/create-ai-avatar确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamldemo/index.htmlPROMPT.mdreferences/footage.mdheygen.mdjudging.mdscripts/balance.mjsconsent.mjshear.mjskeys.mjsmouths.shprep-footage.shrender.mjstrain.mjsupload.mjsvoice.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、III | Avatar V、IV、III | 仅 Avatar IV |
| 动作表现 | 像你本人:你的头部动作和习惯 | 由引擎想象 | 由引擎想象 |
| 适用场景 | 任何必须以假乱真的场景 | 使用 Avatar V 根据肖像制作主持人 | 一句简短台词 |
三种方式都可以使用你的音频。请从 Avatar V 开始:这是 HeyGen 最新的引擎,也是此处的默认选择。根据嘴部表现来评判;如果它把你熟悉的那个人演得过于夸张,就改用 IV 或 III。Fil 的 Create AI avatar 工作流就是照片 Avatar:将你的照片和声音接入 HeyGen Avatar V。
工作流
- 挑选素材(references/footage.md)。选用你最好的出镜片段:只有你一人,始终面向镜头,脸全程在画面中,环境安静,分辨率为 1080p。自然说话两到三分钟即可。与镜头有眼神交流的片段最好。每个片段只下载一次,然后用
bash scripts/prep-footage.sh footage.mp4 take-*.mp4将它们合并。 - 上传。
node scripts/upload.mjs footage.mp4可直接上传最大 200 MB 的文件,并将资源 ID 保存在文件旁边。 - 训练。 先说明价格($2.13)和钱包余额。然后运行
node scripts/train.mjs --footage <asset_id> --name "Ada · March takes",几分钟即可完成训练。新角色会获得一个同意链接:素材中的本人须在 24 小时内打开链接并录制一段简短声明。只有角色外观状态为completed且同意状态为accepted后,数字分身才能生成视频。要为同一个人添加新素材,请传入--group。 - 制作台词。 运行
node scripts/voice.mjs "<one line, about 25 words>" line.mp3 --voice <your clone>。听一遍,然后用node scripts/hear.mjs line.mp3检查其中的文字。 - 用 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),然后用同样的方法为其外观生成视频。 - 评判。 运行
bash scripts/mouths.sh mouths.jpg footage.mp4 twin-avatar_v.mp4 twin-avatar_iv.mp4 twin-avatar_iii.mp4,并将各个生成结果并排播放,同时播放声音。在说出哪个最好之前,先把所有结果都给本人看:那是他们的脸(references/judging.md)。 - 用本人选中的版本制作正式台词,并记下相关 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.mjsdemo/index.html:4 位演示者使用 Avatar V 生成的单张肖像分身;其中 1 位使用全部 3 种引擎,并附有嘴部对比图
密钥:HEYGEN_API_KEY、ELEVENLABS_API_KEY 和 ELEVENLABS_VOICE_ID(你的克隆音色),从环境变量或 .env.local 获取。它们绝不会被打印出来。