reference: AI auto-subtitling — /var/ --- AI 自动字幕 — /var/ (spapas.net)

0 环境准备

我们使用 Whisper 库来实现 AI 语音转文本, 它支持生成字幕文件。

先去 github 仓库下载可执行文件:v1.4.0, 完成后再去模型仓库选择一个模型下载, 越大的模型效果更好, 但也会更慢。通常 small 就足以使用。

如果是要转录英文语音文件, 需要用带 en 后缀的模型。中午和其他语言则用不带 en 后缀的。

whisper 需要具有特定特性(采样率为 16khz)的未压缩音频(.wav 文件)才能工作, 因此我们需要把原语音文件通过 ffmpeg 转换为对应格式。

ffmpeg 下载 : Releases · BtbN/FFmpeg-Builds (github.com) 选择 ffmpeg-master-latest-win64-gpl.zip 即可。

1 提取视频音频

用该命令:

ffmpeg.exe -i "movie.mp4" -f wav -vn -acodec pcm_s16le -ar 16000 -ac 1 "movie.wav"

解释一下参数:

  • -i 指 input, 也就是输入文件路径
  • -f wav 为指定 format, 也就是文件格式为 wav
  • -vn 表示处理时不考虑视频, 只关心音频
  • -acodec pcm_s16le wav 文件的编解码器
  • -ar 16000 设置采样率为 16khz
  • -ac 1 设置单声道, 2 为立体声

2 传入 Wishper 得到字幕文件

将 cmd 进入 Wishper 目录下: image.png

接着运行这条命令:

main.exe -osrt -m ggml-base.bin -f movie.wav

解释一下参数:

  • -osrt 生成 srt 字幕文件
  • -m ggml-bash.bin 选中当前目录下的 small 模型
  • -f 原音频文件路径

运行后就会在当前目录下生成字幕文件。