buxuku / video-subtitle-master

批量为视频或者音频生成字幕,并可批量将字幕翻译成其它语言。这是一个客户端工具, 跨平台支持 mac 和 windows 系统, 支持百度,火山,deeplx, openai, deepseek, ollama 等多个翻译服务
MIT License
317 stars 17 forks source link

能否在 Windows 下调用 GPU #9

Open LJason77 opened 3 months ago

LJason77 commented 3 months ago

系统: Windows 11 软件版本: v1.0.3 模型: medium.en 视频语言: 英文


测试了一下,生成字幕要超久,看了任务管理器,是用的 CPU,还没有跑满,只用了一点点。

我平时生成字幕用的 whisper 命令是:

whisper --model medium.en --device cuda --language English --output_format vtt 文件

这个可以调用 GPU 并且跑满。

测试同一个半小时的视频,操作还没结束,video-subtitle-master 的用时已经是命令的三倍以上了(相同模型)。


Issues 还没写完,终于操作结束了。然后,没有输出字幕? 我的想法是:视频 AAA.mp4 ,然后输出 AAA.srt,不想要 targetLanguage 的后缀,就设置了 ${fileName},结果什么都没有输出。

设置:


我导入视频,还没点 开始操作,就已经是正在转的图标,有点迷惑。 是 “已经在处理中” 还是 “未开始处理” 的意思?等待了一下,图标没有变化,我猜是 “未开始操作”? 我点 开始操作,然后图标没有任何变化。 这点可以优化一下。

LJason77 commented 3 months ago

又出现一个问题:

在上面的情况下(操作完成,三个图标都变成勾,但没有输出字幕),我又点了一下 开始操作。 CPU 涨了,进程开始有占用了,生成 wav 文件了,意味着开始处理了? 但是图标没有变化,依旧是打勾,开始操作 的按钮也不会锁定了。

buxuku commented 3 months ago

非常感谢如此详细的反馈,软件使用体验上的问题,我将进一步优化。关于 Windows 下面 GPU 的支持,目前确实是没有支持,核心卡点是 cublasLt64_12.dll 这个文件高达五百多兆,集成进来将会导致软件体积异常大。我将思考是否有更好的解决方案。

LJason77 commented 3 months ago

能否检测本地已经存在的命令? 优先调用本地的命令,本地不存在再调用集成的?

buxuku commented 3 months ago

能否检测本地已经存在的命令? 优先调用本地的命令,本地不存在再调用集成的?

这个是可以的,你的 whisper 命令是怎么安装的呢?本地是已经可以全局调用的是吧?

LJason77 commented 3 months ago

这个是可以的,你的 whisper 命令是怎么安装的呢?本地是已经可以全局调用的是吧?

FFmpeg 是 winget install Gyan.FFmpeg whisper 是 pip install -U openai-whisper

在 PowerShell 里是可以直接运行 whisper 的。


只是我个人的想法:有选项可以自定义路径,默认是自动检测并填充路径,检测不到并且没有设置路径再使用集成。


当然,如果是我开发,肯定不会这么干,自动检测就完事了,主要是懒 🤣

buxuku commented 3 months ago

非常感谢如此详细的反馈,软件使用体验上的问题,我将进一步优化。关于 Windows 下面 GPU 的支持,目前确实是没有支持,核心卡点是 cublasLt64_12.dll 这个文件高达五百多兆,集成进来将会导致软件体积异常大。我将思考是否有更好的解决方案。

确实不调用gpu生成字幕也太慢了,体积大就大吧,总比没有的好,可以先更新一版

目前我只有家里的电脑的虚拟机安装了 window 系统。所以 windows 下的开发进度会慢一些,不过我会尽量优先开发调用本地的命令来实现。

tobycroft commented 3 months ago

隔壁faster whisper已经1G多了,大点没事的!

buxuku commented 3 months ago

@LJason77 我发布了一个 1.0.13 版本,这个版本会调用系统里面的 whisper 命令,但我手头上没有支持 cuda 的电脑,麻烦下载测试,并反馈一下情况。

LJason77 commented 3 months ago

测试了,可以跑满 GPU 了,速度和用命令行的一模一样 👍 我这边没有问题了。

tobycroft commented 3 months ago

@LJason77 我发布了一个 1.0.13 版本,这个版本会调用系统里面的 whisper 命令,但我手头上没有支持 cuda 的电脑,麻烦下载测试,并反馈一下情况。

image 啊? how is that gonna work?

LJason77 commented 3 months ago

@tobycroft 你在本地有没有安装 whisper?命令行里能不能直接运行 whisper?

tobycroft commented 3 months ago

@tobycroft 你在本地有没有安装 whisper?命令行里能不能直接运行 whisper?

windows,目前还没有正在装环境

LJason77 commented 3 months ago

我有个想法,不知道会不会太麻烦,就是分几个版本:

  1. 完全轻量版 - 不集成 ffmpeg 和 whisper,全靠本地的命令,纯 UI,容量也最小
  2. CPU 版 - 就按照上一版的
  3. GPU 版 - 集成 GPU 相关的,容量也最大

太麻烦就算了吧 🤣

tobycroft commented 3 months ago

我有个想法,不知道会不会太麻烦,就是分几个版本:

  1. 完全轻量版 - 不集成 ffmpeg 和 whisper,全靠本地的命令,纯 UI,容量也最小
  2. CPU 版 - 就按照上一版的
  3. GPU 版 - 集成 GPU 相关的,容量也最大

太麻烦就算了吧 🤣 @buxuku 复议,不过我觉得大小不是问题啊,直接GPU版本就好了,大小真的不是问题,能下的也不差500M,不能下的,100M也是下不了对吧,不用考虑大小的

buxuku commented 3 months ago

我有个想法,不知道会不会太麻烦,就是分几个版本:

  1. 完全轻量版 - 不集成 ffmpeg 和 whisper,全靠本地的命令,纯 UI,容量也最小
  2. CPU 版 - 就按照上一版的
  3. GPU 版 - 集成 GPU 相关的,容量也最大

太麻烦就算了吧 🤣

是的,后续我也是考虑这样的,分不同的版本,用户根据情况下载对应的版本。whisper.cpp 对 cube 的支持也是单独提供的一个版本包。

jd04063221 commented 1 month ago

可以先选择将支持CUDA的部分作为add-on,单独下载,需要的人再下载附加包自己解压进目录。

Nzzz964 commented 1 week ago
let runShell = `"${mainPath}" -m "${whisperPath}models/ggml-${whisperModel}.bin" -f "${audioFile}" -osrt -of "${srtFile}" -l ${sourceLanguage}`;
if (hasOpenAiWhisper) {
  runShell = `whisper "${audioFile}" --model ${whisperModel} --device cuda --output_format srt --output_dir ${directory} --language ${sourceLanguage}`;
}

hasOpenAiWhisper 这里 whisper 命令似乎没有 whisper.cpp-of 指定输出文件名选项

导致使用 whisper 在翻译字幕时找不到字幕文件