#字幕 #自动 #命令行工具 #对齐 #工具 #对齐 #API

bin+lib alass-cli

自动语言无关字幕同步(命令行工具)

5 个稳定版本

2.0.0 2019年10月10日
1.1.0 2019年9月10日
1.0.2 2019年8月16日
1.0.1 2019年8月15日
1.0.0 2019年8月14日

#134视频

GPL-3.0 许可证

205KB
4.5K SLoC

简介

alass 是一个用于同步电影字幕的命令行工具。

它可以自动纠正

  • 常数偏移量
  • 由于广告间隔、导演剪辑等引起的分割
  • 不同的帧率

对齐过程不仅快速准确,而且与语言无关。这意味着您可以将对齐字幕到不同语言的影片。

alass 代表 "自动语言无关字幕同步"。

Windows (64位) 可执行文件

从这里获取最新可执行文件:这里!只需下载并解压缩存档。文件 alass.bat 是命令行工具。

Linux (64位) 可执行文件

从这里获取最新可执行文件:这里!要运行可执行文件,需要安装 ffmpegffprobe。您可以使用环境变量 ALASS_FFMPEG_PATH(默认 ffmpeg)和 ALASS_FFPROBE_PATH(默认 ffprobe)来更改它们的路径。

用法

最基本的命令是

$ alass movie.mp4 incorrect_subtitle.srt output.srt

您还可以使用 alass 将不正确的字幕对齐到另一个字幕

$ alass reference_subtitle.ssa incorrect_subtitle.srt output.srt

您还可以调整算法尝试避免引入或删除分割的程度

# split-penalty is a value between 0 and 1000 (default 7)
$ alass reference_subtitle.ssa incorrect_subtitle.srt output.srt --split-penalty 10

介于 5 到 20 之间的值最有用。超过 20 的值会错过一些重要的分割,而低于 5 的值会引入许多不必要的分割。

如果您只想移动字幕,而不引入分割,可以使用 --no-splits

# synchronizing the subtitles in this mode is very fast
$ alass movie.mp4 incorrect_subtitle.srt output.srt --no-splits

目前支持 .srt.ssa/.ass.idx 文件。支持所有常见的视频格式作为参考文件。

性能和结果

从视频中提取音频需要大约 10 到 20 秒。计算对齐通常需要 5 到 10 秒。

对齐通常非常完美 - "良好字幕"的百分比约为88%到98%,具体取决于你对"良好字幕"的定义有多严格。从OpenSubtitles.org下载随机字幕的错误率约为50%(样本大小N=118)。在测试数据库中的所有字幕(不是字幕文件)中,同步后

  • 50%的字幕与目标位置偏差在50ms以内
  • 80%的字幕与目标位置偏差在100ms以内
  • 90%的字幕与目标位置偏差在400ms以内
  • 95%的字幕与目标位置偏差在800ms以内

与(可能不是完美)的参考字幕相比。

如何编译二进制文件

安装Rust和Cargo然后运行

# this will create the lastest release in ~/.cargo/bin/alass-cli
$ cargo install alass-cli

该项目使用的语音活动模块是用C编写的。因此,需要一个C编译器(gccclang)来编译此项目。

要使用alass-cli与视频文件一起使用,需要安装ffmpegffprobe。它用于提取原始音频数据。您可以使用环境变量ALASS_FFMPEG_PATH(默认ffmpeg)和ALASS_FFPROBE_PATH(默认ffprobe)来设置alass使用的路径。

从源代码构建

如果您想从源代码构建和运行项目

$ git clone https://github.com/kaegi/alass
$ cd alass
$ cargo build
$ cargo run -- movie.mp4 input.srt output.srt

配置

所有参数都可以用于cargo build,也可以用于cargo installcargo run

统计信息

您可以使用以下方式激活alass中的统计模块

# Important: you have to be inside `alass-cli`! Otherwise the parameter is ignored.
$ cargo build --features statistics
$ cargo run -- --statistics-path ./some/folder

这将在./some/folder中创建统计文件。您可以使用--statistics-required-tag仅生成统计信息。

统计模块允许您更好地理解/调试算法。

警告:即使没有生成统计文件,使用此配置也会将算法速度降低50%或更多。

FFmpeg作为库

您还可以在编译时将ffmpeg链接为动态库。库实现可以大约快2到3秒提取音频。不幸的是,编译更困难,错误处理仅非常基础,可能仍然存在错误。

您必须从alass-cli/Cargo.toml中删除所有以它开始的行的"# FFMPEG-LIB"。然后使用

# Important: you have to be inside `alass-cli`! Otherwise the parameters get ignored.
$ cargo build --no-default-features --features ffmpeg-library

别名设置

对于Linux用户:建议将文件夹路径添加到您的系统路径,并为alass设置别名到alass-cli。将其添加到您的~/.bashrc(或您喜欢的shell的配置文件)中

export PATH="$PATH:$HOME/.cargo/bin"
alias alass="alass-cli"

文件夹结构

cargo工作区包含两个项目

  • alass-core它提供算法

    它针对开发者,他们想在他们的项目中使用相同的算法。

  • alass-cli它是官方的命令行工具

    它针对最终用户,他们想纠正他们的字幕。

库文档

打开 README 来自 alass-core

备注

此程序过去被称为 aligner。这使得在搜索引擎上找到它变得几乎不可能,因此选择了 alass

依赖关系

~25MB
~380K SLoC