Paraformer语音识别-中文-通用-16k-离线-large-长音频版,使用本地环境运行正常,而且已经缓存下载模型文件。但是当没有互联网访问权限时,报错HTTPConnectionPool(host='www.modelscope.cn', port=80): Max retries exceeded with url: /api/v1/models/damo/speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404-pytorch (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -2] Name or service not known'))
既然是离线模型为什么还需要访问www.modelscope.cn 才能继续使用模型呢,如何部署在无外网权限的环境中?
您提到的报错信息表明,尽管您已经缓存并下载了离线模型文件,但在无互联网访问权限的环境中运行时,程序仍然尝试访问 www.modelscope.cn
。这与“离线模型”的预期行为不符。以下是问题的原因分析及解决方案。
模型加载机制
Paraformer 模型在初始化时,可能会通过远程服务(如 ModelScope)验证模型的元数据或加载配置文件。即使模型文件已缓存到本地,某些依赖项可能仍需要从远程服务器获取。
动态资源加载
部分语音识别功能(如热词定制、语言提示等)可能依赖于远程服务提供的动态资源。这些资源在无外网环境时无法加载,导致程序报错。
缓存不完整
如果仅缓存了模型的核心权重文件,而未包含所有必要的配置文件或依赖项,则程序在运行时会尝试从远程服务器补充缺失的部分。
检查缓存完整性
确保所有模型文件及相关依赖项均已缓存到本地。包括但不限于:
config.json
)vocab.txt
)使用本地路径加载模型
在代码中明确指定模型的本地路径,避免程序尝试从远程服务器加载模型。例如:
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
# 指定本地模型路径
local_model_path = "/path/to/your/cached/model"
# 初始化语音识别管道
inference_pipeline = pipeline(
task=Tasks.auto_speech_recognition,
model=local_model_path
)
关闭动态资源加载
如果您的应用场景不需要动态资源(如热词定制),可以在初始化时禁用相关功能。例如:
inference_pipeline = pipeline(
task=Tasks.auto_speech_recognition,
model=local_model_path,
model_revision="v1.0.0", # 指定本地版本
disable_remote=True # 禁用远程资源加载
)
设置环境变量
某些框架可能通过环境变量控制是否访问远程服务。您可以设置以下环境变量以强制使用本地资源:
export MODELSCOPE_DISABLE_REMOTE=True
模拟无外网环境
在开发环境中断开网络连接,测试程序是否能够正常运行。如果仍有报错,请检查日志以定位未加载的依赖项。
日志调试
启用详细日志记录,查看程序在运行时尝试访问的远程资源。例如:
import logging
logging.basicConfig(level=logging.DEBUG)
模型版本一致性
确保本地缓存的模型版本与代码中指定的版本一致。如果版本不匹配,可能导致加载失败。
依赖库版本
确保目标环境中安装的依赖库(如 modelscope
和 torch
)与模型要求的版本兼容。
权限问题
在无外网环境中,确保程序对本地模型文件具有读取权限。
Paraformer 模型在无外网环境下的部署需要确保所有依赖项均已缓存到本地,并通过明确指定本地路径和禁用远程资源加载来避免对外部服务的依赖。按照上述步骤操作后,您应该能够在完全离线的环境中成功运行 Paraformer 语音识别模型。您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。