我想翻译一个.srt
文件,然后将结果与原始文件合并,这样两个文本都会出现在生成的.srt
文件中,原始文本在顶部,翻译文本在底部。如果我可以修改字体大小,选择要显示的内容,并在没有互联网访问的情况下在我的计算机(Ubuntu 20.04)上执行所有操作,那就更好了。有人找到解决方案了吗?
到目前为止,我尝试了很多方法,但这两个是最有希望的。第三个方法很美好,我想象有一天它会成功。
srtssa/转换合并
我找到了听起来很完美的https://forum.language-learners.org/viewtopic.php?t=13897#p162942。我安装并运行https://gist.github.com/bathtime/6ec36e47bb4a104bd648dc1abcaaccc7(更新于2021.5.9;似乎是https://gitlab.com/bedtime_/srtssa/-/tree/master,更新于 2020.7.6)。它创建了一个mynewfile.txt.0813115519.tmp
文件并在终端中打开它或原始.srt
文件(两者的内容相同,所以我看不出来)。经过十多分钟的等待,我取消了操作,因为它似乎卡住了。我运行的代码是(来自上面的一个链接):
[code]./srtssa.sh -t en --alt -i myfile.srt -o mynewfile.srt[/code]
不幸的是,我不知道上面代码的-t
或是什么意思。--alt
然后我尝试了可能是上述操作的前奏,https://gist.github.com/bathtime/8ae8303e870b2909c03f3b9332a4dd47(2020.4.7 更新)。失败并显示以下消息:
./transmerge.sh: 25: [: en: unexpected operator
./transmerge.sh: 26: [: unexpected operator
./transmerge.sh: 31: [: utf-8: unexpected operator
./transmerge.sh: 98: Syntax error: Bad for loop variable[/code]
我运行的代码是:./transmerge.sh fr en en sample.srt
。从上面的最后一个链接来看,它应该告诉程序源语言是法语,目标语言是英语,并且英语应该显示在顶部,法语显示在底部。
字幕编辑器
我尝试了以下方法,但一直卡在解压 tar 文件上。以下https://github.com/kitone/subtitleeditor我试过:
./autogen.sh
make
sudo make install
...但该命令执行后仍然出现以下错误make
:
make: *** No targets specified and no makefile found. Stop.
我用了https://wiki.asterisk.org/wiki/display/AST/Untarring+the+Source来帮助我解压文件,但是我对通过这种方式安装东西还不熟悉,所以可能是我把某些东西搞砸了。
Apertium+Gaupol
https://wiki.apertium.org/wiki/Translating_subtitles#Gaupol_extension看起来很有希望,但 Gaupol 社区表示该扩展已经过时,并且“事后看来,Gaupol 扩展是个坏主意”。太糟糕了,因为它似乎是一个很好的实用程序。
答案1
明白了!你需要 Aegisub,https://ubuntuhandbook.org/index.php/2018/08/how-to-install-aegisub-subtitle-editor-in-ubuntu-18-04/:
sudo add-apt-repository ppa:alex-p/aegisub
sudo apt-get install aegisub
打开第一个字幕文件并通过Style Editor
更新Alignment
将8
其居中:https://www.youtube.com/watch?v=gopfzv6tZYA&t=63s。通过 保存这些样式很有用Subtitle > Style Manager
。第二个字幕文件可能已经设置为默认的2
,位于下方中央:
然后简单地Ctrl+A
将Ctrl+C
第一个文件中的字幕复制Ctrl+V
到第二个文件中(位于https://forum.videohelp.com/threads/392423-Merge-Two-ass-Files-in-Aegisub#post2544365)。无论在哪里,程序都会在保存时自动按时间顺序排列它们。然后Ctrl+S
提示将文件保存在哪里。使用扩展名保存它,.ass
因为.srt
文件会将所有内容堆放在底部,而不保存字体大小,渲染左侧而不是右侧:
然后,您可以调整字体样式,使其稍微变灰或稍后出现(Ctrl+A
例如Timing > Shift Times…
,这对于语言学习很有用)。
这适用于 VLC,但不适用于 Ubuntu 20.04 中的库存视频播放器(我认为它不支持.ass
文件)。我尝试使用 HandBrake 将字幕硬编码并刻录到视频文件中(https://www.youtube.com/watch?v=ZjX5v5Z4jQA&t=146s),但是没有起作用。我折腾了好一阵子,但最终还是没能找出原因。
.srt
关于/ .ssa
/.ass
文件的注释
.srt
' 似乎是最基本的,并且只能将一组字幕直接叠加在一秒钟上。一切都是非此即彼。您可以手动添加{\an8}
到行的开头,然后它们都会移动到视频的顶部,但仍然会直接叠加在另一个之上。
.ssa
是升级版,而.ass
是最新修订版:https://en.wikipedia.org/wiki/SubStation_Alpha. 它们允许不同的字体大小、颜色、定位、字幕流分割等。
结论
或者如何转录、翻译和合并字幕以实现多语言输出:
.srt
使用 pyTranscriber 从视频文件转录文件:如何从 GitHub 在 Ubuntu 20.04 上安装 pyTranscriber?(可能需要一个.mp4
;.mkv
无论如何都不起作用)- 在线翻译文件(我使用https://www.syedgakbar.com/projects/dst但https://www.subtitlecat.com看起来也不错)
- 按照上述方法使用 Aegisub 将生成的
.srt
/.ass
文件合并为最终文件.ass file
。将其命名为与视频文件相同的名称(例如:)mymovie.mp4
mymovie.ass
,然后将两者放在同一个文件夹中,它就会自动加载。
我希望我可以直接在我的机器上翻译它(步骤 2),然后将其硬编码到实际文件中.mp4
,但我相信这些也会随着时间的推移而实现。更好的转录和翻译也将实现,但我们肯定早已超越了“足够好”的领域。