fix: NeMo 导入时设置 HF_HUB_OFFLINE=1 防止 w2v-bert-2.0 网络请求卡死

This commit is contained in:
Hawk Lee
2026-02-19 14:55:40 +08:00
parent 9f046e37d4
commit 00d2b2fa7e
2 changed files with 38 additions and 3 deletions
+16 -1
View File
@@ -220,7 +220,22 @@ class AIIA_E2E_Speaker_Diarization:
"language":whisper_chunks.get("language", "") if isinstance(whisper_chunks, dict) else ""},)
try:
from nemo.collections.asr.models.sortformer_diar_models import SortformerEncLabelModel
import os as _os
_hf_offline_prev = _os.environ.get("HF_HUB_OFFLINE")
_tf_offline_prev = _os.environ.get("TRANSFORMERS_OFFLINE")
_os.environ["HF_HUB_OFFLINE"] = "1"
_os.environ["TRANSFORMERS_OFFLINE"] = "1"
try:
from nemo.collections.asr.models.sortformer_diar_models import SortformerEncLabelModel
finally:
if _hf_offline_prev is None:
_os.environ.pop("HF_HUB_OFFLINE", None)
else:
_os.environ["HF_HUB_OFFLINE"] = _hf_offline_prev
if _tf_offline_prev is None:
_os.environ.pop("TRANSFORMERS_OFFLINE", None)
else:
_os.environ["TRANSFORMERS_OFFLINE"] = _tf_offline_prev
print(f"[AIIA E2E Diarization] 成功导入 SortformerEncLabelModel。")
except ImportError as e_import_model:
error_msg = f"错误: NeMo SortformerEncLabelModel 未找到 ({e_import_model})。请确保 nemo_toolkit['asr'] 已正确安装且版本兼容。"
+22 -2
View File
@@ -240,8 +240,28 @@ class AIIA_GenerateSpeakerSegments:
try:
from nemo.collections.asr.models.sortformer_diar_models import SortformerEncLabelModel
from nemo.collections.asr.parts.mixins.diarization import DiarizeConfig
import os as _os
# Prevent NeMo's import chain from making HuggingFace Hub network requests.
# aed_multitask_models loads facebook/w2v-bert-2.0 configs during import,
# which hangs for minutes in network-restricted environments (China) due to
# exponential-backoff retries against blocked huggingface.co.
_hf_offline_prev = _os.environ.get("HF_HUB_OFFLINE")
_tf_offline_prev = _os.environ.get("TRANSFORMERS_OFFLINE")
_os.environ["HF_HUB_OFFLINE"] = "1"
_os.environ["TRANSFORMERS_OFFLINE"] = "1"
try:
from nemo.collections.asr.models.sortformer_diar_models import SortformerEncLabelModel
from nemo.collections.asr.parts.mixins.diarization import DiarizeConfig
finally:
# Restore previous values
if _hf_offline_prev is None:
_os.environ.pop("HF_HUB_OFFLINE", None)
else:
_os.environ["HF_HUB_OFFLINE"] = _hf_offline_prev
if _tf_offline_prev is None:
_os.environ.pop("TRANSFORMERS_OFFLINE", None)
else:
_os.environ["TRANSFORMERS_OFFLINE"] = _tf_offline_prev
print(f"{node_name_log} 成功导入 NeMo 类。")
except ImportError as e_import_model:
return self._create_error_output(f"导入 NeMo 类失败 ({e_import_model})")