SuperAPI AI 工具集

ai-podcast

通用与其它

查看项目

更新于 10-15 08:33

技能介绍

用途

本技能用于使用 inference.sh 流水线创建多人在场对话(talking head)播客视频。整体流程为:角色(图片)→ TTS(每轮音频)→ 头像(每轮视频)→ 合并(最终视频)。适用于用户想要创建播客、talking head 视频、样片、宣传对话,或任何多说话人视频内容的场景。支持真人(通过 Phota)、3D 吉祥物、插画角色以及混合阵容。

角色创建

按角色类型选择工具:真人(新)可用 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 版本服装的角色,再用 phota/edit 把 Logo 作为第二参考图添加 Logo;生成新角度时始终随角色参考一并传入 Logo 图片。

交替角度

每个角色至少生成 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,传入已确定画面作为参考。取景规则:对单个说话人使用紧凑取景。多人座位的大全景在画面中只有一人时会露出空椅子。

帧质检

继续前,目视检查所有帧:背景是否多出人、是否出现多个麦克风(每个镜头应只有一个麦克风)、Logo 是否错误或变形、角色在不同角度间身份是否不一致、是否有异常伪影(多余肢体、物体融合)。在生成视频前修复问题——重渲染视频是流水线中最昂贵的步骤。

撰写脚本

自然对话规则:写成真实对话,而不是像轮流念广告文案;包含反应(“wait, hold on”“that is wild”)、打断和追问;轮次长度要有变化——短反应(1 句)与较长解释(2-3 句)混合;主持人应问真实问题,而不是铺垫显而易见的论点;记住总时长目标:1.05x 语速下自然语音约每秒 2.5 个词。时长参考:15 秒约 38 词;30 秒约 75 词;60 秒约 150 词。

生成 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 秒)。

生成视频片段

每轮使用 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 正面。

合并

使用 infsh/media-merger 将所有片段拼接为最终视频。输入 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。Merger 免费,按总时长约需 2-6 分钟。

规则

Gemini 不保留人脸身份——用 Gemini 生成真人新角度会得到另一个人。要保持身份一致的真人镜头,使用带已训练 profile_id 的 Phota,或一次批量生成所有角度。此规则来自一次教训:Gemini 为一张本应与正面镜头匹配的特写生成了完全不同的脸。

绝不要并行运行 p-video-avatar 片段——它们争抢 GPU 显存并以 CUDA OOM 失败。须顺序运行。此规则来自一次教训:3 个并行运行中有 2 个失败。

绝不要把 speaking_rate 设在 1.0 以下——听起来不自然且出戏。默认 1.05。来自用户反馈:0.9 语速“felt weird and disengaging”。

生成视频前始终对帧做质检——视频生成是流水线中最昂贵的步骤。在图像阶段发现双麦克风或错误 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:人像 + 音频 → talking head 视频。infsh/media-merger:将多个视频片段拼接为一个视频。可使用 belt task cost <task-id> 查看任何单个任务的成本。