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