Lua脚本在Aegisub中的使用
本文起源于我对双语字幕的需求和深水区老师给我提供的思路,同时将作为脚本备份仓库使用,长期更新
24.7.14更:更个damn,发现了whisperX,好用,看了下论文感觉VAD这东西还挺好玩儿的,要是真能去读声学的研可能以后还得经常用,也算是有收获了
我的需求
- 我使用中文+换行符+英文的方式做好字幕后,自动化修改中英文字幕的格式
- 根据波形粗略的进行自动化打轴
绝赞更新中
使用方法
- 将Lua脚本拷贝到任意文本编辑器中,保存为.lua文件
- 打开aegisub源目录,找到
\automation\autoload
将脚本复制进去,或者在aegisub的自动化-自动化脚本管理器-载入
中载入脚本 - 在aegisub的
自动化
中找到脚本,点击使用
最佳实践
双语字幕格式化
script_name = "双语字幕格式化"
script_description = "在换行符后添加特定格式以区分中英文字幕"
script_author = "punkginger"
script_version = "1.0"
--[[
-- 定义常量
CHINESE_FONT = "\\fnDengXian"
CHINESE_COLOR = "\\c&FFFFFF&"
CHINESE_SIZE = "\\fs65"
CHINESE_BOLD = "\\b1"
CHINESE_OUTLINE = "\\bord4" -- 中文边框宽度
CHINESE_SHADOW = "\\shad3" -- 中文阴影偏移量
]]--
ENGLISH_FONT = "\\fnTimes New Roman"
ENGLISH_COLOR = "\\c&HFFFFFF&"
ENGLISH_SIZE = "\\fs55"
ENGLISH_BOLD = "\\b1"
ENGLISH_OUTLINE = "\\bord3"
ENGLISH_SHADOW = "\\shad2"
function format_bilingual_subtitles(subtitles, selected_lines, active_line)
--local chinese_format = "{" .. CHINESE_FONT .. CHINESE_COLOR .. CHINESE_SIZE .. CHINESE_OUTLINE .. CHINESE_SHADOW .. "}"
local english_format = "{" .. ENGLISH_FONT .. ENGLISH_COLOR .. ENGLISH_SIZE .. ENGLISH_OUTLINE .. ENGLISH_SHADOW .. "}"
for _, i in ipairs(selected_lines) do
local line = subtitles[i]
local text = line.text
-- 替换每个换行符
local formatted_text = text:gsub("\\N", "\\N" .. english_format)
-- 在开头添加中文格式
-- formatted_text = chinese_format .. formatted_text
line.text = formatted_text
subtitles[i] = line
end
aegisub.set_undo_point(script_name)
end
aegisub.register_macro(script_name, script_description, format_bilingual_subtitles)
实现了查找每一个换行符\N
(顺便吐槽下小写n不能换行)并格式化之后的英文
一开始写成了中英文同时在脚本中修改后来意识到这有点蠢,但是我保留了下来,方便后面加功能
使用了该脚本后,我的工作流变成了
- 打轴后编写“中文+换行符+英文”的字幕
- 使用自带的字母编辑器修改中文字幕的样式,并修改整体字幕的边距
- 全选字幕后运行脚本,自动化更改英文样式