Wuxia 泰文字幕
目標
將中國武俠/仙俠/古裝奇幻影片中的中文對話翻譯成簡潔、自然且保留江湖氛圍的泰文字幕,並確保術語、名稱、稱號及人稱代詞在全片中保持一致。
選擇工作模式
先檢查資料來源,然後僅選擇一種模式作為主要工作流程:
- 模式 A — 影片無字幕: 從影片中轉寫中文語音,然後在翻譯泰文前將中文文字與專門術語表進行比對。
- 模式 C — 有中文字幕: 使用中文字幕作為翻譯來源,保留影片中的中文字幕,並調整泰文字幕位置避免重疊。
- 模式 B — 有英文字幕: 使用英文字幕的時間和含義,但在選擇泰文詞彙前,需反向比對關鍵詞與音頻或中文劇本。
如果同時有中文字幕,即使也有英文字幕,也應優先使用模式 C。如果只有中文音頻和英文字幕,則使用模式 B,以中文音頻為主,英文字幕為輔。
畫面準備步驟 — 檢查現有字幕並制定策略
每次翻譯前都必須檢查影片,並在開始前確定字幕的語言和類型:
-
無字幕: 無需製作乾淨母版。直接轉寫語音、翻譯,並在標準位置嵌入泰文字幕。
-
有中文字幕: 嚴禁刪除中文字幕。將其作為翻譯來源並幫助測量實際邊界框。將泰文字幕放置在安全區域內,避免與中文字幕、工作人員名單、標誌或面部重疊。
-
有英文字幕或其他語言字幕: 閱讀 references/subtitle-removal.md,並僅在專案策略要求時才移除或隱藏。
-
軟字幕(Soft subtitle): 為可開關的字幕軌。保留中文軌;僅移除或不映射需要移除的英文或其他語言軌。絕不修改影像像素。
-
硬字幕(Hardcoded subtitle): 文字已嵌入畫面。保留原始檔案並建立新檔案。絕不覆寫原始檔案。
對於需要移除的英文或其他語言硬字幕,請按優先順序選擇方法:
- 使用乾淨的原始檔案或無字幕版本(若可從用戶有權使用的來源取得)。
- 僅當字幕位於黑邊或畫面邊緣且不包含重要內容時進行裁剪,然後在整部影片中一致地縮放/填充回來。
- 當字幕覆蓋在實際畫面上時,使用遮罩和時間修復(temporal inpainting),追蹤跨幀位置並柔化遮罩邊緣。
- 當背景靜止且確認無移動物體通過時,使用相鄰幀進行修補。
- 作為最後手段,使用遮蓋條或模糊處理,並在結果明顯可見時事先通知用戶。
請勿在未檢查場景的情況下對整部影片使用單一遮罩大小,因為兩行字幕、翻譯標籤及前景物體的位置可能會改變。
當無字幕或保留原始中文字幕時,跳過影像移除步驟,並在最終編碼階段嵌入泰文字幕。僅在需要移除英文或其他語言字幕時,才建立乾淨母版或乾淨代理,並將泰文字幕嵌入與最終影像編碼結合,以減少品質損失。
翻譯前的共同步驟
- 檢查原始檔案、口語語言、字幕格式和語言、時間、音軌完整性,以及保留或移除原始字幕的策略。
- 閱讀 references/wuxia-glossary.md 以了解中文術語,並在涉及英文字幕時閱讀 references/english-chinese-bridge.md。
- 在進行大量翻譯前建立「專案術語表」,至少記錄:
- 角色名稱及字/號
- 門派、幫會、教派、家族及朝廷
- 稱號、職位及角色之間的關係
- 武功名稱、武器、秘籍、丹藥及地名
- 每個角色使用的自稱
- 在開始前確定命名策略:使用官方泰文名稱、舊譯本名稱,或中文拼音轉寫。
- 將不確定的詞彙標記為「待確認」,嚴禁猜測後當作已確認使用。
模式 A — 影片無字幕
- 轉寫中文語音並附上時間碼,明確選擇中文語言並保留原始文字。
- 根據意義和說話節奏分割句子,不要在中間切斷名稱或慣用語。
- 透過重聽來檢查 ASR 不確定的部分,重點關注人名、門派、武功、數字、否定詞及同門親屬稱謂。
- 將中文文字與 references/wuxia-glossary.md 及「專案術語表」進行比對。
- 根據含義、意圖及角色地位進行翻譯,而非逐字翻譯中文。
- 將聽不清楚的提示點記錄在 QA 報告中,包含時間碼及可能的中文文字。
- 建立泰文字幕,同時保留中文語音的節奏,然後進行最終 QA。
嚴禁在未檢查發音的情況下翻譯包含錯誤專有名詞的 ASR 文字,因為一次錯誤可能導致全片名稱錯誤。
模式 C — 有中文字幕
- 使用中文字幕的文字和顯示時間作為一對一的主要模板:中文字幕何時開始,泰文字幕也同時開始;泰文字幕與中文字幕同時消失。嚴禁使用 ASR 時間代替中文字幕時間。
- 如果是軟字幕,直接複製每個中文提示點的
start和end;如果是硬字幕,檢查影格找到中文出現的第一幀和消失的第一幀,並對泰文字幕使用相同的時間邊界。誤差不得超過 1 幀。 - 根據中文提示點進行翻譯,不要將多個中文提示點合併成一個較長的泰文提示點。如果泰語閱讀時間不足,則縮短文字或根據中文提示點的變化進行分割。嚴禁將泰文提示點延長超過中文顯示時間。
- 僅使用音頻/ASR 來糾正 OCR 錯誤的中文字元並檢查覆蓋率。如果確實有語音但中文字幕遺漏,則根據音頻時間添加一個
manual_missing_chinese_cue類型的泰文提示點,並在 QA 報告中記錄。 - 翻譯所有對話提示點,除非是已記錄跳過的片頭/片尾歌曲歌詞。
- 將原始中文字幕保留在影片中,並測量中文、工作人員名單和標誌的邊界框,以確定泰文字幕的安全區域。
- 當中文字幕或工作人員名單移動位置時,逐段調整泰文字幕的位置。如果發生重疊,嚴禁在整部影片中使用單一位置。
- 執行覆蓋率檢查,比對中文提示點、語音和泰文提示點,以確認沒有對話遺漏。
模式 B — 有英文字幕
- 預設保留 SRT/ASS/VTT 的原始編號和時間。
- 使用英文字幕作為含義和節奏的框架,但不要將英文術語視為最終的標準名稱。
- 聆聽中文音頻或使用劇本/中文字幕來查找名稱、稱號、門派、武功、武器、慣用語及力量體系對應的原始中文詞彙。
- 使用 references/english-chinese-bridge.md 進行「英文 → 可能的中文詞彙 → 泰文」的比對。
- 根據上下文解決歧義,例如
master、sect、clan、cult、chief、elder、senior、energy、cultivation和realm。 - 檢查英文字幕可能省略或過於籠統的資訊,特別是性別、輩分、否定詞、數字、招式名稱及禮貌程度。
- 根據已確認的中文劇本含義進行泰文翻譯,利用英文字幕輔助掌握主旨和時間。
- 如果沒有音頻或中文劇本可供檢查,請在術語表和 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 之後、完整渲染之前執行此步驟。嚴禁跳過:
- 確認 SRT 和 ASS 使用相同的提示點清單:提示點數量、文字、開始/結束時間及順序必須根據模式策略保持一致。
- 執行
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 執行。 - 當發現
end ≤ start、提示點超出影片結尾、相同樣式/圖層中的提示點重疊、未經檢查的提示點持續超過 8 秒、有風險的事件覆蓋、PlayRes 錯誤、Timer 不是 100 或字型大小超出計算範圍時,封鎖工作。 - 持續超過 6 秒的對話提示點必須檢查實際影像/音頻;最後一個提示點、重疊提示點、已編輯提示點以及場景切換前的提示點,必須確認其在結束時間後確實消失。
- 至少渲染 4 個 10–20 秒的樣本:短提示點、長提示點/雙行提示點、有中文或工作人員名單的場景,以及快速切換提示點的片段。以 100% 和大約 50% 的尺寸檢視。
- 在樣本未包含以下問題之前,嚴禁進行完整渲染:字型過大、行數溢出、元音/聲調被截斷、字形缺失/回退、字幕遮擋影像,以及新提示點出現後舊字幕卡住。
- 如果變更了解析度、長寬比、字型或輸出變體,必須重新計算樣式並通過樣本閘門。嚴禁直接從其他輸出複製 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]