chs.esp.ass
日期:2021
本篇记叙:外乡人如何借助道具,尝试翻译一门小语种的电影生肉文本,并制作字幕文件。
本次作业介绍了涉及的软件、插件、命令行等工具。内容主要有:安装,设置、操作等。且仅出于个人学习目的,其中所处理的字幕、影片截图没有授权,只在必要时,作为著作进行引用。
.srt#
一些影视DVD的光盘文件,有一定几率掉落母语版字幕,它通常有正确的时间轴。2014年的西班牙剧情、悬疑题材电影《沼泽地》,它的西语版.srt(SubRip Text)文件,通篇带有一些电影脚本内容——包含背景声、音效、人物演出等注释。这些通常是之后会剔除的部分,例如在它的英译版字幕里。
留下这些内容…这里挪用影片中的一个角色事件「无证狩猎」——先去拿到几个关键道具:电子词典浏览器GoldenDict、网页浏览器插件沙拉查词、Python包autosub、Rust包alass-cli,便开始寻迹和偷猎。
翻译#
主要步骤:
- 播放媒体文件,逐句对照字幕文件
- 使用在线翻译服务reverso.net快速输出整句意思,以及片段意思
- 使用GoldenDict查找单词的详义。这里用的是西班牙语-英语词典,所以还需使用沙拉查词作英译中介
- 基于母语的读写能力,从译意组织译文
Scoop#
如果网络条件较好,可参考Scoop官网,先安装这个软件包管理器。
Win
+Q
→ Windows PowerShell → 右键 → 以管理员身份运行Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')
- (可选)安装一个下载工具,
scoop install aria2
使用时如遇报错,可复制报错的信息,去此问题板块自查。若需卸载,scoop uninstall scoop
。
GoldenDict#
「便携版」 2022-09
通过Scoop安装的该版本,在菜单项「编辑 → 词典」处,仅有固定的词典存放位置。可使用linkshellextension,选择词典文件所在的文件夹,创建目录链接到该位置,然后「重新扫描」。
scoop install goldendict
,或者到GoldenDict官网下载32-bit Windows installer这个安装包- 下载词典。这里在某个论坛新注册账号后,从该帖里的链接,下载了Oxford Spanish English(牛津西语-英语词典)这个文件夹——其中的.mdx(Mdict词典文件)就是所需的
- 导入词典。
Win
+Q
→ Goldendict → 编辑 → 词典 → 词典来源 → 添加 → 选择文件夹 → 应用 → 等待扫描完成 - 回到软件的主窗口,便可在导航栏搜索词汇
「Next Generation」 2023-07
也可以试试这个版本,GoldenDict-ng。
GoldenDict默认会启用所有词典。当你有多本词典时,就可以给词典编组,以便筛选语种。
- 编辑 → 词典 → 词典来源 → 添加 → 选择词典文件夹们所在的文件夹 → 递归扫描(On)
- 编辑 → 词典 → 群组 → 添加群组
- 将左栏的可用词典,拖进右栏的群组里 → 应用
- 回到主窗口,下拉搜索框的左段,便可选择群组
SalaDict#
参考官网的下载页,根据使用的浏览器进行安装。
按需设置浏览器外划词,这里以Chrome为例:
- Chrome → 设置 → 高级 → 系统 → 关闭Google Chrome后继续运行后台应用(On)
- 在浏览器内划词,唤出查词窗口 → 打开设置
- 基本选项 → 后台保持运行(On)
- 权限管理 → 读取剪切板(On),写入剪切板(On)
- 隐私设置 → 设置快捷键 → 沙拉查词 在独立窗口中搜索剪贴板内容 →
Alt
+Z
,全局(这里的键位可按需设置) - 在浏览器外划词,
Ctrl
+C
,再Alt
+Z
,便可以唤出独立查词窗口 - 如要关闭该窗口——可用Windows快捷键
Alt
+Esc
切换到上一次操作的窗口
校对(上)#
另外的主要问题是校对。如果有已校版本,会省去不少麻烦(也就没这个章节)。在这个.srt文件的末尾,可看到一条注释:
这两行分别是:上传者的ID,来源或分发的地址。找过去,在该帖下,上传者提到:
- 使用了Subtitle Edit对.sup(Subtitle Presentation)文件进行OCR(光学字符识别),制作了.srt
- 将一些安达卢西亚(Andaluz)方言转写成了官方西班牙语卡斯蒂利亚(Castellano)语,以便于理解
- 删除了一些音画不同步的提示音乐的字行
这也解释了校对途中为什么较频繁遇到这些错误:
类型 | 示例 | 行号 | 处理 |
---|---|---|---|
错别字 | Citroén → Citroen | 27,149 | 查找全部并替换 |
听写错误 | 622 | 用STT(Speech-to-Text)工具检查 | |
听写错误 | ah, si. → ah, si? | 934 | 参考电影脚本的PDF文件 |
文本缺失 | 646-647 | 参考英语版字幕 | |
语法错误 | 忽略 |
其中与STT有关的步骤是:
MPV和OBS#
scoop install mpv
,或者下载安装包。
scoop install obs-studio
,或者下载安装包。
Win
+Q
→ MPV → 拖入媒体文件- 在MPV播放时,按
L
设置A点,再按L
设置B点,并开始循环。(按第三下L
则清除A-B循环) Win
+Q
→ OBS → 来源 →加号
→ 显示器采集。(或者选择音频输入采集)- 控件 → 开始录制。(录制时可循环播放多次)
- 停止录制。会得到录像文件,以日期和时间命名
用AMD显卡的用户(曾经是)可参考这个视频,设置OBS录制参数:
- 输出
- 录像
- 录像格式 → mp4
- 编码器 → H264/AVC
- 质量预设 → 质量
- 速率控制方法 → 恒定QP(CQP)
- I帧QP/P帧QP → 15~17
- 音频
- 音频比特率 → 320
- 录像
- 视频
- 常用FPS值 → 48
NVIDIA显卡上的参数,应该也可以参考这个。
CMD和Cmder#
命令提示符(Command Prompt),也就是可执行文件CMD.exe,是Windows系统默认的命令行解释器(Command-line Interpreter)。后者所解释的语境,通常是给定的操作系统或编程语言中的一种——这一类连接用户与系统内核、解释和执行指令、返回结果的,通常称为shell(壳层或壳)。
Cmder,自称是Windows上最好的shell,由提供命令行界面(CLI,Command-Line Interface)的Clink和提供图形用户界面(GUI,Graphical User Interface)的模拟终端ConEmu组合而成。
因为Cmder需要进行配置,这里就以应急物品CMD为例。
autosub#
先安装Python语言包。去Python官网下载稳定版39版本的安装包,安装时一直选「下一步」即可。或者:
Win
+Q
→ 命令提示符scoop bucket add versions
,参考ScoopInstaller/Versionsscoop install python39
安装后可测试命令,pip3
。如果提示「…不是内部或外部命令,也不是可运行的程序或批处理文件」,可尝试刷新系统环境refreshenv
。或者重启电脑。重启后:
- 根据此仓库的自述,安装依赖项,
scoop install ffmpeg
pip3 install autosub3
进行语音识别前,可能需要改变CMD工作的目录,切换到之前的录像文件所在的文件夹:
- 先切换所在的硬盘,
盘符:
。例如切换到E盘,即E:
- 再切换所在的文件夹,
cd 文件夹
。例如切换到文件夹A的文件夹B里,即cd E:/A/B
。文件夹名不要有空格
识别语音到字幕文件,autosub -S 源语言 -D 目标语言 -o output.srt 媒体文件
。此处的语言代码可在ISO 639-1(国际标准化组织639号标准第1部分)中查找到。
注意,在命令中,被提到的文件,默认已经在系统环境(在安装时)设置好了,或者在当前文件夹下。上面这个命令,也是指盘符:/某个文件夹/autosub 其他参数 -o 当前文件夹/output.srt
连接(concatenate)一下文件,cat output.srt
。
时间轴#
alass-cli#
参考此仓库自述,可以去到它的发行栏目,查找构建好的可执行文件。下载后,可在CMD中使用。
以下涉及另一种方法,需要Rust和它的包管理器Cargo。先安装Rust语言包。可能会提示需要C++ build tools
:
scoop install vcredist2019
。或者到此页面下载Visual Studio 2019生成工具并安装Win
+Q
→ Visual Studio Installer → 已安装 → Visual Studio 2019生成工具 → 修改- 工作负荷 → 桌面应用和移动应用 → 使用C++的桌面开发:
- MSVC v142 - VS2019 C++… (On)
- Windows 10 SDK… (On)(参考该问答贴)
- 重启电脑
scoop install rustup
,或者从此处下载rustup-init.exe并运行。
如遇到网络问题,提示「could not download file from…」,可参考此文档,执行:
set RUSTUP_DIST_SERVER=https://mirrors.sjtug.sjtu.edu.cn/rust-static
set RUSTUP_UPDATE_ROOT=https://mirrors.sjtug.sjtu.edu.cn/rust-static/rustup
- 运行rustup-init.exe,一路默认即可
若需卸载,rustup self uninstall
。
然后,cargo install alass-cli
。
这里如果提示与gcc
相关的错误,可以先scoop install mingw-winlibs
,或去到官网winlibs下载和安装。有可能能够解决。
进行自动较轴,alass-cli 媒体文件 源字幕 目标字幕
在仓库所有者的学士论文里,他说明该工具的工作原理是基于语音活动检测(Voice-Activity-Detectio)。这也提示了有更好书写规范的字幕文件所要去考虑的,以利于加工、后期作业和自动化。
校对(下)#
来到了一般称作「二校」「三校」的阶段,差不多就是多次检查。这里列举部分段落:
「feria」 2023-04
应该可对应英语单词fair。词典中的解释是:州、县、乡村的集市或活动,会有商品、动物和娱乐、游戏、比赛。可译成「集会」、「市场」。
00:03:06处,文字注释feria译成「交游会」。来自一种早年在小地方举办的,供居民交易、游玩的季节性集会,当地村民乡人对此的称呼「交流会」,可能类似大都会的嘉年华。
00:05:42至00:06:62,两位主人翁在玩打气枪。这里看机器翻译和英语字幕,不能去确定胡安说「现在不是招惹军人的时候」和佩德罗说到「那个法西斯份子」,都说哪件事情,和什么人。
此前,他们在旅店落脚时,在房间墙上见到了一把纳粹十字架——这么一来,佩德罗有可能因此「给报社寄稿」,举报了可能已退役的男掌柜——但事实上,他应该不会在初到小镇的头晚、晚饭与打枪的间隙,找到邮局去寄信。
此处确实是在交代佩德罗的人物背景,见该篇报告4.1.处。
00:09:16处,胡安问「这是什么(酒)」,罗西奥回答「cangrejos de rio(河)」。这个词从电子辞典或搜索引擎检索出来是「小龙虾」「淡水鳌虾」,el cangrejo通常是「螃蟹」。影片01:35:56处,再次提到了fábrica(工厂)de cangrejos,而在01:07:57附近,画面中出现了一只龙虾。
00:16:08处,涂鸦的人名Franco,在大部分在线字典和翻译器里对应「佛朗哥」。这里参考卡斯蒂利亚发音,与Francis/Frances[弗朗西斯]、Francine[弗朗西尼]、Francisco[弗朗西斯科]、Francesca[弗兰西斯卡]等人名音译保持一致,把Franco对应「弗朗哥」。
.ass#
字幕的主体「对白」,和画中文字、音响、演出等「注释」,它们的时间轴有重叠,就需要制成.ass(Advanced SubStation Alpha)等格式来保存。虽然在MPV里,可以同时载入多个.srt字幕。
之后涉及到文本编辑器Sublime Text、字幕编辑器Subtitle Edit、特效字幕编辑器Aegisub 里的使用,这里就不赘述具体操作。
thumbnail.jpg#
在经过短或长的季节后,你就会得到最终的.ass文件。
额外的,用媒体缩略图工具mt或mtn来生成(剥皮)一张4x4格的图:
- 在
mt
的发行栏,下载相关的Windows发行包,一般来说是mt-版本号-x86_64-w64-mingw32.exe.tar.gz
,解压后运行.exe
mt.exe -n 16 -c 4 --disable-timestamps --header=false 媒体文件
或者:
scoop install mtn
mtn -c 4 -r 4 -g 3 -k 000000 -w 1920 -i -t -D 4 -P -o _mtn.png 媒体文件
流程事件一览#
特殊双语字幕の获得#
- 使用机器辅助翻译,但保留机器风格,(尽量)不做润色或修饰
- 对拟声等同一类的句型采用全文一致的处理。例如出现复读时,字幕只写两组
- 在标点处拆分句子,除非时间轴重叠或很靠近
- 拆分对话,除非时间轴重叠或很靠近
- 时间轴的宽度对齐音频,不在前后延长
- 译文句子的语序对齐原文、音轨
机翻双语字幕の获得#
- 获得字幕源:
- 从Open Subtitles等大型字幕数据库搜索和下载字幕
- 如果有文本字幕如.srt,在FFmpeg Batch AV Converter打开视频源,选择流多路复用功能,保存字幕。使用
Subtitle Edit
打开后,另存为ass
字幕 - 如果有图形字幕如.sub和.idx,在Subtitle Edit打开视频源,进行OCR扫描。保存字幕,选择
ass
格式 - 如果是没有字幕轨、有英语音轨的情况,可以尝试用whisper-ctranslate2来转写
- 预处理:
- 用Sublime Text打开.ass,批量选择和替换换行符
\N
为空格
- 用Sublime Text打开.ass,批量选择和替换换行符
- 机翻:
- 用Tern翻译字幕文件为双语字幕
- 编辑:
- 用Sublime Text打开.ass,批量选择、剪切中文文本
- 打开一个新窗口,复制文本,按自己喜好编辑中文字幕的风格。编辑完之后,批量选择每行,剪切、粘贴回双语字幕文件
- 找到注释的所在的行,移到最后
其他事件#
date | translation tools | staff | source |
---|---|---|---|
2023.05 | Tern | 机翻、后期 | 千禧年三部曲:1、2、3 |
2022.01 | 后期 | 平家物语 | |
2021.09 | DeepL | 机翻、粗校 | Rosy |
2021.09 | 沙拉查词、GoldenDict | 校对 | The Green Knight |
2021.08 | Reverso、GoldenDict、沙拉查词 | 翻译、校对、后期 | La isla minima |
2019.12 | 校对、后期 | Lolita(1997) | |
2019.01 | 谷歌翻译 | 翻译 | 词条Sibyl |
2018.03 | 谷歌翻译 | 翻译 | Das Herz ist ein dunkler Wald |
其他道具一览#
出现过的道具、物品。
- 翻译记忆工具Omegat:并没有使用到。据介绍,它建立记忆库来辅助人工翻译,适合于「大型文档、专业术语、衍生案、修订、更新、多语言、共同作业」等。其记忆库文件应该还可兼容其他的软件,比如本地化工具Poedit等。
- 截图工具Snipaste PRO:截取软件应用的窗口。部分截图在写文字步骤时作参考,选一张图用于展示工具的主界面。
- 图片压缩工具pngquant和guetzli:用来代替需要调用tinypng的API(Application Programming Interface),也就是需要联网的tinifier。
- 文本编辑器Obsidian:以轻量级标记语言.md(Markdown)文本格式编辑了这篇文,并且用内置的功能,渲染和导出了.pdf(Portable Document Format)文件,作为并未使用的额外的附件。
- PDF浏览器xpdfreader:用来检视.pdf。
- Golang包:用来生成自信任的为PCCS(Public-Key Cryptography Standards)#12格式、扩展名为.p12或.pfx的证书文件证书。
- Java应用BatchPDFSign:使用.pfx给.pdf写入自签名数字ID,进行数字签名(Digital Signature)。
- Golang包markpdf:给.pdf的每页添加水印。这里用来铺一层很浅的装饰底纹。
- Rust包lychee: 排查文本里的链接的情况。可使用它的流程脚本lychee-broken-link-checker。