diff --git a/aiia_e2e_diarizer.py b/aiia_e2e_diarizer.py index 9f33787..d7fdcba 100755 --- a/aiia_e2e_diarizer.py +++ b/aiia_e2e_diarizer.py @@ -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'] 已正确安装且版本兼容。" diff --git a/aiia_generate_segments.py b/aiia_generate_segments.py index 78db431..992950c 100755 --- a/aiia_generate_segments.py +++ b/aiia_generate_segments.py @@ -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})")