分享一个字幕自动生成工具 Autosub

项目中文 README 文档

给定一个视频文件,这个工具可以自动生成相对应的字幕文件。

  • 课堂展示、做 Vlog 什么的也许用得上。

  • 自动生成字幕的时间轴与识别文本的质量普遍不错,需要人工完成的任务主要是校对文字以及分割过长的句子。

它的功能很不错,但是使用门槛不低,坑也不少,在此抛砖引玉,写一个简单的入门教程。

请留意,目前没有本地语音识别的功能,所有音频片段均会被上传至语音识别服务提供商(默认为 Google)处。

下载安装

推荐使用 alpha 分支。

Ubuntu

安装 ffmpeg、python3 等依赖,最后安装 Autosub。

pip install git+https://github.com/BingLingGroup/autosub.git@alpha ffmpeg-normalize langcodes

Windows

https://github.com/BingLingGroup/autosub/releases

或者也可以手动安装依赖、配置环境。

基础使用

autosub -i 视频文件 -S cmn-hans-cn -hp http://HTTP代理地址

说明:

  • -i 输入文件。

  • -S 语言代码,cmn-hans-cn 即普通话。

  • -hp 指定 HTTP 代理。这是因为默认使用 Google Speech V2 的语音识别。

进阶

Autosub 是一个字幕自动生成工具。它能使用 Auditok 来自动检测语音区域,通过 ffmpeg 根据语音区域来切割音频,通过多个 API 将语音转为文字,以及通过 py-googletrans 将字幕文本翻译。

其中的每一个工作步骤几乎都可配置,如指定其他语音识别提供商,在语音识别后翻译成另一语言,音频上传识别前预处理等。不过我暂时还没有这个需求。

实际应用

  1. 所以首先我们拿到一个录制或拍摄好的视频,安装好 Autosub,然后执行“基础使用”部分的命令,得到一个 视频文件名.cmn-hans-cn.srt。

  2. 然后可以用 Aegisub 或者 Subtitle Edit 等字幕编辑软件进行校对。其中,有时有一些字幕过长需要拆分,我的经验是 1080P 视频单行字幕普通字号最多容许约 35 字,若要求美观则应更少。

  3. 接着使用 FFmpeg 压制硬字幕(硬字幕即在编码时将字幕与原文件视频流混合,主要是考虑到各种播放设备的兼容性)。

ffmpeg -i 视频名.mp4 -vf subtitles=视频名.cmn-hans-cn.srt output.mp4
  1. OK!得到成品 output.mp4。