关于 ai-podcast
这项 skill 使用 inference.sh 将角色图像、语音和头像视频组合成多角色播客视频,并指导创作者处理角色一致性、脚本、配音选择和画面检查。
主要功能
- 01生成角色图像
- 02保持真人角色身份一致
- 03逐段生成文本转语音
- 04生成头像口播视频
- 05按顺序合并视频片段
- 06检查画面与配音质量
适用场景
- 01制作多角色播客视频
- 02创作品牌吉祥物对话
- 03制作宣传对话短片
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ inference-sh/ skills --skill ai-podcast安装后在 Claude Code 中输入/ai-podcast确认已加载。
详细介绍
AI 播客生成器
使用 inference.sh 流水线创建多人对谈播客视频:肖像生成 → TTS 音频 → 虚拟形象视频 → 合并。支持真人(通过 Phota)、3D 吉祥物、插画角色以及混合阵容。
当用户想要制作播客、对谈视频、演示短片、宣传对话或任何多说话人视频内容时使用。
流水线概览
Characters (images) → TTS (audio per turn) → Avatar (video per turn) → Merge (final video)
流程
步骤 1:创建角色
根据角色类型选择合适的工具:
| 角色类型 | 工具 | 说明 |
|---|---|---|
| 真人(新建) | pruna/p-image | 16:9,prompt_upsampling: true。生成快速,无需训练,但多次生成时无法保持身份一致。 |
| 真人(一致身份) | phota/generate,搭配 [[profile_id]] | 所有镜头中的身份一致。需要先训练 Phota 配置文件(见下文)。 |
| 品牌吉祥物/Logo 角色 | google/gemini-3-pro-image | 将 Logo 和角色设定图作为参考图传入 |
| 插画/风格化角色 | google/gemini-3-pro-image | 将风格参考图作为输入图像传入 |
训练 Phota 身份配置(可选,但建议真人角色使用):
如果需要一个能在不同角度和镜头中保持身份一致的真人角色,请先训练 Phota 配置文件:
belt app run phota/train --input '{
"images": ["url1.jpg", "url2.jpg", ...],
"wait": true
}' --save profile.json
- 需要主体的 30-50 张面部图像
- 使用
wait: true时,训练需要几分钟 - 会返回一个
profile_id,之后可在phota/generate提示词中将其用作[[profile_id]] - 配置文件可永久复用——训练一次,即可生成任意数量的镜头
如果不需要跨镜头保持一致性(例如单人视频,且只有一个角度),pruna/p-image 更简单、成本更低。
先制作角色设定图,再制作播客画面:
- 为每个角色生成一张角色设定图(纯白背景,包含多个角度)
- 然后将角色设定图作为参考,把角色置于播客录制室场景中
针对品牌角色(服装上带有 Logo):
- 先生成穿着无 Logo 服装的角色
- 使用
phota/edit,并将 Logo 作为第二张参考图,以添加 Logo - 生成新角度时,务必将 Logo 图与角色参考图一同传入
步骤 2:生成不同角度
每个角色至少生成 2 个角度,以增加画面变化:
| 角度 | 用途 |
|---|---|
| 正面/中景 | 建立镜头、开场、收尾 |
| 特写 | 反应、情绪时刻、有力台词 |
生成特写时,提示词应使用“紧凑构图、胸部以上、浅景深”,而不是“转向一侧”(这样只会让角色看向别处)。
保持身份一致性的规则:
- 对于有 Phota 配置文件的真人:使用
phota/generate或phota/edit生成新角度——Gemini 无法保留面部身份,会生成另一个人 - 对于没有 Phota 配置文件的真人:尝试一次用
pruna/p-image生成所有所需角度;如果需要很多镜头,也可以考虑训练 Phota 配置文件 - 对于吉祥物/插画:使用 Gemini 3 Pro 即可,将已确立的画面作为参考图传入
构图规则: 单人发言时使用紧凑构图。多人座位的广角镜头在屏幕上只有一个人时会露出空椅子。
步骤 3:检查画面
继续之前,请目视检查所有画面,确认是否存在:
- 背景中多出的人物
- 多个麦克风(每个镜头应只有一个麦克风)
- 错误或变形的 Logo
- 不同角度下角色身份不一致
- 奇怪的瑕疵(多余肢体、物体融合)
生成视频前先修复问题——重新渲染视频是整个流水线中成本最高的步骤。
步骤 4:编写脚本
自然对话规则:
- 写得像真实对话,而不是轮流念广告词
- 加入反应(“等等,先等一下”“这也太离谱了”)、打断和追问
- 轮次长短要有变化——短促的反应(1 句话)与较长的解释(2-3 句话)交替出现
- 主持人应该提出真实的问题,而不是刻意引出显而易见的话题
- 牢记目标总时长:按 1.05 倍语速进行自然口播时,每秒约 2.5 个词
时长参考:
| 目标 | 词数 |
|---|---|
| 15s | ~38 词 |
| 30s | ~75 词 |
| 60s | ~150 词 |
步骤 5:生成 TTS 音频
每轮使用 inworld/text-to-speech-2。
belt app run inworld/text-to-speech-2 --input '{
"text": "...",
"voice_id": "...",
"speaking_rate": 1.05,
"audio_encoding": "MP3"
}' --save output.json
语音选择:
- 确定语音前,先用同一句台词生成不同候选语音的样本
- 让用户试听并确认语音
- 适合播客的语音:Tyler、Nate、Lauren、Kelsey、Naomi、Anjali(EN_US)
- 使用
inworld/text-to-speech-2:voices列出所有可用语音
语速:
- 自然的播客节奏默认使用 1.05
- 短促有力的反应使用 1.1
- 绝不要低于 1.0——听起来会很慢,让人失去兴趣
- 同一角色的所有轮次都要保持语速一致
所有 TTS 轮次都可以并行运行(成本低、速度快,每轮约 2-8s)。
步骤 6:生成视频片段
每轮使用 pruna/p-video-avatar。
belt app run pruna/p-video-avatar --input '{
"image": "<character_frame_url>",
"audio": "<tts_audio_url>",
"resolution": "720p",
"video_prompt": "..."
}' --save output.json
**关键:按顺序运行片段,不要并行运行。**并行运行会争用同一块 GPU,导致 CUDA OOM 错误。每个片段耗时 15-90s,具体取决于音频长度。
**镜头角度分配方案:**在不同轮次间交替使用正面和特写镜头,让画面更丰富。6 轮的示例:
T1: Speaker A — front
T2: Speaker B — front
T3: Speaker C — front (or close-up)
T4: Speaker A — close-up
T5: Speaker B — close-up
T6: Speaker A — front
步骤 7:合并
使用 infsh/media-merger 将所有片段拼接成最终视频。
# Build input JSON
{
"media_files": [
{"file": "<clip1_url>"},
{"file": "<clip2_url>"},
...
],
"fps": 24,
"output_format": "mp4"
}
belt app run infsh/media-merger --input merger_input.json --save final.json
合并工具免费,耗时 2-6 分钟,具体取决于总时长。
规则
-
Gemini 无法保留真人面部身份——使用 Gemini 生成真人的其他角度时,会生成一个不同的人。若要生成身份一致的真人镜头,请使用带有已训练 profile_id 的 Phota,或在一次批处理中生成所有角度。这是因为 Gemini 曾为本应与正面镜头匹配的特写生成了一张完全不同的脸。
-
绝不要并行运行 p-video-avatar 片段——它们会争用 GPU 内存,导致 CUDA OOM 错误。请按顺序运行。此前 3 次并行运行中有 2 次失败,得出了这一经验。
-
绝不要将 speaking_rate 设为低于 1.0——听起来不自然,也会让人失去兴趣。默认使用 1.05。用户反馈说 0.9 的语速“感觉很奇怪,也让人失去兴趣”。
-
生成视频前务必检查画面——视频生成是整个流程中成本最高的步骤。在图像阶段发现麦克风重复或 Logo 错误,修复成本很低;等视频生成后才发现,就意味着要重新渲染整个片段。
-
单人发言镜头务必采用紧凑构图——广角或全景镜头会拍到其他发言者应该坐着的空座位。画面应从腰部或胸部以上取景,避免出现空椅子。
-
生成带品牌标识的角色时,务必将 Logo 作为参考图像提供——仅用文字描述 Logo 会生成错误结果。请将实际的 Logo 文件作为第二张图像输入。
-
正式制作前务必先让用户确认语音——使用同一句台词生成 5-8 种候选语音的样本,并在确定完整脚本前让用户挑选。
-
脚本应读起来像对话,而不是广告——轮流念广告词会显得很假。要加入反应、打断、长短不一的轮次和真诚的问题。主持人应有自己的个性,而不是只负责引出话题。
应用参考
| 应用 | 用途 |
|---|---|
pruna/p-image | 根据文本生成肖像 |
phota/train | 使用 30-50 张人脸图像训练身份档案 |
phota/generate | 通过 [[profile_id]] 使用已训练的身份生成图像 |
phota/edit | 编辑图像,同时保留已知主体的身份特征 |
google/gemini-3-pro-image | 图像生成与编辑、吉祥物、风格迁移 |
inworld/text-to-speech-2 | 文本转语音,支持 100+ 种语言和语音引导 |
pruna/p-video-avatar | 肖像 + 音频 → 对口型视频 |
infsh/media-merger | 将多个视频片段合并为一个视频 |
使用 belt task cost <task-id> 查看任意单个任务的费用。