”反思式三步翻译法” 应用于字幕翻译的尝试

本文工具已打包为exe,下载解压后双击 app.exe 可用,具体使用方法和原理请继续阅读本文

吴恩达老师的「反思式三步翻译法」非常有效,它通过让模型自我审视翻译结果并提出改进建议,进一步提升翻译质量。然而,直接将该方法应用于 SRT 格式字幕翻译却存在一些挑战。

SRT 字幕格式的特殊要求

SRT 格式字幕有严格的格式要求:

  • 第一行: 行号数字
  • 第二行: 两个时间戳,由 --> 连接,格式为 小时:分钟:秒,3位毫秒
  • 第三行及以后: 字幕文本内容

字幕之间使用两个空行隔开。

示例:

lua 复制代码
1
00:00:01,950 --> 00:00:04,430
五老星系中发现了有几分子,

2
00:00:04,720 --> 00:00:06,780
我们离第三类接触还有多元。

3
00:00:07,260 --> 00:00:09,880
微博真是展开拍摄任务已经进来周年,

4
00:00:10,140 --> 00:00:12,920
最近也传过来许多过去难以拍摄到的照片。

SRT 翻译中的常见问题

在使用 AI 翻译 SRT 字幕时,可能会出现以下问题:

  • 格式错误:
    • 丢失行号或重复时间戳
    • 将时间戳中的英文符号翻译成中文符号
    • 将相邻两条字幕文本合并成一行,尤其是在上句和下句在语法上构成完整句子时
  • 翻译质量问题:
    • 即使使用严格的提示词限制,也经常会出现翻译错误。

常见错误示例:

  • 字幕文本合并导致空行
  • 格式混乱
  • 行号被翻译
  • 原始字幕和结果字幕数量不一致

像上面所述,当前后两条字幕在语法上属于一句时,很可能会被翻译为同一条,导致结果字幕条数缺少

而格式出现错误直接导致后续依赖srt的流程无法进行,不同模型出现的错误和出错概率各不相同,相对来说,智能程度越高的模型,越可能返回合法的符合要求的内容,而本地部署的小规模模型几乎压根不可用。

不过鉴于三步反思法对翻译质量的提升,还是尽量尝试了下。最终选择使用 gemini-1.5-flash 小小尝试一下,主要因为它的智能程度足够、而且免费,除了限制频繁,其他几乎无限制。

撰写提示词思路

按照吴恩达的三步反思工作流,撰写提示词

  • 第一步要求AI按照字面意思直译
  • 第二步要求根据直译结果评估并给出优化建议
  • 第三步根据优化建议重新进行意译。

所不同的是加强要求返回的内容务必是合法的SRT格式,虽然它未必百分百遵从。

搭建简单api

三步反思模式一个问题是额外消耗多得多的token,提示词变长,输出结果变长,另外因Gemini的频率限制,超频会返回429报错,需要在每次请求之后暂停一段时间。

采用 flask 搭建后端api,前台使用 bootstrap5 简单做个单页,总体界面如下

显然国内想使用 Gemini 必须有梯子

  • 同时翻译行:是指一次翻译请求中的字幕行数,如果太大可能超出token限制,导致出错,太小没有意义,建议30-100内,默认50。
  • 翻译后暂停秒:防止请求过于频繁导致返回 429 报错,将在每次请求返回后暂停10s,再发起下次请求

返回结果示例

rust 复制代码
<step1_initial_translation>
1
00:00:01,950 --> 00:00:04,430
Several molecules have been discovered in the five-star system,

2
00:00:04,720 --> 00:00:06,780
We are still multiple universes away from third-type contact.

3
00:00:07,260 --> 00:00:09,880
Weibo has been carrying out filming missions for years now,

4
00:00:10,140 --> 00:00:12,920
Many previously difficult-to-capture photos have been transmitted recently.

5
00:00:13,440 --> 00:00:17,500
In early June, astronomers published this photo in Nature,

6
00:00:18,040 --> 00:00:19,180
Outside the blue core,

7
00:00:19,360 --> 00:00:21,380
There\'s also this circle of orange light,

8
00:00:21,900 --> 00:00:23,740
This is a new drama-scale sweet donut,

9
00:00:24,380 --> 00:00:25,640
This is a portal.

10
00:00:26,280 --> 00:00:28,100
This is the generation ring of an alien civilization,

</step1_initial_translation>

<step2_reflection>
* **Line 1:** "Five-star system" is likely a mistranslation.  It probably refers to a five-member committee or group, not a star system. Clarify the context.
* **Line 2:** "Multiple universes" seems like an over-exaggeration.  Rephrase for clarity and accuracy.
* **Line 3:** "Weibo" should be explained as a Chinese social media platform.  "Filming missions" is unclear.  Does it mean "posting videos/images"?
* **Line 8:** "Drama-scale sweet donut" is a nonsensical literal translation. Figure out the intended meaning.
* **Line 9:** "Portal" seems out of context.  Verify the intended meaning.
* **Line 10:** "Generation ring" is likely a mistranslation.  Clarify the context.
* **Line 11:** "Organic polycyclic aromatic hydrocarbons" is overly technical for a general audience. Simplify if possible.
* **Line 12 and 14:** Use the correct formatting for the galaxy\'s name: SPT0418-47.
* **Line 15:** "It hasn\'t been shortened" is awkward. Remove or rephrase.
* **Line 28:**  The name of the organization and the resource should be translated more naturally and accurately.  Consider breaking this long line into two for better readability.
* **Line 29:**  "Cute plush dolls" may sound childish. Consider rephrasing as "animated characters" or similar.
* **Line 35:** "James Webb Space Telescope" should be used consistently throughout. Shortening to "Webb Telescope" after the first mention is acceptable.
* **Line 44:** "SPD048" is likely a typo.  It should be SPT0418-47 to be consistent.
* **Line 45-46:**  "Standard beautiful photo" is redundant.  Simplify to "beautiful photo".
* **Line 48:** "Grovitational Lenshin" is a typo. Correct to "Gravitational Lensing".
* **Line 50:** The sentence is incomplete. Finish the thought.

</step2_reflection>

<step3_refined_translation>
1
00:00:01,950 --> 00:00:04,430
Several molecules have been discovered in the five-member group\'s area of focus.

2
00:00:04,720 --> 00:00:06,780
We are still far from making contact with extraterrestrial life.

3
00:00:07,260 --> 00:00:09,880
The James Webb Space Telescope has been capturing images for a year now,

4
00:00:10,140 --> 00:00:12,920
and has recently transmitted many previously unseen photos.

5
00:00:13,440 --> 00:00:17,500
In early June, astronomers published this image in Nature.

6
00:00:18,040 --> 00:00:19,180
Outside the blue core,

7
00:00:19,360 --> 00:00:21,380
there\'s a ring of orange light.

8
00:00:21,900 --> 00:00:23,740
This is a large, ring-shaped structure.

9
00:00:24,380 --> 00:00:25,640
This is being investigated.

10
00:00:26,280 --> 00:00:28,100
This is thought to be a sign of an early galaxy.

</step3_refined_translation>

从结果中提取出<step3_refined_translation></step3_refined_translation>标签内文本,即是翻译结果。

简单打了一个包,感兴趣可下载本地尝试

直接下载,解压后双击app.exe即可自动在浏览器中打开上述UI界面,输入在Gemini申请的Key、填写代理地址、选择要翻译的srt字幕文件、选择要翻译到的目标语言,试试结果。

Q1: 反思工作流与传统机器翻译有何不同?

A1: 反思工作流引入了自我评估和优化机制,模拟人类译者的思考过程,能够产生更加精准和自然的翻译结果。

Q2: 使用反思工作流需要多长时间?

A2: 虽然反思工作流需要多次AI处理,但通常只比传统方法多花费10--20秒,考虑到翻译质量的提升,这点时间投资是值得的。

Q3: 反思工作流能保证字幕翻译结果一定是合法srt吗

A3: 不能,仍可能出现空行、同原始字幕数不一致的问题,例如前后两条字幕,后边一条仅有3-5个文字,而且语法上属于上面一句的连续,那么翻译结果很可能会合并为一条

参考资料

github.com/andrewyng/t...

baoyu.io/blog/prompt...

相关推荐
customer081 小时前
【开源免费】基于SpringBoot+Vue.JS美发门店管理系统(JAVA毕业设计)
java·vue.js·spring boot·后端·spring cloud·kafka·开源
梓羽玩Python1 小时前
5.3K Star 烦恼全丢掉!GlazeWM:让Windows下的窗口管理更高效的秘密武器!
开源·github
全域观察1 小时前
出海攻略,如何一键保存Facebook视频素材
人工智能·新媒体运营·aigc·内容运营·程序员创富
是店小二呀2 小时前
丹摩征文活动|Llama 3.1 开源模型快速部署:从零到上线
aigc·丹摩智算
shiming88792 小时前
GitHub Org如何运营
github
亥时科技3 小时前
政企学习考试系统(源码+文档+部署+讲解)
java·数据库·开源·源代码管理
蚝油菜花4 小时前
今日 AI 简报|百度推出检索增强的文生图技术、开源表格处理大模型、蛋白质结构预测、3D 生成、短视频生成、PDF 翻译工具
人工智能·开源·资讯
浪遏4 小时前
豆包姐姐成功引起了我对LangChain的注意🤡!
aigc
友大冰4 小时前
前端开发中的CSS框架:昔日辉煌与新兴潮流
前端·css·算法·开源·tensorflow
编程乐趣4 小时前
推荐一个Star超过2K的.Net轻量级的CMS开源项目
开源·.net