simler commited on
Commit
5218a1b
·
verified ·
1 Parent(s): 28b5db4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +14 -32
app.py CHANGED
@@ -25,42 +25,23 @@ except ImportError:
25
  inference_func = None
26
  if hasattr(core, "get_tts_model"):
27
  inference_func = core.get_tts_model
28
- print("👉 使用新版函数: get_tts_model")
29
  elif hasattr(core, "get_tts_wav"):
30
  inference_func = core.get_tts_wav
31
- print("👉 使用旧版函数: get_tts_wav")
32
 
33
- # --- 3. 自动寻找模型 (V5 - 增加文件大小检测) ---
34
  def find_real_model(pattern, search_path="."):
35
- print(f"🔍 开始搜索 {pattern} ...")
36
  candidates = []
37
-
38
  for root, dirs, files in os.walk(search_path):
39
  for file in files:
40
- # 必须包含文件名
41
- if pattern in file:
42
  path = os.path.join(root, file)
43
-
44
- # 排除垃圾文件
45
- if file.endswith(".lock"): continue
46
- if file.endswith(".metadata"): continue
47
-
48
- # 关键:检查文件大小 (小于 10MB 的肯定是假模型)
49
  size_mb = os.path.getsize(path) / (1024 * 1024)
50
- if size_mb < 10:
51
- print(f" Skipping 小文件: {file} ({size_mb:.2f} MB)")
52
- continue
53
-
54
- candidates.append((path, size_mb))
55
-
56
  if candidates:
57
- # 按大小降序排序,选最大的那个,绝对没错
58
  candidates.sort(key=lambda x: x[1], reverse=True)
59
- best_path = candidates[0][0]
60
- print(f"✅ 选中最大文件: {best_path} ({candidates[0][1]:.2f} MB)")
61
- return best_path
62
-
63
- print(f"❌ 未找到任何匹配 {pattern} 的大文件")
64
  return None
65
 
66
  gpt_path = find_real_model("s1v3.ckpt")
@@ -77,8 +58,6 @@ try:
77
  if hasattr(core, "change_sovits_weights"):
78
  core.change_sovits_weights(sovits_path=sovits_path)
79
  print("🎉 模型加载完成!")
80
- else:
81
- print("❌ 依然没找到模型,请检查 Files 里的文件下载情况。")
82
  except Exception as e:
83
  print(f"⚠️ 模型加载报错: {e}")
84
 
@@ -88,6 +67,8 @@ import gradio as gr
88
 
89
  REF_AUDIO = "ref.wav"
90
  REF_TEXT = "你好"
 
 
91
 
92
  def run_predict(text):
93
  if not os.path.exists(REF_AUDIO):
@@ -95,12 +76,15 @@ def run_predict(text):
95
 
96
  print(f"📥 任务: {text}")
97
  try:
 
 
 
98
  generator = inference_func(
99
  ref_wav_path=REF_AUDIO,
100
  prompt_text=REF_TEXT,
101
- prompt_language="zh",
102
  text=text,
103
- text_language="zh",
104
  how_to_cut="凑四句一切",
105
  top_k=5, top_p=1, temperature=1, ref_free=False
106
  )
@@ -119,9 +103,7 @@ def run_predict(text):
119
 
120
  # --- 6. 界面 ---
121
  with gr.Blocks() as app:
122
- gr.Markdown(f"### GPT-SoVITS V2 CPU Worker")
123
- gr.Markdown(f"GPT: `{os.path.basename(gpt_path) if gpt_path else 'Missing'}`")
124
- gr.Markdown(f"SoVITS: `{os.path.basename(sovits_path) if sovits_path else 'Missing'}`")
125
 
126
  with gr.Row():
127
  inp = gr.Textbox(label="文本", value="终于成功了,这真是不容易啊。")
 
25
  inference_func = None
26
  if hasattr(core, "get_tts_model"):
27
  inference_func = core.get_tts_model
 
28
  elif hasattr(core, "get_tts_wav"):
29
  inference_func = core.get_tts_wav
 
30
 
31
+ # --- 3. 自动寻找模型 ---
32
  def find_real_model(pattern, search_path="."):
 
33
  candidates = []
 
34
  for root, dirs, files in os.walk(search_path):
35
  for file in files:
36
+ if pattern in file and not file.endswith(".lock") and not file.endswith(".metadata"):
 
37
  path = os.path.join(root, file)
 
 
 
 
 
 
38
  size_mb = os.path.getsize(path) / (1024 * 1024)
39
+ if size_mb > 10:
40
+ candidates.append((path, size_mb))
 
 
 
 
41
  if candidates:
 
42
  candidates.sort(key=lambda x: x[1], reverse=True)
43
+ print(f"✅ 选中模型: {candidates[0][0]}")
44
+ return candidates[0][0]
 
 
 
45
  return None
46
 
47
  gpt_path = find_real_model("s1v3.ckpt")
 
58
  if hasattr(core, "change_sovits_weights"):
59
  core.change_sovits_weights(sovits_path=sovits_path)
60
  print("🎉 模型加载完成!")
 
 
61
  except Exception as e:
62
  print(f"⚠️ 模型加载报错: {e}")
63
 
 
67
 
68
  REF_AUDIO = "ref.wav"
69
  REF_TEXT = "你好"
70
+ # 关键修改:必须用中文名称,不能用 zh
71
+ REF_LANG = "中文"
72
 
73
  def run_predict(text):
74
  if not os.path.exists(REF_AUDIO):
 
76
 
77
  print(f"📥 任务: {text}")
78
  try:
79
+ # 这里的参数名根据不同版本可能略有不同
80
+ # 我们按照最常见的旧版逻辑传递
81
+ # 注意:text_language 也改成了 "中文"
82
  generator = inference_func(
83
  ref_wav_path=REF_AUDIO,
84
  prompt_text=REF_TEXT,
85
+ prompt_language=REF_LANG,
86
  text=text,
87
+ text_language="中文",
88
  how_to_cut="凑四句一切",
89
  top_k=5, top_p=1, temperature=1, ref_free=False
90
  )
 
103
 
104
  # --- 6. 界面 ---
105
  with gr.Blocks() as app:
106
+ gr.Markdown(f"### GPT-SoVITS V2 (CPU Worker)")
 
 
107
 
108
  with gr.Row():
109
  inp = gr.Textbox(label="文本", value="终于成功了,这真是不容易啊。")