Lua脚本在Aegisub中的使用

default · 07-10 · 155 人浏览

Lua脚本在Aegisub中的使用

本文起源于我对双语字幕的需求和深水区老师给我提供的思路,同时将作为脚本备份仓库使用,长期更新

24.7.14更:更个damn,发现了whisperX,好用,看了下论文感觉VAD这东西还挺好玩儿的,要是真能去读声学的研可能以后还得经常用,也算是有收获了

我的需求

  1. 我使用中文+换行符+英文的方式做好字幕后,自动化修改中英文字幕的格式
  2. 根据波形粗略的进行自动化打轴

绝赞更新中

使用方法

  1. 将Lua脚本拷贝到任意文本编辑器中,保存为.lua文件
  2. 打开aegisub源目录,找到\automation\autoload将脚本复制进去,或者在aegisub的自动化-自动化脚本管理器-载入中载入脚本
  3. 在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不能换行)并格式化之后的英文

一开始写成了中英文同时在脚本中修改后来意识到这有点蠢,但是我保留了下来,方便后面加功能

使用了该脚本后,我的工作流变成了

  1. 打轴后编写“中文+换行符+英文”的字幕
  2. 使用自带的字母编辑器修改中文字幕的样式,并修改整体字幕的边距
  3. 全选字幕后运行脚本,自动化更改英文样式
Lua
Theme Jasmine by Kent Liao