/VideoSubtitleGenerator

批量为本地视频生成字幕文件,并可将字幕文件翻译成其它语言

Primary LanguageJavaScript

批量为视频文件生成字幕文件,并翻译成其它语言

这只是方便自己使用的一个小工具,目前并未进行严格测试,如果在使用过程中遇到啥问题,可以提 Issue

做这个小工具的初衷:

自己有一大批外文视频,没有字幕,希望能够添加字幕文件,同时也能够将字幕文件翻译成中文, 同时希望能够通过批量处理的方式来减轻工作量。

类似需求,有一批厂商已经提供到了支持,比如 讯飞听见, 网易见外 等,但这些在线服务都涉及到视频的上传动作,效率相对比较低下。

希望能够找一个客户端工具,在本地来生成,试用了一些工具,依然不理想

  • Buzz 非 Store 版本没有对 apple silicon 做优化,字幕生成速度比较慢,也不支持翻译
  • MacWhisper 免费版本只支持单个生成,不支持批量,不支持翻译
  • WhisperScript 可以批量生成,但字幕文件需要手动一个个地保存,不支持翻译
  • memo.ac 做了 mac 下的性能优化,可以使用 GPU ,也支持翻译功能,非常棒的一款软件,但目前批量模式 bug 太多,无法正常使用

最后想了一下,本地语音转文字,通常的做法就是使用目前最强的 whisper 模型来生成。那我的需求就比较简单了:

  • 通过 ffmpeg 从视频文件中提取出音频文件
  • 通过 whisper 模型将音频生成原语言的字幕文件
  • 调用翻译 API, 将原语言的字幕文件翻译成目标语言的字幕文件

基于以上简单的思路和流程,就可以简单写一个小工具来批量处理本地的视频了。

💥特性

  • 源语言字幕文件和目标语言字幕文件放在视频同目录下,方便播放时任意挂载字幕文件
  • 批量处理目录下面的所有视频文件
  • 支持火山引擎翻译
  • 支持百度翻译
  • 支持 deeplx 翻译 (批量翻译容易存在被限流的情况)
  • 使用 whisper.cpp, 对 apple silicon 进行了优化,有较快的生成速度
🔦使用

1️⃣手动在本地安装好 whisper.cpp, 参考 https://github.com/ggerganov/whisper.cpp

2️⃣手动在本地安装好 ffmpeg , 可通过 brew 来安装

brew install ffmpeg

3️⃣克隆本项目在本地

4️⃣在项目中执行 yarn install 或者 npm install

5️⃣所有的配置在 config.js 文件中进行配置,

6️⃣配置好该文件之后,执行 node ./index.js