SuperAPI AI 工具集

ai-podcast

设计与创作

查看项目

更新于 10-16 09:39

技能介绍

用途

AI 播客生成器用于通过 inference.sh 流水线创建多人出镜的对谈类播客视频。整条流水线为:角色图像生成 → 逐句 TTS 音频 → 逐句头像视频 → 合并成片。支持真人(通过 Phota)、3D 吉祥物、插画角色以及混合阵容。

适用场景:用户想要制作播客、口播视频、演示片、宣传对话,或任何多说话人视频内容。

流水线概览

角色(图像)→ TTS(每轮音频)→ 头像(每轮视频)→ 合并(最终视频)

步骤 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 更简单、更便宜。

先做角色设定图,再做播客画面:

  1. 为每个角色生成角色设定图(纯白背景、多角度)
  2. 然后以设定图为参考,将角色放入播客演播室场景

品牌角色(服装上有 logo):

  1. 先用无 logo 版本的服装生成角色
  2. 用 phota/edit 以 logo 作为第二参考图像添加 logo
  3. 生成新角度时,始终将 logo 图像与角色参考一起传入

步骤 2:交替角度

每个角色至少生成 2 个角度以增加视觉变化:

  • 正面/中景:建立镜头、开场、收尾
  • 特写:反应、情绪时刻、有力台词

特写时提示“tight framing, chest up, shallow depth of field”,不要用 “turned to the side”(那只会让他们看向别处)。

身份一致性规则:

  • 有 Phota 档案的真人:用 phota/generate 或 phota/edit 生成新角度——Gemini 不保留人脸身份,会产生另一个人
  • 无 Phota 档案的真人:尝试用 pruna/p-image 一次性生成所有所需角度,或若需要大量镜头则考虑训练 Phota 档案
  • 吉祥物/插画:Gemini 3 Pro 即可,传入已生成的画面作为参考

取景规则:对单个说话人使用紧凑取景。多人座位的大全景在只有一人出镜时会露出空椅子。

步骤 3:QA 帧检查

继续之前,目视检查所有帧是否存在:

  • 背景中多余的人
  • 多个麦克风(每个镜头应只有一个麦克风)
  • 错误或扭曲的 logo
  • 跨角度角色身份不一致
  • 奇怪的伪影(多余肢体、物体融合)

在生成视频前修复问题——重新渲染视频是整条流水线中最昂贵的步骤。

步骤 4:撰写脚本

自然对话规则:

  • 写得像真实对话,而不是轮流念广告词
  • 包含反应(“wait, hold on”“that is wild”)、打断和追问
  • 轮次长度有变化——短反应(1 句)混合较长解释(2-3 句)
  • 主持人应提真实问题,而非铺垫显而易见的话题

时长参考:自然语速约 2.5 词/秒(1.05x 速率)

目标 词数
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-8 秒)。

步骤 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-90 秒。

角度分配示例(6 轮):

  • T1:说话人 A — 正面
  • T2:说话人 B — 正面
  • T3:说话人 C — 正面(或特写)
  • T4:说话人 A — 特写
  • T5:说话人 B — 特写
  • T6:说话人 A — 正面

步骤 7:合并

使用 infsh/media-merger 将所有片段拼接为最终视频:

{ "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,或单批一次性生成所有角度。
  • 绝不并行运行 p-video-avatar 片段——会争抢 GPU 显存并以 CUDA OOM 失败,须串行。
  • 绝不将 speaking_rate 设为低于 1.0,默认 1.05。
  • 生成视频前始终先做 QA 帧检查——视频生成是流水线中最昂贵的步骤。
  • 单个说话人镜头始终使用紧凑取景——大全景会露出其他说话人的空座位;取景至腰部或胸部以上,避免空椅入镜。
  • 生成品牌角色时始终把 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> 可查看任何单个任务的费用。