多模态 AIGC 内容生产的核心不是“单点生成”,而是把数字人、AI 口播、AI 异兽、AI 舞蹈、AI 绘画串成一条可复用流水线:脚本 → 分镜 → 图像 → 视频 → 音频 → 合成 → 审核 → 发布。专业落地靠的是工程化,不是单次提示词。
环节 | 能力 | 关键点 |
|---|---|---|
脚本 | LLM 生成 | 结构化、合规审核 |
数字人 | 形象+驱动 | 不伪造真人,需授权 |
AI 口播 | TTS+唇形 | 音画同步、字幕 |
AI 绘画 | 文生图/图生图 | 风格一致、角色一致 |
异兽 | 神话形象生成 | 不侵权、不恐怖违规 |
舞蹈 | 姿态驱动/视频生成 | 动作自然、无不良暗示 |
合成 | ffmpeg | 比例、码率、字幕 |
异步生成 API 通常为“提交任务 + 轮询状态”。封装通用函数:
import os, time, requests
API_BASE = os.environ["AIGC_API_BASE"]
HEADERS = {
"Authorization": f"Bearer {os.environ['AIGC_API_KEY']}",
"Content-Type": "application/json",
}
def submit(path: str, payload: dict) -> str:
r = requests.post(f"{API_BASE}{path}", json=payload,
headers=HEADERS, timeout=60)
r.raise_for_status()
return r.json()["task_id"]
def poll(path: str, task_id: str, timeout=300):
start = time.time()
while time.time() - start < timeout:
r = requests.get(f"{API_BASE}{path}/{task_id}",
headers=HEADERS, timeout=30)
data = r.json()
if data["status"] == "succeeded":
return data
if data["status"] == "failed":
raise RuntimeError(data.get("error"))
time.sleep(4)
raise TimeoutError(task_id)固定角色描述、风格词、负面词,是跨镜头一致的关键。
def image_prompt(scene: str, character: str, style: str) -> str:
return (
f"{style},{character},{scene},"
"电影级光影,细节清晰,构图干净,"
"无文字水印,无多余肢体,无恐怖元素"
)
def gen_image(scene, character, style="国风插画,赛璐璐上色"):
prompt = image_prompt(scene, character, style)
task_id = submit("/v1/images/tasks", {
"prompt": prompt, "ratio": "9:16"
})
return poll("/v1/images/tasks", task_id)["image_url"]山海经异兽建议:以古籍描述为基础,不直接复制受版权保护的影视/游戏形象。
口播流程:文本 → TTS → 唇形驱动 → 合成。
def tts(text: str, voice="female_01") -> str:
task_id = submit("/v1/tts/tasks", {
"text": text, "voice": voice
})
return poll("/v1/tts/tasks", task_id)["audio_url"]
def digital_human(avatar_id: str, audio_url: str) -> str:
task_id = submit("/v1/avatar/tasks", {
"avatar_id": avatar_id,
"audio_url": audio_url,
"background": "studio",
})
return poll("/v1/avatar/tasks", task_id)["video_url"]注意:数字人形象须有授权,不得伪造真实人物,尤其是公众人物。
舞蹈生成可用姿态序列驱动或视频生成。工程上重点是动作自然、节奏对齐、无不良暗示。
def gen_dance(ref_image: str, motion: str, duration=8) -> str:
task_id = submit("/v1/video/tasks", {
"image_url": ref_image,
"motion": motion,
"duration": duration,
"ratio": "9:16",
})
return poll("/v1/video/tasks", task_id)["video_url"]# 视频 + 音频 + 字幕
ffmpeg -i video.mp4 -i voice.mp3 -vf "subtitles=sub.srt" \
-c:v libx264 -c:a aac -shortest final.mp4多模态 AIGC 的价值在于工业化生产:统一编排、一致性控制、批量重试、人工审核、合规发布。模型负责生成,工程负责稳定,人负责创意与责任。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。