Chenyme / Chenyme-AAVT

这是一个全自动(音频)视频翻译项目。利用Whisper识别声音,AI大模型翻译字幕,最后合并字幕视频,生成翻译后的视频。
MIT License
1.49k stars 131 forks source link

【修复】关于Windows下faster-whisper使用GPU推理导致崩溃的处理方法 #31

Closed Ladbaby closed 3 months ago

Ladbaby commented 4 months ago

本 issue 严格意义上并非此项目的问题,根本原因出在了 faster-whisper 库中。以防有人遇到和我同样的问题,仅在此分享我的解决方式。

问题描述

在Windows的NVidia GPU环境下,选择使用本地的 faster-whisper 进行视频转文字的任务时,由于 faster-whisper 库自身存在的已知 issue,可能导致 faster_whisper_result 函数在被调用完毕即将返回结果时崩溃,表现为终端在输出类似以下内容后:

- whisper识别内容:
柔らかそうな感じなんですよ!

紧接着就会直接崩溃,不会产生任何报错信息。pdb 等调试器同样不会返回报错。在 Windows 的 Event Viewer 中可以看到程序的错误退出日志。

临时解决办法

由于是 faster-whisper 自身的问题,参考该库 issue 中的临时解决方式,可以使用多进程来规避主进程的崩溃。这样 faster-whisper 所在的进程崩溃了也不会导致本项目主程序的崩溃。

具体代码改动可以参考这个 commit。核心修改为 project/utils/utils2.py 中添加一个 runWhisperSeperateProc 函数,之中使用新的进程调用原本的 faster_whisper_result 函数。

本解法已知缺点


和本 issue 内容无直接关联的PS: 重构后的界面挺好的;在个人的测试中,本地 LLM 的翻译能力 aya:8B 较为出众

Chenyme commented 4 months ago

非常感谢您的说明!!!

Eisaichen commented 3 months ago

感谢,这项目折腾了一天才跑起来,运用了你的commit修复 感觉这项目上限很高,但还很不成熟,遵循文档都跑不起来...

@Chenyme release V0.8.3是否应该撤回一下,因为这个commit下文件夹还是“models”但代码里路径已经改了,导致本地模型直接报错 我在英文系统下,一直因为代码里的中文运行不起来,提示"decode unicode charmap"什么的,通过设置环境变量PYTHONIOENCODING='utf-8'才解决

Chenyme commented 3 months ago

你好!感谢反馈! 个人水平时间有限,目前安装有点复杂,等考完后,会考虑其他办法简化步骤。


commit下文件夹还是“models”但代码里路径已经改了 我看了一下commit,路径应该是和0.8.3一样的。 在英文系统下,一直因为代码里的中文运行不起来 代码中有许多是中文说明,可能这是出错的原因。

Eisaichen commented 3 months ago

@Chenyme 麻烦你检查0.8.3a25de34里文件夹是命名为Models,再看看这个Commit下的project/video.py第18行

Chenyme commented 3 months ago

了解啦。由于我之前操作有误,导致所有的Tag标签中,每个标签对应的项目代码都是上一个版本的内容,一直未做调整。实在不好意思啊(┬┬﹏┬┬)

所以Git项目,请以main分支为准。 直接下载,还请以releases各版本中的压缩包为准。 感谢

Eisaichen commented 3 months ago

@Chenyme 另外请问下要如何本地加载原版的Whisper模型? 选whisper后会报错 (同环境下fast-whisper可正常使用)

Logs ``` chenyme-aavt | 2024-06-13 01:50:55.905 Uncaught app exception chenyme-aavt | Traceback (most recent call last): chenyme-aavt | File "C:\Users\ContainerAdministrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\streamlit\runtime\scriptrunner\script_runner.py", line 600, in _run_script chenyme-aavt | exec(code, module.__dict__) chenyme-aavt | File "C:\app\Chenyme-AAVT.py", line 41, in chenyme-aavt | video() chenyme-aavt | File "C:\app\project\video.py", line 425, in video chenyme-aavt | result = faster_whisper_result(output_file, device, model, whisper_prompt_setting, temperature_setting, vad_setting, lang_setting, beam_size_setting, min_vad_setting) chenyme-aavt | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ chenyme-aavt | File "C:\app\project\utils\utils2.py", line 107, in faster_whisper_result chenyme-aavt | model = WhisperModel(model_name, device) chenyme-aavt | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ chenyme-aavt | File "C:\Users\ContainerAdministrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\faster_whisper\transcribe.py", line 144, in __init__ chenyme-aavt | self.model = ctranslate2.models.Whisper( chenyme-aavt | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ chenyme-aavt | RuntimeError: Unsupported model binary version. This executable supports models with binary version v6 or below, but the model has binary version v67324752. This usually means that the model was generated by a later version of CTranslate2. (Forward compatibility is not guaranteed.) ```

模型是直接从hf上clone的

File list ``` C:\CONTAINERS\CHENYME-AAVT\MODEL\WHISPER-LARGE-V3 .gitattributes added_tokens.json config.json flax_model.msgpack generation_config.json merges.txt model.fp32-00001-of-00002.safetensors model.fp32-00002-of-00002.safetensors model.safetensors model.safetensors.index.fp32.json normalizer.json preprocessor_config.json pytorch_model.bin pytorch_model.bin.index.fp32.json pytorch_model.fp32-00001-of-00002.bin pytorch_model.fp32-00002-of-00002.bin README.md special_tokens_map.json tokenizer.json tokenizer_config.json vocab.json ```
Chenyme commented 3 months ago

启用本地模型只支持fast-whisper的模型哈 因为fast-whisper使用的模型是基于CTranslate2 转换的,因此原openai的不支持。 该模型从huggingface/Systran下载ヾ(≧▽≦*)o

具体使用可参考AAVT文档中的本地模型加载使用说明

Eisaichen commented 3 months ago

@Chenyme 主贴的这个fix能整合一下嘛?这个问题我这里100%会出现,每次新版本我都得改代码 这个issue在faster-whisper提出1年多了都没修,大概是指望不上了,只能先workaround

Chenyme commented 3 months ago

@Chenyme 主贴的这个fix能整合一下嘛?这个问题我这里100%会出现,每次新版本我都得改代码

这个issue在faster-whisper提出1年多了都没修,大概是指望不上了,只能先workaround

好滴!最近期末考,可能晚点会合并😃