Communitygithub.com

Zerozking556/wuxia-thai-subtitles-skill

Codex 技能,用于将中国武侠/仙侠/古装奇幻视频翻译成泰语字幕。

wuxia-thai-subtitles-skill 是什麼?

此技能(Skill)专为 AI 编码助手(如 Codex)设计,用于将中国武侠、仙侠或历史奇幻视频的对话自动翻译成自然、紧凑且保留江湖氛围的泰语字幕。它支持三种工作模式:模式 A(无字幕中文音频)、模式 B(仅英文字幕)和模式 C(中文字幕可用,优先使用)。技能会引导用户根据现有字幕类型选择最佳模式,并严格遵守一系列严谨的规则,包括:处理硬编码字幕的清理、维护统一的术语表(如门派、称号、武功名称)、正确处理人称代词和语气、区分武侠与仙侠的用词风格,以及执行严格的渲染前检查(preflight)和质量控制(QC/QA)流程,以确保最终字幕在时间轴、位置、字体大小和避免重叠方面都达到专业水准。它还包含了关于片头片尾歌曲处理、语音覆盖检测等详细指导,是高度精细化、自动化字幕制作的完整工作流。

相容平台~Claude Code✓Codex CLI~Cursor
npx skills add Zerozking556/wuxia-thai-subtitles-skill

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

Wuxia 泰文字幕

目標

將中國武俠/仙俠/古裝奇幻影片中的中文對話翻譯成簡潔、自然且保留江湖氛圍的泰文字幕,並確保術語、名稱、稱號及人稱代詞在全片中保持一致。

選擇工作模式

先檢查資料來源,然後僅選擇一種模式作為主要工作流程:

  • 模式 A — 影片無字幕: 從影片中轉寫中文語音,然後在翻譯泰文前將中文文字與專門術語表進行比對。
  • 模式 C — 有中文字幕: 使用中文字幕作為翻譯來源,保留影片中的中文字幕,並調整泰文字幕位置避免重疊。
  • 模式 B — 有英文字幕: 使用英文字幕的時間和含義,但在選擇泰文詞彙前,需反向比對關鍵詞與音頻或中文劇本。

如果同時有中文字幕,即使也有英文字幕,也應優先使用模式 C。如果只有中文音頻和英文字幕,則使用模式 B,以中文音頻為主,英文字幕為輔。

畫面準備步驟 — 檢查現有字幕並制定策略

每次翻譯前都必須檢查影片,並在開始前確定字幕的語言和類型:

  • 無字幕: 無需製作乾淨母版。直接轉寫語音、翻譯,並在標準位置嵌入泰文字幕。

  • 有中文字幕: 嚴禁刪除中文字幕。將其作為翻譯來源並幫助測量實際邊界框。將泰文字幕放置在安全區域內,避免與中文字幕、工作人員名單、標誌或面部重疊。

  • 有英文字幕或其他語言字幕: 閱讀 references/subtitle-removal.md,並僅在專案策略要求時才移除或隱藏。

  • 軟字幕(Soft subtitle): 為可開關的字幕軌。保留中文軌;僅移除或不映射需要移除的英文或其他語言軌。絕不修改影像像素。

  • 硬字幕(Hardcoded subtitle): 文字已嵌入畫面。保留原始檔案並建立新檔案。絕不覆寫原始檔案。

對於需要移除的英文或其他語言硬字幕,請按優先順序選擇方法:

  1. 使用乾淨的原始檔案或無字幕版本(若可從用戶有權使用的來源取得)。
  2. 僅當字幕位於黑邊或畫面邊緣且不包含重要內容時進行裁剪,然後在整部影片中一致地縮放/填充回來。
  3. 當字幕覆蓋在實際畫面上時,使用遮罩和時間修復(temporal inpainting),追蹤跨幀位置並柔化遮罩邊緣。
  4. 當背景靜止且確認無移動物體通過時,使用相鄰幀進行修補。
  5. 作為最後手段,使用遮蓋條或模糊處理,並在結果明顯可見時事先通知用戶。

請勿在未檢查場景的情況下對整部影片使用單一遮罩大小,因為兩行字幕、翻譯標籤及前景物體的位置可能會改變。

當無字幕或保留原始中文字幕時,跳過影像移除步驟,並在最終編碼階段嵌入泰文字幕。僅在需要移除英文或其他語言字幕時,才建立乾淨母版或乾淨代理,並將泰文字幕嵌入與最終影像編碼結合,以減少品質損失。

翻譯前的共同步驟

  1. 檢查原始檔案、口語語言、字幕格式和語言、時間、音軌完整性,以及保留或移除原始字幕的策略。
  2. 閱讀 references/wuxia-glossary.md 以了解中文術語,並在涉及英文字幕時閱讀 references/english-chinese-bridge.md。
  3. 在進行大量翻譯前建立「專案術語表」,至少記錄:
    • 角色名稱及字/號
    • 門派、幫會、教派、家族及朝廷
    • 稱號、職位及角色之間的關係
    • 武功名稱、武器、秘籍、丹藥及地名
    • 每個角色使用的自稱
  4. 在開始前確定命名策略:使用官方泰文名稱、舊譯本名稱,或中文拼音轉寫。
  5. 將不確定的詞彙標記為「待確認」,嚴禁猜測後當作已確認使用。

模式 A — 影片無字幕

  1. 轉寫中文語音並附上時間碼,明確選擇中文語言並保留原始文字。
  2. 根據意義和說話節奏分割句子,不要在中間切斷名稱或慣用語。
  3. 透過重聽來檢查 ASR 不確定的部分,重點關注人名、門派、武功、數字、否定詞及同門親屬稱謂。
  4. 將中文文字與 references/wuxia-glossary.md 及「專案術語表」進行比對。
  5. 根據含義、意圖及角色地位進行翻譯,而非逐字翻譯中文。
  6. 將聽不清楚的提示點記錄在 QA 報告中,包含時間碼及可能的中文文字。
  7. 建立泰文字幕,同時保留中文語音的節奏,然後進行最終 QA。

嚴禁在未檢查發音的情況下翻譯包含錯誤專有名詞的 ASR 文字,因為一次錯誤可能導致全片名稱錯誤。

模式 C — 有中文字幕

  1. 使用中文字幕的文字和顯示時間作為一對一的主要模板:中文字幕何時開始,泰文字幕也同時開始;泰文字幕與中文字幕同時消失。嚴禁使用 ASR 時間代替中文字幕時間。
  2. 如果是軟字幕,直接複製每個中文提示點的 start 和 end;如果是硬字幕,檢查影格找到中文出現的第一幀和消失的第一幀,並對泰文字幕使用相同的時間邊界。誤差不得超過 1 幀。
  3. 根據中文提示點進行翻譯,不要將多個中文提示點合併成一個較長的泰文提示點。如果泰語閱讀時間不足,則縮短文字或根據中文提示點的變化進行分割。嚴禁將泰文提示點延長超過中文顯示時間。
  4. 僅使用音頻/ASR 來糾正 OCR 錯誤的中文字元並檢查覆蓋率。如果確實有語音但中文字幕遺漏,則根據音頻時間添加一個 manual_missing_chinese_cue 類型的泰文提示點,並在 QA 報告中記錄。
  5. 翻譯所有對話提示點,除非是已記錄跳過的片頭/片尾歌曲歌詞。
  6. 將原始中文字幕保留在影片中,並測量中文、工作人員名單和標誌的邊界框,以確定泰文字幕的安全區域。
  7. 當中文字幕或工作人員名單移動位置時,逐段調整泰文字幕的位置。如果發生重疊,嚴禁在整部影片中使用單一位置。
  8. 執行覆蓋率檢查,比對中文提示點、語音和泰文提示點,以確認沒有對話遺漏。

模式 B — 有英文字幕

  1. 預設保留 SRT/ASS/VTT 的原始編號和時間。
  2. 使用英文字幕作為含義和節奏的框架,但不要將英文術語視為最終的標準名稱。
  3. 聆聽中文音頻或使用劇本/中文字幕來查找名稱、稱號、門派、武功、武器、慣用語及力量體系對應的原始中文詞彙。
  4. 使用 references/english-chinese-bridge.md 進行「英文 → 可能的中文詞彙 → 泰文」的比對。
  5. 根據上下文解決歧義,例如 master、sect、clan、cult、chief、elder、senior、energy、cultivation 和 realm。
  6. 檢查英文字幕可能省略或過於籠統的資訊,特別是性別、輩分、否定詞、數字、招式名稱及禮貌程度。
  7. 根據已確認的中文劇本含義進行泰文翻譯,利用英文字幕輔助掌握主旨和時間。
  8. 如果沒有音頻或中文劇本可供檢查,請在術語表和 QA 報告中將狀態標記為「從英文推斷」。嚴禁報告為已與中文確認。

英文字幕可能合併兩個中文句子或將一個句子分成多個提示點。在翻譯前檢查跨提示點的含義,但除非必要,否則不要更改時間。

詞彙選擇原則

一般詞彙與專有名詞

  • 將一般詞彙翻譯成泰文:江湖 → ยุทธภพ, 内功 → กำลังภายใน
  • 當沒有官方泰文名稱時,根據中文拼音轉寫人名、門派、武功及特定地名。
  • 若用戶提供參考來源,優先使用版權持有者或官方發行版的泰文名稱。
  • 嚴禁在一部影片中隨意切換翻譯和音譯。例如,不要在同一事物上無故混用 ตันเถียน 和 จุดรวมลมปราณ。
  • 如果一個術語有兩種含義,根據其在故事中的作用進行選擇,並記錄所選詞彙。

區分組織類型

  • 门派 使用 สำนัก
  • 帮 根據語言層次和時代使用 พรรค 或 แก๊ง
  • 教 當涉及宗教或教義時使用 นิกาย;僅當上下文故意如此稱呼時才使用 พรรคมาร
  • 宗 根據組織結構使用 นิกาย、 สำนัก 或 ตระกูล
  • 宫 使用 ตำหนัก
  • 山庄 使用 คฤหาสน์ 或根據官方名稱使用 สำนัก...จวง
  • 镖局 使用 สำนักคุ้มภัย

區分易混淆的頭銜

  • 掌门 → เจ้าสำนัก
  • 门主 / 帮主 / 教主 / 宗主 → ประมุข... 並附上組織類型
  • 盟主 → ประมุขพันธมิตรยุทธ์
  • 长老 → ผู้อาวุโส
  • 堂主 → หัวหน้าหอ
  • 舵主 → หัวหน้าสาขา
  • 护法 → ผู้พิทักษ์

嚴禁將所有職位都翻譯成 ประมุข,否則權力層級將丟失。

人稱代詞與語言層次

  • 保持關係和地位的清晰度,優先於保留每個中文詞彙。
  • 使用 ข้า / เจ้า / ท่าน 作為武俠對話的中性基礎。
  • 僅在宮廷語境中使用 กระหม่อม / หม่อมฉัน / ฝ่าบาท / พระองค์。
  • 對僧侶使用 อาตมา,並對道士角色使用 ข้านักพรต 或適當形式。
  • 當說話者對長輩貶低自己時使用 ผู้น้อย / ผู้เยาว์。
  • 當說話者年長並以合適語氣自稱時使用 ผู้เฒ่า。
  • 當行數擁擠時可省略重複稱呼,但嚴禁導致對話對象不明。
  • 避免不必要的過時泰語,如 ไฉน、 บัดเดี๋ยวนี้、 หาได้ไม่。僅在符合該版本基調時使用。

武功名稱與招式

  • 翻譯能清晰描繪畫面或功能的招式名稱,例如 降龙十八掌 → สิบแปดฝ่ามือพิชิตมังกร
  • 保持重複的命名結構在每一集中一致。
  • 使用 วิชา 表示訓練體系, เพลง... 表示一系列連續招式, กระบวนท่า 表示特定招式, เคล็ดวิชา 表示內部修煉口訣。
  • 如果名稱獨特且不確定,在「專案術語表」中放入暫譯並標記狀態為 待確認,而不是在不同場景間來回更改。

區分武俠與仙俠

  • 對武俠故事使用 กำลังภายใน、 วรยุทธ์、 ลมปราณ、 ยุทธภพ。
  • 當故事有明確的修仙體系時,使用 พลังปราณ、 ตบะ、 ผู้บำเพ็ญ、 แก่นปราณ、 ข้ามด่านเคราะห์、 เซียน。
  • 不要在普通武俠故事中用 ตบะ 代替 功力。
  • 不要自動將 走火入魔 翻譯為 กลายเป็นมาร。當指修煉出錯導致內息紊亂時,應使用 ธาตุไฟเข้าแทรก。

泰文字幕格式

  • 在建立 ASS 或渲染之前,必須閱讀 references/rendering-guardrails.md 並將其規則作為渲染閘門。嚴禁根據先前專案的固定值猜測字型大小。
  • 預設使用黃色泰文字幕字元(#FFFF00;ASS &H0000FFFF),並帶有實心黑色邊框,以確保在暗場景和亮場景下均可讀,除非用戶指定其他顏色。
  • 對 ASS 檔案和燒錄字幕的影片使用黃色;SRT 檔案僅為純文字,因此在播放器中開啟時不保證顏色。
  • 根據旋轉/縮放後的實際輸出影像計算初始字型大小:round(min(display_height × 0.042, display_width × 0.046)),然後限制在 28–96 範圍內;例如,1920×1080 使用約 45,而不是自動使用 52 或 120。
  • 設定黑色邊框為 clamp(round(font_size × 0.07), 2, 6),並使用陰影 0–1;嚴禁使用過厚的邊框,使字元看起來比實際更大。
  • 設定 ASS PlayResX/PlayResY 等於輸出影像尺寸, ScaledBorderAndShadow: yes, Timer: 100.0000, WrapStyle: 0, BorderStyle=1,並確認字型確實包含泰文字形。
  • 為不同位置使用命名樣式,而非逐個提示點覆蓋;嚴禁在 Dialogue 中無正當理由和檢查就使用 \fs、 \fscx、 \fscy、 \pos、 \move、 \t、 \fad、 \fade 或 \alpha,因為這會導致某些提示點字型變大、跳動或看起來卡住。
  • 每個提示點限制不超過 2 行。
  • 根據短語和意義分行。嚴禁在中間切斷名稱、職位或慣用語。
  • 使用簡短句子,刪除中文用於強調的多餘詞彙,但保留重要資訊。
  • 避免在螢幕上使用括號解釋術語。選擇可理解的泰文詞彙或製作單獨的術語表。
  • 僅在對話中斷時使用 …,僅在檔案格式支援中斷時使用 —。
  • 不要添加原文沒有的咒罵或情緒。
  • 不要讓角色說出過於現代的語言,除非原文故意帶有當代幽默基調。

渲染預檢 — 防止字型過大和字幕卡住

在建立 SRT/ASS 之後、完整渲染之前執行此步驟。嚴禁跳過:

  1. 確認 SRT 和 ASS 使用相同的提示點清單:提示點數量、文字、開始/結束時間及順序必須根據模式策略保持一致。
  2. 執行 python scripts/subtitle_preflight.py <thai.ass> --compare <thai.srt> --width <display_width> --height <display_height> --fps <fps> --media-duration <seconds> --strict --json <report.json>,並再次對 SRT 執行。
  3. 當發現 end ≤ start、提示點超出影片結尾、相同樣式/圖層中的提示點重疊、未經檢查的提示點持續超過 8 秒、有風險的事件覆蓋、PlayRes 錯誤、Timer 不是 100 或字型大小超出計算範圍時,封鎖工作。
  4. 持續超過 6 秒的對話提示點必須檢查實際影像/音頻;最後一個提示點、重疊提示點、已編輯提示點以及場景切換前的提示點,必須確認其在結束時間後確實消失。
  5. 至少渲染 4 個 10–20 秒的樣本:短提示點、長提示點/雙行提示點、有中文或工作人員名單的場景,以及快速切換提示點的片段。以 100% 和大約 50% 的尺寸檢視。
  6. 在樣本未包含以下問題之前,嚴禁進行完整渲染:字型過大、行數溢出、元音/聲調被截斷、字形缺失/回退、字幕遮擋影像,以及新提示點出現後舊字幕卡住。
  7. 如果變更了解析度、長寬比、字型或輸出變體,必須重新計算樣式並通過樣本閘門。嚴禁直接從其他輸出複製 Fontsize/Margin。

防止卡住的時間規則

  • 設定每個提示點為 0 ≤ start < end ≤ media_duration + 1 frame;嚴禁結束時間為空、延長到假常數如 9:59:59,或未經檢查就延伸到檔案結尾。
  • 按時間和樣式/圖層對事件進行排序;檢查相鄰的重複文字,因為可能看起來像是同一提示點卡住。
  • 對於模式 A/B,根據實際音頻修正非故意的重疊,而不是刪除提示點。
  • 對於模式 C,嚴禁裁剪中文主時間軸來修正重疊。保持中文 start/end 一對一,然後改用圖層/樣式配對或位置來解決。
  • 燒錄完成後,檢查長提示點、最後一個提示點、重疊提示點以及曾經出錯的提示點在 end - 1、 end + 1 和 end + 2 幀,以確認舊字幕像素確實消失。

片頭片尾歌曲範圍

  • 預設跳過片頭和片尾歌曲歌詞的轉寫和翻譯,並在 QA 報告中記錄跳過的時段。
  • 不要將記錄的歌詞時段視為遺漏的對話。
  • 如果歌曲期間有對話、劇情或重要旁白,則照常翻譯該部分。
  • 仍需檢查歌曲期間的影像,以確保泰文字幕不與工作人員名單重疊,並確認需保留的中文字幕未受損。

最終 QC 和 QA — 嚴禁跳過

在完成翻譯和建立實際檔案後,必須分別進行兩輪檢查。嚴禁以翻譯過程中的檢查代替 QC/QA 輪次,並且在兩輪都通過之前,嚴禁交付。

強制關卡 — 檢查快速對話和來源提示點遺漏的語音

  • 使用獨立於來源提示點清單的 VAD/ASR 從完整片段音頻建立「語音覆蓋圖」。嚴禁使用原始 SRT/OCR/ASR 提示點數量作為翻譯完成度的證據。
  • 在快速說話、說話重疊、提示點短於 1 秒、感嘆詞、輕聲、場景切換點以及 VAD 檢測到人聲但無泰文提示點的間隙中,使用短視窗和必要時的重疊區段執行第二輪音頻檢查。
  • 對於嵌入式中文字幕影像,在風險時段隨機 OCR 多個幀,而不僅僅是中點幀,因為短句子可能在取樣點之間出現和消失。
  • 逐段比對「所有語音區段 → 找到的中文/英文提示點 → 泰文提示點」,並建立帶有時間碼的「未覆蓋語音」清單。透過聽取音頻或查看實際影像進行檢查,並補充翻譯直到為零。
  • 請勿自動跳過整個片頭或片尾歌曲時段。僅跳過記錄時段內實際演唱的歌詞;對話、感嘆詞、劇情、下集預告及插入的台詞必須翻譯。
  • 在 uncovered speech segments = 0、 missing dialogue cues = 0 和 unresolved rapid-speech flags = 0(扣除允許跳過的歌詞時段後)之前,嚴禁通過 QC。

第 1 輪 — 完整性和潔淨度 QC

  • 從頭到尾比對所有語音區段與來源提示點和泰文提示點,不計算已記錄為跳過的片頭/片尾歌曲時段。
  • 使用「語音覆蓋圖」從頭到尾重新檢查完整片段,並檢查所有標記的快速說話/短提示點區段。嚴禁僅檢查系統成功轉寫的提示點。
  • 確認所有對話區段均已翻譯。SRT/ASS 檔案中無意中不得有空提示點、暫存文字或原始語言殘留。
  • 檢查提示點數量、順序、開始/結束時間、語音間隙以及 ASR/來源字幕可能遺漏的提示點。
  • 檢查所有已指示移除英文或其他語言字幕的位置是否乾淨,沒有殘留的文字、陰影、邊框、方塊或閃爍現象。
  • 不要將用戶指示保留的中文字幕視為殘留字幕,並確認泰文字幕不與中文字幕重疊。
  • 在模式 C 中,檢查每個中文對話提示點是否有一對一的泰文提示點,且開始/結束時間在 1 幀內匹配;僅排除已記錄跳過的歌詞提示點和純音效提示點。

[truncated for translation]

相關技能