关于 ai-podcast
这项技能通过 inference.sh 工作流制作多说话人的播客视频,流程涵盖角色图像、语音、头像视频片段和最终合并。面向播客、演示和宣传对话的创作者,并提供角色一致性与制作检查指南。
主要功能
- 01生成角色肖像与身份档案
- 02为每段发言生成语音
- 03根据图像和音频生成说话头像视频
- 04合并片段为最终视频
- 05提供画面质检与脚本指导
适用场景
- 01制作多说话人播客视频
- 02制作说话头像演示短片
- 03制作宣传对话视频
- 04保持真人角色在不同镜头中的外观一致
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ qu-skills/ superpowers --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-preview | 将 Logo 和角色设定图作为参考图传入 |
| 插画 / 风格化角色 | google/gemini-3-pro-image-preview | 将风格参考图作为输入图像传入 |
训练 Phota 身份(可选,但建议真人使用):
如果你需要一个能在多个角度和镜头中保持身份一致的真人角色,请先训练 Phota 配置文件:
infsh 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 服装的角色
- 将 Logo 作为第二张参考图,通过
phota/edit添加 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。
infsh 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。
infsh 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"
}
infsh 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-preview | 图像生成/编辑、吉祥物、风格迁移 |
inworld/text-to-speech-2 | 文本转语音,支持 100 多种语言和语音控制 |
pruna/p-video-avatar | 肖像 + 音频 → 说话头像视频 |
infsh/media-merger | 将多个视频片段合并为一个视频 |
使用 belt task cost <task-id> 查看任意单项任务的费用。