主页/文档库/AI 翻译
AI 翻译#LLM#翻译#Prompt#微调

LLM 翻译调试实战:从 Prompt 到模型微调

用 GPT-4o、Claude、DeepSeek、Qwen 跑字幕翻译的真实调试笔记,覆盖 prompt 工程、术语库注入、 hallucination 控制、模型微调与效果评估。

18 分钟阅读发布于 2026/06/28Smyx1ayang

LLM 翻译调试实战:从 Prompt 到模型微调

用 LLM 做字幕翻译是这两年字幕组工作流的最大变化。我跑了近一年,把所有踩过的坑、调试经验、效果对比整理成这篇笔记。

为什么用 LLM 做字幕翻译

传统机器翻译(Google Translate、DeepL)有几个硬伤:

  • 不懂上下文:每句话独立翻译,前后不连贯
  • 术语不统一:同一个词在不同句子里翻译成不同中文
  • 文化词处理生硬:直接照搬或直译,丢失文化语境
  • 风格单一:所有内容都是同一种语气

LLM 的优势在于能"读完整个上下文"再翻译,理论上能解决上述问题。但 LLM 也有自己的坑:hallucination(编造内容)、改写原意、风格漂移。所以 LLM 翻译的核心是控制而非自由。

模型横评

我用同一段 30 分钟日剧字幕(约 400 条)测过几个主流模型:

模型 BLEU 错译率 漏译率 风格分 成本/千条
GPT-4o 38.2 4.1% 1.2% 8.5/10 $0.30
GPT-4o-mini 32.5 7.8% 2.1% 7.0/10 $0.02
Claude 3.5 Sonnet 39.1 3.8% 1.5% 8.7/10 $0.40
Claude 3.5 Haiku 34.2 6.5% 1.8% 7.5/10 $0.04
DeepSeek-V3 36.8 5.2% 1.6% 8.2/10 $0.05
Qwen2.5-72B 35.5 6.1% 2.3% 7.8/10 $0.06(自部署)
DeepL 31.0 8.5% 3.2% 6.5/10 $0.20

几个观察:

  • Claude 3.5 Sonnet 在质量上略胜 GPT-4o,但成本高一倍
  • GPT-4o-mini 性价比最高,是日常字幕翻译的甜点位
  • DeepSeek-V3 是国产之光,成本极低,质量接近 GPT-4o
  • DeepL 已经被 LLM 全面碾压,唯一优势是稳定性(不会编造)

Prompt 工程

LLM 翻译质量 70% 取决于 prompt。我迭代了 20 多个版本,目前稳定用这个:

你是一名专业的字幕翻译员。下面是一段视频的字幕原文,请翻译成中文。

要求:
1. 保留原文意思,不增删内容,不改写句子结构
2. 每条字幕单独翻译,单条不超过 18 个中文字符
3. 保留语气词、感叹号、问号等情绪标记
4. 专有名词按术语表翻译(见下方)
5. 文化负载词保留原文,括号注释
6. 输出格式:每行一条译文,序号与原文对应

术语表:
- 先輩 → 前辈
- 後輩 → 后辈
- 先生 → 老师
- さん → 不译
- 様 → 大人

原文:
1. こんにちは、田中先輩。
2. 今日はいい天気ですね。
3. また明日お会いしましょう。

几个关键设计:

  • "不增删内容"防止 LLM 发挥创作欲
  • "单条不超过 18 字符"约束字幕长度
  • "保留语气词"防止风格书面化
  • "术语表"统一翻译一致性
  • "输出格式"约束输出结构

这套 prompt 把 GPT-4o-mini 的 BLEU 从 28 提到 32,错译率从 12% 降到 7.8%。

Hallucination 控制

LLM 偶尔会编造内容,比如把"今日はいい天気ですね"翻译成"今天天气真好,适合出去玩",多出了原文没有的"适合出去玩"。这是 LLM 翻译最致命的问题。

控制方法:

  1. Prompt 严格约束:明确写"不增删内容",发现违反时整个 batch 重跑
  2. 长度校验:译文长度如果超过原文 1.5 倍,标记可疑
  3. 置信度检查:让 LLM 同时输出 confidence score,低于 0.7 的标记人工复核
  4. 双模型对照:同时跑 GPT-4o-mini 和 DeepSeek-V3,译文差异大于 30% 的标记

实测这套机制能把 hallucination 率从 3% 降到 0.4%。

术语库注入

字幕组内部维护的术语表通常有几百条,全塞进 prompt 会超 token 限制。我的做法是动态注入:

def build_prompt(subtitles, terminology):
    # 从字幕里提取所有专有名词
    proper_nouns = extract_proper_nouns(subtitles)
    # 只注入相关的术语
    relevant_terms = {
        noun: terminology.get(noun, "")
        for noun in proper_nouns
        if noun in terminology
    }
    # 构造 prompt
    return f"""...
术语表:
{format_terms(relevant_terms)}
..."""

提取专有名词用 spaCy 的 NER 模型,准确率 90% 以上。这样 prompt 里只放十几个相关术语,token 消耗可控,准确率反而更高。

模型微调

通用 LLM 在特定题材上会有偏差。日漫翻译里大量出现的"古风台词""中二台词"通用 LLM 翻译得很别扭。这种情况下需要微调。

我做过一个 Qwen2.5-7B 的微调,用 5000 条人工翻译的日漫字幕做训练集,LoRA 微调,4 张 4090 跑 8 小时。效果:

  • 古风台词风格更地道("吾之剑"比"我的剑"更对味)
  • 中二台词保留了夸张感
  • 成本从 $0.06/千条降到几乎为零(自部署)

但微调也有代价:

  • 数据准备耗时,5000 条人工校对花了 3 周
  • 题材迁移性差,日漫微调的模型用在纪录片上反而退步
  • 维护成本高,每出新番都要重新评估

通用场景用 GPT-4o-mini,垂直场景用微调模型,这是目前的折中方案。

效果评估

LLM 翻译效果评估有两个维度:

  • 客观指标:BLEU、chrF、TER
  • 主观指标:母语者评分(5 分制)

客观指标用 sacrebleu 跑:

sacrebleu reference.txt -i hypothesis.txt -m bleu chrf ter

主观指标找 5 个母语者盲测打分,去掉最高最低分取平均。

实测发现客观指标和主观指标相关性不强。BLEU 高的译文不一定读着舒服,BLEU 低的反而可能更地道。所以评估时两个指标都要看,最终以主观指标为准。

实战工作流

我现在的完整工作流:

  1. yt-dlp 下载素材和原文自动字幕
  2. VideoCaptioner 跑 Whisper 转录(如果自动字幕质量差)
  3. Python 脚本批量调用 GPT-4o-mini 翻译
  4. 用 Aegisub 人工校对译文中可疑标记
  5. 导出 ASS 交付

一个 24 分钟日漫,自动翻译 + 人工校对大约 30 分钟。纯人工翻译需要 2 小时。效率提升 4 倍,质量持平或略优。

翻译理论札记

写到这里想插入一段翻译理论的思考。奈达的功能对等强调译文读者读到译文时的反应,应当与原文读者读到原文时的反应基本一致,这意味着翻译不是字面替换,而是要在目标语里重新构造等值效果。我们做字幕,观众在屏幕前只有几秒钟读完一行字,反应时间被严重压缩,所以功能对等在字幕里被推到了极端——可读性优先于忠实度。

纽马克的区分更实用:交际翻译关注译文效果,语义翻译关注原文意义。字幕绝大多数时候走交际翻译路线,但遇到关键术语、专有名词、文化负载词时又要切回语义翻译,避免观众被误导。这两条路线在字幕里不停切换,做久了会形成直觉。

韦努蒂的归化异化是另一条轴线。归化是让译文流畅得像目标语原创,异化是保留原文的陌生感。日漫字幕里大量保留"前辈""学园""王道"等词就是异化,因为这些词在中文语境里已经形成了稳定的亚文化共识,强行归化反而失味。但纪录片、欧美剧的台词又需要强归化,否则观众跳戏。题材决定策略,没有一招通吃的方案。

—— 这些理论看起来抽象,但实际做字幕时每天都在用,只是未必意识到。把直觉变成方法论,是新人到熟手的分水岭。