@@ -39,15 +39,38 @@ def main():
3939
4040 # 设置环境变量
4141 # FunASR 默认下载到 ~/.cache/modelscope/hub
42- # 如果指定了 cache-dir,我们尝试通过 MODELSCOPE_CACHE 环境变量来控制
42+ # MODELSCOPE_CACHE 语义通常是 "base dir",实际下载会落到 <base>/hub。
43+ # 但历史上我们也可能传入了 ".../hub"。这里做兼容归一化,确保 Win/mac/Linux 都稳定落盘。
44+ cache_base = None
45+ cache_hub = None
4346 if args .cache_dir :
44- os .environ ["MODELSCOPE_CACHE" ] = args .cache_dir
45- os .environ ["MODELSCOPE_CACHE_HOME" ] = args .cache_dir
47+ raw = os .path .abspath (args .cache_dir )
48+ if os .path .basename (raw ).lower () == "hub" :
49+ cache_base = os .path .dirname (raw )
50+ cache_hub = raw
51+ else :
52+ cache_base = raw
53+ cache_hub = os .path .join (raw , "hub" )
4654 else :
47- cache = os .environ .get ("ASR_CACHE_DIR" )
55+ # 兼容旧逻辑:若仅提供 ASR_CACHE_DIR(通常是 HF 的 hub),尝试回退到其父目录作为 base
56+ cache = os .environ .get ("MODELSCOPE_CACHE" ) or os .environ .get ("MODELSCOPE_CACHE_HOME" ) or os .environ .get ("ASR_CACHE_DIR" )
4857 if cache :
49- os .environ ["MODELSCOPE_CACHE" ] = cache
50- os .environ ["MODELSCOPE_CACHE_HOME" ] = cache
58+ raw = os .path .abspath (cache )
59+ if os .path .basename (raw ).lower () == "hub" :
60+ cache_base = os .path .dirname (raw )
61+ cache_hub = raw
62+ else :
63+ cache_base = raw
64+ cache_hub = os .path .join (raw , "hub" )
65+
66+ if cache_base :
67+ os .environ ["MODELSCOPE_CACHE" ] = cache_base
68+ os .environ ["MODELSCOPE_CACHE_HOME" ] = cache_base
69+ try :
70+ os .makedirs (cache_base , exist_ok = True )
71+ os .makedirs (cache_hub , exist_ok = True )
72+ except Exception :
73+ pass
5174
5275 emit ("manifest" , modelId = args .model_id , message = "准备下载 FunASR 模型..." , totalBytes = 0 , fileCount = 0 )
5376
@@ -98,12 +121,18 @@ def main():
98121 emit ("manifest" , modelId = args .model_id , message = f"正在下载标点模型: { punc_model_dir } (4/4)" )
99122 CT_Transformer (model_dir = punc_model_dir , quantize = use_quantize , intra_op_num_threads = 1 )
100123
101- emit ("completed" , modelId = args .model_id , message = "FunASR 模型下载完成" , localDir = os .environ .get ("MODELSCOPE_CACHE" ))
124+ emit (
125+ "completed" ,
126+ modelId = args .model_id ,
127+ message = "FunASR 模型下载完成" ,
128+ localDir = cache_hub or os .environ .get ("MODELSCOPE_CACHE" ) or "" ,
129+ cacheBase = os .environ .get ("MODELSCOPE_CACHE" ) or "" ,
130+ cacheHub = cache_hub or "" ,
131+ )
102132
103133 except Exception as e :
104134 emit ("error" , modelId = args .model_id , message = str (e ), traceback = traceback .format_exc ())
105135 sys .exit (1 )
106136
107137if __name__ == "__main__" :
108138 main ()
109-
0 commit comments