优化生成视频出现字幕问题
This commit is contained in:
@@ -540,9 +540,11 @@ _CREATIVE_DIRECTION = """
|
||||
- **禁止抽象词**:「展示商品」「呈现质感」「体现高级感」「氛围到位」「传递温暖」——
|
||||
这些不是画面,是评价。要写成「杯壁上的水珠顺着往下滑」「她眉头松开,肩膀塌下来」。
|
||||
- **禁止心理描写**:模型拍不出「她内心很纠结」,要写「她拿起又放下,手指在包装边缘停了两秒」。
|
||||
- **禁止画面里出现文字**:本系统出的**任何视频都不带字幕**。不要写字幕、花字、标题、片头片尾、
|
||||
水印、角标、价格贴片、优惠标签、弹幕、对话气泡、贴纸、参数表、对比图表、UI、按钮、购物浮层;
|
||||
口播和台词只以声音存在。商品包装上原有的真实文字除外。
|
||||
- **画面描述里一个「字幕」都不许出现**:本系统出的**任何视频都不带字幕**,这件事由系统统一保证,
|
||||
不需要你在脚本里声明。所以 `visual` 里既不要要求加字幕 / 花字 / 标题 / 贴片 / 弹幕 / 角标 / 水印 /
|
||||
购物浮层,**也不要写「无字幕」「不加花字」这类否定说法** —— 出片模型不区分肯定否定,
|
||||
画面描述里出现这个词本身就更容易把文字画上屏。
|
||||
口播和台词只以声音存在。只有商品包装上原本印着的真实文字可以出现在画面里。
|
||||
- **禁止一镜内跨场景/跨时间蒙太奇**:15 秒是**一个连续的动作链**,同一地点、同一光线、
|
||||
同一套衣服。要换环境就换到下一镜,并在 entity_refs 里换成另一个 scene。
|
||||
|
||||
@@ -754,7 +756,7 @@ def build_agent_messages(
|
||||
"并写清哪只手、从哪个方向入画、握商品哪里,以及真实用法"
|
||||
"(茶=热水+蒸汽+茶汤变色,禁止茶包丢进冷白开;禁止悬浮肢体、商品凭空出现)。"
|
||||
"只写拍得出来的东西:禁止「展示商品/呈现质感/体现高级感」这类评价词,禁止心理描写,"
|
||||
"禁止画面里出现任何文字叠加(字幕/花字/标题/水印/角标/价签/购物浮层),口播只以声音存在;"
|
||||
"画面描述里一个「字幕」都不要出现(要求加的、声明没有的都不要写),口播只以声音存在;"
|
||||
"禁止一镜内跨场景跨时间。"
|
||||
f"禁止一句空画面撑满 {SEGMENT_DURATION_MAX} 秒。允许另给 beats 数组,后端会折进 visual。\n"
|
||||
)
|
||||
@@ -1061,6 +1063,26 @@ def assert_script_has_a_hook(draft: dict) -> None:
|
||||
raise ValueError("开场像泛泛推荐,请直接从具体场景、反差或问题切入")
|
||||
|
||||
|
||||
# 脚本里只要写了「字幕/花字」,下游就有两种坏结果:一是被清洗器删掉(用户在脚本页看到的和实际出片不一致),
|
||||
# 二是万一漏网就直接画到成片上。所以从源头就不许写 —— 本系统出的任何视频都没有字幕。
|
||||
_CAPTION_WORDS_IN_SCRIPT = ("字幕", "花字", "艺术字", "贴片", "弹幕", "角标", "水印")
|
||||
|
||||
|
||||
def assert_no_caption_requests(draft: dict) -> None:
|
||||
"""全片任何一镜都不许提「字幕 / 花字」—— 无论是要求加还是声明没有。
|
||||
出片模型不区分肯定否定,看到这个词本身就更容易把文字画上屏。"""
|
||||
for index, seg in enumerate(draft.get("segments") or []):
|
||||
if not isinstance(seg, dict):
|
||||
continue
|
||||
text = f"{seg.get('visual') or ''}\n{seg.get('product_exposure') or ''}"
|
||||
hit = next((w for w in _CAPTION_WORDS_IN_SCRIPT if w in text), None)
|
||||
if hit:
|
||||
raise ValueError(
|
||||
f"第 {index + 1} 镜写到了「{hit}」。本系统出的视频一律没有字幕,"
|
||||
f"画面描述里不要出现这类词(连「无字幕」也不要写),把这一镜的画面改成只描述实拍内容"
|
||||
)
|
||||
|
||||
|
||||
def assert_cta_is_not_shouty(draft: dict) -> None:
|
||||
"""拦住「点下方小黄车」那套平台指令腔:CTA 要回到情境、点名谁适合,不是喊口号。
|
||||
扫全片口播/对白(不只 CTA 镜),因为这类话经常顺手塞进末镜旁白的最后一句。"""
|
||||
@@ -1763,6 +1785,7 @@ def stream_script_agent(
|
||||
)
|
||||
assert_shot_density(candidate, fmt)
|
||||
assert_cta_is_not_shouty(candidate)
|
||||
assert_no_caption_requests(candidate)
|
||||
return candidate
|
||||
|
||||
routed_stream = stream_routed_text_request(
|
||||
|
||||
Reference in New Issue
Block a user