AI 播客產生器
使用 inference.sh 管道創建多人對談播客影片:肖像生成 → 語音合成音檔 → 虛擬角色影片 → 合成。支援真人(透過 Phota)、3D 吉祥物、插畫角色以及混合陣容。
當使用者想要製作播客、對談影片、展示片、宣傳對話或任何多位講者的影片內容時使用。
管道概覽
角色(圖片) → 語音合成(每輪音檔) → 虛擬角色(每輪影片) → 合成(最終影片)
流程
步驟 1:角色創建
根據角色類型選擇正確的工具:
| 角色類型 | 工具 | 備註 |
|---|---|---|
| 真人(新建) | pruna/p-image | 16:9,prompt_upsampling: true。快速,無需訓練,但跨次生成的身份不一致。 |
| 真人(一致身份) | 使用 [[profile_id]] 的 phota/generate | 在所有鏡頭中保持身份一致。需要先訓練 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):
- 使用素面版本的服裝生成角色
- 使用
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 個單詞
時長指南:
| 目標時長 | 單詞數 |
|---|---|
| 15 秒 | ~38 個詞 |
| 30 秒 | ~75 個詞 |
| 60 秒 | ~150 個詞 |
步驟 5:生成語音音檔
為每一輪使用 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 (美式英語)
- 使用
inworld/text-to-speech-2:voices列出所有可用聲音
語速:
- 預設使用 1.05 以獲得自然的播客節奏
- 對於簡短的反應句,使用 1.1
- 絕對不要低於 1.0 — 聽起來會很慢且讓人不想聽
- 每個角色的所有輪次之間保持語速一致
所有語音合成輪次可以平行執行(便宜、快速,每個約 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 記憶體不足而失敗。每個片段需要 15-90 秒,取決於音檔長度。
角度分配計畫: 在輪次之間交替使用正面和特寫鏡頭以增加視覺變化。6 輪的範例:
T1:講者 A — 正面
T2:講者 B — 正面
T3:講者 C — 正面(或特寫)
T4:講者 A — 特寫
T5:講者 B — 特寫
T6:講者 A — 正面
步驟 7:合成
使用 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
合成功能是免費的,根據總時長需要 2-6 分鐘。
規則
-
Gemini 無法保留真人面部身份 — 使用 Gemini 為真人生成不同角度的畫面會產生一個不同的人。對於需要身份一致的真人照片,請使用具有已訓練 profile_id 的 Phota,或一次性生成所有角度。這是在 Gemini 為一個本應與正面照片匹配的特寫鏡頭生成了一個完全不同的臉之後學到的教訓。
-
絕對不要平行執行 p-video-avatar 片段 — 它們會競爭 GPU 記憶體並因 CUDA 記憶體不足而失敗。請依序執行它們。這是在 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> 來檢查任何個別任務的成本。