在数字化内容出海的浪潮下,处理双语视频字幕成了很多技术人和创作者的日常。在此之前,我通常使用一套处理中文文本的脚本来做字幕排版。但当业务线扩展,需要大批量处理纯英文长文本(如 40-80 分钟的长篇叙事视频)时,原有的中文逻辑直接“水土不服”了。

英文文本有着截然不同的排版规则:不仅要考虑单词不能被生硬截断,还要根据逗号、句号等标点符号进行优雅的逻辑断句。今天,分享一段我最近改造并真正在生产环境中使用的 PowerShell 自动化排版脚本。

一、核心痛点:为什么不用现成的软件?

市面上确实有很多字幕软件,但面对长达几万字的原始英文文案时,大部分软件的“自动换行”都极其僵硬,往往会在一个长单词的中间直接劈开,或者忽略了语意停顿(比如在一个从句的逗号前换行),导致最终呈现的视觉效果非常糟糕,严重影响观看体验。

我们需要的是一个能**“像人类一样理解标点符号”**的断句工具。

二、PowerShell 脚本重构思路

原始的中文脚本可能只需要按照固定字数(比如每行 20 个汉字)进行切分。但对于英文,我们的逻辑必须升级为:

  1. 优先级断句:优先识别 ., ?, ! 结尾的完整句子并强制换行。
  2. 次级断句:识别 ,(逗号)等从句停顿,如果当前行字符数超过某个阈值,则在逗号后换行。
  3. 按词断行 (Word-wrapping):如果一句话极长且没有标点,必须以“空格”为界限进行换行,绝对不能切碎单词。

三、核心代码实战

以下是经过修改和优化的 PowerShell 核心逻辑片段。这段代码能够精准读取原始文本,处理英文标点,并输出符合要求的标准化字幕格式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# 定义输入输出路径
$inputFile = "C:\SubtitleProcess\raw_english_script.txt"
$outputFile = "C:\SubtitleProcess\formatted_subtitles.txt"

# 读取文案,确保编码正确
$text = Get-Content -Path $inputFile -Encoding UTF8

# 初始化变量
$formattedText = ""
$lineLengthLimit = 45 # 设定每行最长字符数(适合视频画面比例)

foreach ($line in $text) {
# 1. 优先处理句末标点换行 (利用正则表达式匹配句号/问号/感叹号后跟空格的情况)
$line = $line -replace '([.?!])\s+', "`$1`n"

# 将长句按行分割准备进行次级处理
$splitLines = $line -split "`n"

foreach ($subLine in $splitLines) {
$words = $subLine -split ' '
$currentLine = ""

foreach ($word in $words) {
# 3. 按词累加并判断是否超过长度限制
if (($currentLine.Length + $word.Length + 1) -le $lineLengthLimit) {
if ($currentLine -eq "") {
$currentLine = $word
} else {
$currentLine += " " + $word
}
} else {
# 超过限制,强制换行,并将当前单词放入新行
$formattedText += $currentLine + "`n"
$currentLine = $word
}

# 2. 如果单词本身带有逗号停顿,并且当前行已经比较长了,提前换行
if ($word -match ',$' -and $currentLine.Length -gt 25) {
$formattedText += $currentLine + "`n"
$currentLine = ""
}
}
if ($currentLine -ne "") {
$formattedText += $currentLine + "`n"
}
}
}

# 输出处理后的文本(注:如果需要制作中英双语,中文部分建议统一设定输出为繁体字,以提升海外视觉质感)
$formattedText | Out-File -FilePath $outputFile -Encoding UTF8

Write-Host "✅ 英文字幕智能断句与排版已完成!" -ForegroundColor Green

总结

对于技术人员来说,面对业务逻辑的变化(从中文文本处理转向英文逻辑),迅速用代码实现工具的迭代,是一种刻在骨子里的本能。借助这几十行 PowerShell 脚本,曾经需要人工校对几个小时的字幕排版工作,现在只需不到一秒钟即可完美生成。