Skip to content

关于 Cannot find an appropriate cached snapshot folder for the specified revision... 错误的说明与解决方案

在运行pyVideoTrans软件并使用faster-whisper模式时,可能经常会遇到下面这个看起来很复杂的错误,请不要担心。

通常不是软件的 Bug,而是一个常见的网络问题

Traceback (most recent call last):
  File "videotrans\task\_only_one.py", line 43, in run
  File "videotrans\task\trans_create.py", line 371, in recogn
  File "videotrans\recognition\__init__.py", line 236, in run
  File "videotrans\recognition\_base.py", line 75, in run
  File "videotrans\recognition\_overall.py", line 155, in _exec
RuntimeError: err[msg]=Cannot find an appropriate cached snapshot folder for the specified revision on the local disk and outgoing traffic has been disabled. To enable repo look-ups and downloads online, pass 'local_files_only=False' as input.

一、这个错误到底是什么意思?

简单来说,这个错误就像一个两步连锁反应:

  1. 第一步:模型下载失败。 程序需要从网上下载 "faster-whisper" 的模型才能工作。但是,由于你的网络无法顺利连接到模型服务器(Hugging Face),或者下载中途断开了,导致模型没有下载成功。

  2. 第二步:切换到离线模式后找不到模型。 当faster-whisper库发现网络下载失败后,它会自作聪明地尝试从你的电脑本地文件夹里寻找这个模型(这叫“离线模式”)。但因为第一步下载就没成功,你的电脑里自然是空空如也,所以它就报告“在本地找不到模型”,最终导致了你看到的这个错误。

一句话总结:网络不好导致模型下载失败,下载失败导致本地没有模型可用。


二、如何解决这个问题?

核心思路是:确保模型能够被完整地下载到你的电脑里。 这里为你提供了两种简单有效的解决方案。

方案一:优化网络环境,让程序自己下载(推荐)

程序内置了从国内镜像站下载的渠道,这通常是最快、最稳定的方式。

  1. 断开代理/VPN:如果你正在使用任何形式的系统代理或 VPN,请先关闭它们。因为vpn可能不稳定,在长时间下载大模型时中途断开导致失败。

  2. 删除失败的缓存文件

    • 找到程序的主文件夹(也就是 sp.exe 所在的那个文件夹)。
    • 进入里面的 models 文件夹。
    • 找到并删除与你尝试下载的模型相关的文件夹(比如 models--Systran--faster-whisper-largexxx 这样的)。这一步是为了清空不完整或已损坏的下载文件。

  1. 重新运行程序:关闭代理并清理缓存后,重新启动主程序。它现在应该能顺利地从国内镜像服务器下载模型了。

方案二:使用专门下载工具,手动下载模型

如果方案一不奏效,或者你的网络环境比较特殊,我们为你准备了专门的模型下载工具。你可以像下载普通软件一样,先把所有模型一次性下载好(共8个用于faster-whisper的模型),再运行主程序。

  1. 下载工具

    • 国内用户(推荐):

    • 海外或有稳定代理的用户:

  2. 使用方法

    • 将下载好的 .exe 文件放到主程序所在的文件夹(和 sp.exe 放在一起)。
    • 双击运行你下载的那个 .exe 文件。它会打开一个命令行窗口,自动开始下载所有需要的模型。
    • 下载过程可能需要一些时间,尤其是 large 系列模型文件很大,请耐心等待直到窗口提示全部完成。

重要提示

  • large-v1, large-v2, large-v3 等模型体积非常大(几个 GB)。如果你的网络不稳定,下载可能会中途失败。
  • 如果下载失败,不用担心,再次双击运行同一个 .exe 文件即可。它支持断点续传,会从上次失败的地方继续下载。

当所有模型都通过上述任一方法成功下载到 models 文件夹后,再次运行主程序,问题就应该解决了!