#字幕 #srt #命令行 #视频播放器 #字幕

bin+lib subtitles

用于生成视频播放器中使用的 SRT 格式字幕的命令行程序

7 个版本

0.2.0 2023 年 9 月 23 日
0.1.5 2021 年 7 月 26 日
0.1.2 2021 年 6 月 14 日

9#srt

每月 22 次下载

BSD-2-Clause

23KB
365

视频字幕生成

用于生成包括 YouTube 在内的视频播放器中使用的 SRT 格式 字幕的命令行程序

字幕是从视频的完整 文本 生成的。默认情况下,每个字幕的最大词数为 10 个。

当前状态

积极开发中。

用法

CLI

$ subtitles --transcript INPUT-FILENAME.txt --length LENGTH-IN-SECONDS --abbr ABBREVIATION-MAP-FILE.csv > OUTPUT-FILENAME.srt
$ subtitles --transcript transcript.txt --length 300 --abbr abbreviations.csv > subtitles.srt # True example

Webassembly

import init, * as subtitles from 'path/to/subtitles.js';

(async () => {
  await init();

  let transcript_text = 'Lots of text goes here; newline is acceptable.';
  let audio_length_in_seconds = 99;
  let abbreviation_map = new Map([["UNGA", "United Nations General Assembly"], ["MDN", "Mozilla Developer Network"]]); // Optional.

  const text_for_srt_file = subtitles.wasm_prepare_srt_content(transcript_text, audio_length_in_seconds, abbreviation_map);
})()

构建说明

CLI

$ cargo build --release

Webassembly

安装 wasm-pack. 然后...

$ wasm-pack build --target web
$ cp pkg/{subtitles_bg.wasm,subtitles.js} /path/to/website/js/

缩写映射表

缩写映射表是一个 可选 功能。它可以从命令行或在使用 Wasm 版本时作为 JavaScript Map 对象提供,为一个 CSV 文件(没有标题行)。它的目的是将那些发音与外观非常不同的字符或字符序列进行映射。例如,转录可能使用 "(UNGA)",而叙述者可能说 "United Nations General Assembly"。另一个例子是 Unicode 码点 U+FDFD,它被说成是一个完整的句子。在这些所有情况下,转录中的书写形式都没有提示说它可能需要多长时间。通过提供书写形式和发音形式之间的映射,我们得到每个字幕更准确的计时。

CSV 示例

(UNGA),(United Nations General Assembly)
(MDN),(Mozilla Developer Network),Bi-smi llāhi r-raḥmāni r-raḥīm

许可证

简化版 BSD 许可证

依赖项

~3.5–4.5MB
~63K SLoC