分享一个字幕自动生成工具 Autosub
给定一个视频文件,这个工具可以自动生成相对应的字幕文件。
课堂展示、做 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 将字幕文本翻译。
其中的每一个工作步骤几乎都可配置,如指定其他语音识别提供商,在语音识别后翻译成另一语言,音频上传识别前预处理等。不过我暂时还没有这个需求。
实际应用
所以首先我们拿到一个录制或拍摄好的视频,安装好 Autosub,然后执行“基础使用”部分的命令,得到一个 视频文件名.cmn-hans-cn.srt。
然后可以用 Aegisub 或者 Subtitle Edit 等字幕编辑软件进行校对。其中,有时有一些字幕过长需要拆分,我的经验是 1080P 视频单行字幕普通字号最多容许约 35 字,若要求美观则应更少。
接着使用 FFmpeg 压制硬字幕(硬字幕即在编码时将字幕与原文件视频流混合,主要是考虑到各种播放设备的兼容性)。
ffmpeg -i 视频名.mp4 -vf subtitles=视频名.cmn-hans-cn.srt output.mp4
- OK!得到成品 output.mp4。