FFomy commited on
Commit
a198709
·
verified ·
1 Parent(s): 4e69efc

the file in hf is ms type, so when automodel, use ms

Browse files
Files changed (1) hide show
  1. app.py +35 -71
app.py CHANGED
@@ -1,70 +1,53 @@
1
  import os
2
- import spaces
3
  # from huggingface_hub import snapshot_download
4
- from modelscope.hub.snapshot_download import snapshot_download
 
 
 
 
 
 
 
 
5
 
6
 
7
  # 1. 定义本地路径和远程仓库ID
8
  FUN_ASR_NANO_LOCAL_PATH = "./Fun-ASR/model"
 
9
  SENSE_VOICE_SMALL_LOCAL_PATH = "./Fun-ASR/model/SenseVoiceSmall"
 
 
 
10
 
11
- # 配置仓库类型 (通过修改这个变量来切换平台)
12
- # "ms" = ModelScope, "hf" = Hugging Face
13
- REPO_TYPE = "hf" # 修改这里来切换平台
14
 
15
- # 根据仓库类型配置仓库ID
16
- if REPO_TYPE == "hf":
17
- # Hugging Face 配置
18
- FUN_ASR_NANO_REPO_ID = "FunAudioLLM/Fun-ASR-Nano-2512"
19
- SENSE_VOICE_SMALL_REPO_ID = "FunAudioLLM/SenseVoiceSmall"
20
- else: # "ms"
21
- # ModelScope 配置
22
  FUN_ASR_NANO_REPO_ID = "FunAudioLLM/Fun-ASR-Nano-2512"
23
- SENSE_VOICE_SMALL_REPO_ID = "iic/SenseVoiceSmall"
24
-
25
- # 2. 导入下载库
26
- if REPO_TYPE == "hf":
27
- from huggingface_hub import snapshot_download as hf_snapshot_download
28
  else:
29
- from modelscope.hub.snapshot_download import snapshot_download as ms_snapshot_download
30
-
31
- def download_model(repo_id, local_path):
32
- """
33
- 根据平台类型下载模型
34
-
35
- Args:
36
- repo_id (str): 仓库ID
37
- local_path (str): 本地存储路径
38
- """
39
- if REPO_TYPE == "hf":
40
- # Hugging Face 下载逻辑
41
- print(f"正在从 Hugging Face 下载模型 {repo_id} 到 {local_path} ...")
42
- hf_snapshot_download(
43
- repo_id=repo_id,
44
- local_dir=local_path,
45
- ignore_patterns=["*.onnx"], # 如果你不需要onnx文件,可以过滤掉以节省时间和空间
46
- )
47
- else: # "ms"
48
- # ModelScope 下载逻辑
49
- print(f"正在从 ModelScope 下载模型 {repo_id} 到 {local_path} ...")
50
- from modelscope import HubApi
51
- api = HubApi()
52
- api.login(os.getenv("MODELSCOPE_TOKEN"))
53
- ms_snapshot_download(
54
- repo_id=repo_id,
55
- local_dir=local_path,
56
- ignore_patterns=["*.onnx"], # 如果你不需要onnx文件,可以过滤掉以节省时间和空间
57
- )
58
- print("模型下载完毕!")
59
 
60
- # 3. 检查本地是否存在,不存在则下载
61
  if not os.path.exists(FUN_ASR_NANO_LOCAL_PATH):
62
- download_model(FUN_ASR_NANO_REPO_ID, FUN_ASR_NANO_LOCAL_PATH)
 
 
 
 
 
 
63
  else:
64
  print("检测到本地模型文件,跳过下载。")
65
 
 
66
  if not os.path.exists(SENSE_VOICE_SMALL_LOCAL_PATH):
67
- download_model(SENSE_VOICE_SMALL_REPO_ID, SENSE_VOICE_SMALL_LOCAL_PATH)
 
 
 
 
 
 
68
  else:
69
  print("检测到本地模型文件,跳过下载。")
70
 
@@ -89,14 +72,10 @@ from funasr.utils.postprocess_utils import rich_transcription_postprocess
89
  # Model configurations for Hugging Face deployment
90
  FUN_ASR_NANO_MODEL_PATH_LIST = [
91
  "Fun-ASR/model", # local path, ms
92
- "FunAudioLLM/fun-asr-nano", # huggingface model repo, hf
93
- "FunAudioLLM/fun-asr-nano" # ModelScope model repo, ms
94
  ]
95
 
96
  SENSEVOICE_MODEL_PATH_LIST = [
97
  "Fun-ASR/model/SenseVoiceSmall", # local path together with this hf space
98
- "FunAudioLLM/SenseVoiceSmall", # huggingface model repo
99
- "iic/SenseVoiceSmall" # ModelScope model repo
100
  ]
101
 
102
  class LogCapture(io.StringIO):
@@ -430,8 +409,6 @@ def get_model_options(pipeline_type):
430
  # Dictionary to store loaded models
431
  loaded_models = {}
432
 
433
-
434
- @spaces.GPU
435
  def transcribe_audio(audio_input, audio_url, proxy_url, proxy_username, proxy_password, pipeline_type, model_id, download_method, start_time=None, end_time=None, verbose=False):
436
  """
437
  Transcribes audio from a given source using SenseVoice.
@@ -516,7 +493,7 @@ def transcribe_audio(audio_input, audio_url, proxy_url, proxy_username, proxy_pa
516
  vad_kwargs={"max_single_segment_time": 30000},
517
  device=device,
518
  disable_update=True,
519
- hub=REPO_TYPE,
520
  )
521
  elif pipeline_type == "sensevoice":
522
  model = AutoModel(
@@ -681,20 +658,7 @@ with gr.Blocks() as iface:
681
  2. **Select Pipeline Type**: Choose from available pipelines:
682
  - **Fun-ASR-Nano** (default) - Large language model based ASR model
683
  - **SenseVoice** - CTC-based based ASR model with VAD
684
-
685
- 3. **Available Model Options**:
686
-
687
- **For Fun-ASR-Nano:**
688
- - `Fun-ASR/model` (local path, default)
689
- - `FunAudioLLM/fun-asr-nano` (HuggingFace)
690
- - `FunAudioLLM/fun-asr-nano` (ModelScope)
691
-
692
- **For SenseVoice:**
693
- - `Fun-ASR/model/SenseVoiceSmall` (local path, default for this pipeline)
694
- - `FunAudioLLM/SenseVoiceSmall` (HuggingFace)
695
- - `iic/SenseVoiceSmall` (ModelScope)
696
-
697
- 4. **Local Testing**: For development, you can use local paths as shown above
698
 
699
  Supported languages:
700
  - Fun-ASR-Nano: more than 50 languages and Chinese dialects.
 
1
  import os
 
2
  # from huggingface_hub import snapshot_download
3
+
4
+ REPO_TYPE = "hf"
5
+ if REPO_TYPE not in ["hf", "ms"]:
6
+ raise ValueError("REPO_TYPE must be either 'hf' for Hugging Face or 'ms' for ModelScope.")
7
+
8
+ if REPO_TYPE == "hf":
9
+ from huggingface_hub import snapshot_download
10
+ else:
11
+ from modelscope.hub.snapshot_download import snapshot_download
12
 
13
 
14
  # 1. 定义本地路径和远程仓库ID
15
  FUN_ASR_NANO_LOCAL_PATH = "./Fun-ASR/model"
16
+ FUN_ASR_NANO_REPO_ID = "FunAudioLLM/Fun-ASR-Nano-2512"
17
  SENSE_VOICE_SMALL_LOCAL_PATH = "./Fun-ASR/model/SenseVoiceSmall"
18
+ # SENSE_VOICE_SMALL_REPO_ID = "FunAudioLLM/SenseVoiceSmall"
19
+ # REPO_TYPE = "hf" # "hf" for Hugging Face, "ms" for ModelScope
20
+ SENSE_VOICE_SMALL_REPO_ID = "iic/SenseVoiceSmall"
21
 
 
 
 
22
 
23
+ if REPO_TYPE == "ms":
 
 
 
 
 
 
24
  FUN_ASR_NANO_REPO_ID = "FunAudioLLM/Fun-ASR-Nano-2512"
25
+ SENSE_VOICE_SMALL_REPO_ID = "iic/SenseVoiceSmall"
 
 
 
 
26
  else:
27
+ FUN_ASR_NANO_REPO_ID = "FunAudioLLM/Fun-ASR-Nano-2512"
28
+ SENSE_VOICE_SMALL_REPO_ID = "FunAudioLLM/SenseVoiceSmall"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
 
30
+ # 2. 检查本地是否存在,不存在则下载
31
  if not os.path.exists(FUN_ASR_NANO_LOCAL_PATH):
32
+ print(f"正在下载模型 Fun-ASR-Nano 到 {FUN_ASR_NANO_LOCAL_PATH} ...")
33
+ snapshot_download(
34
+ repo_id=FUN_ASR_NANO_REPO_ID,
35
+ local_dir=FUN_ASR_NANO_LOCAL_PATH,
36
+ ignore_patterns=["*.onnx"], # 如果你不需要onnx文件,可以过滤掉以节省时间和空间
37
+ )
38
+ print("模型下载完毕!")
39
  else:
40
  print("检测到本地模型文件,跳过下载。")
41
 
42
+
43
  if not os.path.exists(SENSE_VOICE_SMALL_LOCAL_PATH):
44
+ print(f"正在下载模型 {SENSE_VOICE_SMALL_REPO_ID} 到 {SENSE_VOICE_SMALL_LOCAL_PATH} ...")
45
+ snapshot_download(
46
+ repo_id=SENSE_VOICE_SMALL_REPO_ID,
47
+ local_dir=SENSE_VOICE_SMALL_LOCAL_PATH,
48
+ ignore_patterns=["*.onnx"], # 如果你不需要onnx文件,可以过滤掉以节省时间和空间
49
+ )
50
+ print("模型下载完毕!")
51
  else:
52
  print("检测到本地模型文件,跳过下载。")
53
 
 
72
  # Model configurations for Hugging Face deployment
73
  FUN_ASR_NANO_MODEL_PATH_LIST = [
74
  "Fun-ASR/model", # local path, ms
 
 
75
  ]
76
 
77
  SENSEVOICE_MODEL_PATH_LIST = [
78
  "Fun-ASR/model/SenseVoiceSmall", # local path together with this hf space
 
 
79
  ]
80
 
81
  class LogCapture(io.StringIO):
 
409
  # Dictionary to store loaded models
410
  loaded_models = {}
411
 
 
 
412
  def transcribe_audio(audio_input, audio_url, proxy_url, proxy_username, proxy_password, pipeline_type, model_id, download_method, start_time=None, end_time=None, verbose=False):
413
  """
414
  Transcribes audio from a given source using SenseVoice.
 
493
  vad_kwargs={"max_single_segment_time": 30000},
494
  device=device,
495
  disable_update=True,
496
+ hub='ms',
497
  )
498
  elif pipeline_type == "sensevoice":
499
  model = AutoModel(
 
658
  2. **Select Pipeline Type**: Choose from available pipelines:
659
  - **Fun-ASR-Nano** (default) - Large language model based ASR model
660
  - **SenseVoice** - CTC-based based ASR model with VAD
661
+ 3. **Local Testing**: For development, you can use local paths as shown above
 
 
 
 
 
 
 
 
 
 
 
 
 
662
 
663
  Supported languages:
664
  - Fun-ASR-Nano: more than 50 languages and Chinese dialects.