我们处理的内容涵盖企业解说视频、日常 vlog、短剧和广告。真正困难的通常不是让模型输出泰米尔语、阿拉伯语或粤语,这些它已经能做到。难点在于,让它采用配音场景中人们实际会使用的语言版本。

要求模型使用沙特阿拉伯语时,得到的往往是现代标准阿拉伯语。要求使用香港中文时,得到的可能是以繁体字书写的普通话。要求使用泰米尔语时,模型可能输出语法完全正确的泰米尔语,但句法结构受印地语影响,并在拿不准的地方夹杂几个英语单词。
这些输出看起来都没有明显错误,难点恰恰在这里。
译文流畅,内容也切题,通用质量检查很可能会让它通过。但母语者一听就会觉得不对劲:过于正式、书面味太重、太像另一种语言,或者根本不像人们会说出口的话。
视频本地化正是从这里开始。重点不是教模型掌握一种语言,而是避免它退回到训练期间最常见的语言版本。
我在之前的一篇文章中介绍过时间对齐,也就是让翻译后的音轨重新适配原视频的剪辑时序。那种情况下,台词已经确定,任务只是让它们与时长匹配。
提示词不是一份文档
人们常把提示词工程理解为不断修改一段很长的指令,直到输出有所改善。但我们的翻译提示词并不是这样工作的。
我们会针对每次请求,用多个较小的指导模块动态组装提示词。有些模块始终启用,另一些则取决于具体任务:
- 内容属于旁白、对话、广告,还是 vlog?
- 原文中是否有值得保留的犹豫或打断?
- 目标语言是否涉及语法性别?
- 我们是否掌握这个语言对反复出现的失败模式?
- 是否提供了说话人标签?
即使来自同一句英语原文,两次请求也可能收到不同的提示词。
组装逻辑本身并不值得过多关注,真正重要的是这些模块为什么会有所不同。
泰米尔语和马拉地语都属于印度语言,但需要提醒模型的问题并不相同。沙特阿拉伯语和阿联酋阿拉伯语彼此相关,但我们需要的口语形式不能互换。“香港中文”也不只是“使用繁体字的中文”。
真正有用的规则不是宽泛的文化标签,而是具体说明某个模型在处理特定目标语言时容易出现什么问题。
不要替它选择语气,要防止语气漂移
我们有一个始终启用的模块,用于处理语体问题。它不会要求模型“使用正式语气”或“使用随意语气”。
这是有意为之。
模型通常知道法律声明、产品广告和日常 vlog 不该采用相同的表达方式。更大的问题在于长文本中的一致性。它起初大致找对了语气,随后却逐渐发生漂移。
原本口语化的台词会变得略显正式。一个政府术语第一次被严谨翻译,两个片段之后却换成了随意说法。某个角色开头说话还很放松,转眼就像在照着宣传册念稿。
单独看,每种选择似乎都说得通。但组合在一起,整条音轨就像由几位互不沟通的译者共同完成。
因此,我们的指令不是“使用正式语体”,而更接近下面这种表述:
匹配原文的正式程度,并始终保持一致。除非原文也这样表达,否则不要把随意用语与机构化术语混在一起。
同样的思路也适用于其他方面。我们不会告诉模型“使用简单的词”,而是要求它在普通口语词足以表达时,不要选用书面味浓的近义词。我们也不会规定缩写只能采用某一种处理方式,而是要求模型选定一种方式后始终保持一致。
这一点对配音很重要。如果 NPS 在一个片段中保留为 NPS,下一个片段改成音译,后面又展开成完整的项目名称,那么每个决定单独看可能都有依据,但最终效果依然混乱。
这还会带来时长成本。把三个字母的缩写展开成六个口语单词,可能让原本已有固定时长的台词无法适配。
这里的问题很明确:造成错误的往往不是某个糟糕的决定,而是一系列局部合理、彼此却不协调的决定。
规则需要明确正确方向
对于否定式指令,一个常见的质疑是:如果你告诉别人不要去想粉红色的大象,其实已经让对方想到了它。
提示词设计中也存在同样的担忧。“避免使用受印地语影响的语序”听起来可能只会让印地语语序更加显眼。通常的建议是告诉模型该怎么做,而不是该避免什么。
如果指令只有禁止事项,这确实是很好的建议。但我们的指令不该止步于此。
一条有用的语言区域说明应当同时包含两个部分:
采用自然的泰米尔语分句结构。避免受印地语影响的语序。
优先使用常见的泰米尔语对应表达,避免逐字套用英语表达。
使用繁体字,不要使用简体字。
前半部分为模型指出正确方向,后半部分则明确它最可能走错的岔路。
这种结构比单纯说“不要”实用得多。它不像竖起一道围栏,更像设置路标:这里是应该前进的方向;那条路线总会引发问题。
并非每条规则都需要否定句。旁遮普语的文字系统选择就是一个直接的例子:使用古木基文,不要使用天城文。不过,如果输出存在已知倾向,明确指出它仍然很有价值。
默认倾向因语言区域而异
通用指导模块之外,还有一张特定语言区域说明表。这些说明按目标语言或语言对索引。匹配成功后,我们会将对应说明附加到模型即将翻译的文本附近。
这种位置安排是有意的。最具体的约束也最容易被忽略,因此应该尽量靠近它所约束的输入内容。
看几个例子会更容易理解。
沙特阿拉伯语。这条说明不是在教模型阿拉伯语,而是在告诉它:不要给我现代标准阿拉伯语,要给我沙特阿拉伯人实际会说出口的语言,同时还要便于朗读,因为文本接下来会交给 TTS 语音,而不是印在纸上。要求模型使用沙特阿拉伯语时,它往往会输出现代标准阿拉伯语,因为书面材料主要使用现代标准阿拉伯语,所以它在训练数据中占据主导地位。没有人会用海湾方言写报纸。表中还有一条对应阿联酋阿拉伯语的说明:结构相同,口音不同。

香港中文。这条说明要求使用粤语的语法和惯用表达,不要采用普通话措辞,同时使用繁体字。要求模型使用香港中文时,得到的可能是以繁体字书写的普通话。这种语言形式确实存在,但并不是粤语使用者会说出口的话。
例如,直接把普通话脚本转成繁体字用于粤语配音,听起来并不自然:
泰米尔语。这条说明不是在教模型泰米尔语,而是在要求它保持自然的泰米尔语分句结构,避免受印地语影响的语序,并在原本可能使用英语的地方优先选择泰米尔语原生表达。要求模型使用泰米尔语时,得到的可能是一些完全正确的泰米尔语词汇,却按受印地语影响的句式排列;一旦模型拿不准,就用英语填补空缺。泰米尔语与印地语在结构上差异较大,所以问题通常不是借用词汇,而是借用了句子结构。这样的译文乍看足够流畅,却不是人们实际会说的泰米尔语。

“印度语言”不是一个统一设置
人们很容易想到编写一个通用的“印度语言”模块,然后在所有地方复用。这样做很整洁,却会抹去这张语言区域表存在的意义。
印地语对不同语言造成的影响并不相同。
| 语族 | 语言 | 说明所要避免的问题 |
|---|---|---|
| 达罗毗荼语族 | 泰米尔语、泰卢固语、卡纳达语、马拉雅拉姆语 | 受印地语影响的语序,风险来自句法 |
| 印度-雅利安语族,与印地语较接近 | 马拉地语、孟加拉语 | 直接套用印地语仿译词,风险来自词汇 |
| 印度-雅利安语族,与印地语距离较远 | 古吉拉特语、奥里亚语 | 完全不需要防范印地语的说明,这里的影响主要来自英语 |
| 印地语地带内部 | 博杰普尔语 | 两者都不是,问题是向标准化的书面语体漂移 |
| 还涉及文字系统 | 旁遮普语 | 除上述两类问题外,还需指定文字系统 |
这是一种语言学区分,不是工程分类法。
泰米尔语在结构上与印地语相距较远,因此风险通常不是直接借用印地语词汇,而是句子结构受到影响。马拉地语与印地语接近得多,因此更容易出现词汇层面的仿译。马拉雅拉姆语在这方面与泰米尔语归为一类,因为它面临类似的结构问题。
博杰普尔语又有所不同。它与印地语非常接近,以至于两者之间的界限在政治层面仍有争议。它的问题并不是同样意义上的“印地语成分过多”。输出更容易向标准化、正式的博杰普尔书面语漂移,而不是采用实际需要的口语形式。
印地语本身不需要防范印地语的说明。它另有语法性别问题,这完全属于另一类情况。
默认倾向、漂移与信息缺失
语言区域表包含的规则最有针对性,因此最受关注,但它只是整个系统的一部分。这些指导模块分别解决三类问题。
漂移
语体和缩写处理都属于这一类。
模型有能力做出合理选择,却无法在整个任务中始终可靠地做出同一类型的合理选择。解决办法是告诉它,一致性具体意味着什么。
默认倾向
用现代标准阿拉伯语代替沙特阿拉伯语、用普通话措辞代替粤语表达、采用受印地语影响的泰米尔语句式、过多使用英语词汇,以及选择简体字而非繁体字,这些都属于默认倾向。
模型接触某个语言版本的次数多于另一个版本,因此往往会退回到更常见的版本。提示词需要明确我们想要哪个版本,并在适当情况下指出不想要哪个版本。
文字系统也属于这一类。语言区域标签并不总能确定所用文字。确实有多种语言使用不止一套文字系统,而模型往往会选择其训练数据中占主导地位的那一种。这不是配置细节,而是本地化选择。
信息缺失
语法性别则有所不同。
英语可以说“I’m tired”,却不透露说话人的性别。印地语、阿拉伯语、马拉地语和许多其他语言却无法始终做到这一点。这里并不是模型错误推断了缺失信息,而是原文从未提供这些信息。
提示词本身无法解决这个问题。
它最多只能要求模型根据上下文推断。当我们的处理流程掌握答案时,会把说话人性别作为元数据传入,并要求模型使用。阿拉伯语还需要额外处理,因为性别不仅可能影响说话人使用的表达,也可能影响对被称呼者的措辞。
这就是提示词设计的边界:你可以引导模型避开不合适的默认选择,却无法还原原文从未包含的信息。
VMEG 为什么要维护一张语言表?
按语言维护的表格看起来可能会带来维护负担,有时确实如此。如果系统要为本可根据输入计算出的内容维护一张手写表格,通常说明它缺少合适的模型。
字幕宽度就是一个例子。天城文或卡纳达文字符簇的宽度,可以通过 Unicode 属性、字体度量和渲染结果来测量。手动维护宽度表,只是在绕过本应由布局系统完成的计算。
语言指导则不同。任何语言标签都无法告诉你,泰米尔语输出可能向印地语式语序漂移,沙特阿拉伯语请求常常退回到现代标准阿拉伯语,或者繁体中文听起来仍可能像普通话而非粤语。
这些不是格式属性,而是我们针对模型在特定语言、地区和使用场景中的表现得出的观察。
因此,这张语言区域表值得维护。它不是一份设置清单,而是我们从真实输出中积累的经验记录。
简要总结
大多数翻译工作都着眼于帮助模型完成它原本做不到的事情。这里的情况有所不同。
VMEG 模型已经掌握泰米尔语、阿拉伯语、粤语、马拉地语以及许多其他语言。它默认不知道的是,当前项目究竟需要这些语言中的哪一种版本。
好的提示词模块会为模型补充缺失的执行上下文:
- 使用沙特阿拉伯口语,而不是现代标准阿拉伯语。
- 使用粤语措辞,而不是以繁体字书写的普通话。
- 让泰米尔语句法符合泰米尔语自身的习惯。
- 优先使用普通口语词汇,避免书面味过重的表达。
- 让每个角色在整条音轨中保持一致的说话风格。
模型懂这种语言。我们的任务是防止它选用错误的默认版本。