simler commited on
Commit
9802f0b
·
verified ·
1 Parent(s): f6d730c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +45 -29
app.py CHANGED
@@ -2,49 +2,65 @@ import os
2
  import logging
3
  import builtins
4
 
 
5
  builtins.input = lambda prompt="": "y"
6
  logging.basicConfig(level=logging.INFO)
7
- logger = logging.getLogger("GenieTTS")
 
 
8
  os.environ["GENIE_DATA_DIR"] = "/app/GenieData"
9
 
10
  def prepare_environment():
 
11
  from huggingface_hub import snapshot_download
12
 
13
- logger.info("📦 下载 GenieData...")
14
  if not os.path.exists("/app/GenieData/G2P"):
15
- snapshot_download(
16
- repo_id="High-Logic/Genie",
17
- allow_patterns=["GenieData/*"],
18
- local_dir="/app",
19
- )
20
- logger.info("✅ 环境准备完成!")
 
 
 
 
21
 
22
  def start_service():
 
23
  prepare_environment()
24
 
25
- logger.info("🚀 启动服务...")
26
- import genie_tts as genie
27
 
28
- # Step 1: 加载角色模型
29
- logger.info("📦 加载角色模型...")
30
- genie.load_character(
31
- character_name="default",
32
- onnx_model_dir="/app",
33
- language="zh"
34
- )
35
- logger.info("✅ 模型加载成功!")
36
 
37
- # Step 2: 设置参考音频 (必须!)
38
- logger.info("🎤 设置参考音频...")
39
- genie.set_reference_audio(
40
- character_name="default",
41
- audio_path="/app/ref.wav",
42
- audio_text="图书馆楼上的炼金工坊,可以随意使用哦?不过进去之前记得敲门,如果撞见什么不该见到的东西那就麻烦了。" # ⚠️ 提示:这里在那个版本也是占位符
43
- )
44
- logger.info(" 参考音频设置成功!")
45
-
46
- # Step 3: 启动服务器
47
- genie.start_server(host="0.0.0.0", port=7860, workers=1)
 
 
 
 
 
 
 
 
 
 
 
 
 
48
 
49
  if __name__ == "__main__":
50
  start_service()
 
2
  import logging
3
  import builtins
4
 
5
+ # 1. 基础设置:强制静默输入,防止部署卡住
6
  builtins.input = lambda prompt="": "y"
7
  logging.basicConfig(level=logging.INFO)
8
+ logger = logging.getLogger("GenieTTS_Final")
9
+
10
+ # 设置环境变量指向核心数据目录
11
  os.environ["GENIE_DATA_DIR"] = "/app/GenieData"
12
 
13
  def prepare_environment():
14
+ """下载并准备 G2P、HuBERT 等必要权重"""
15
  from huggingface_hub import snapshot_download
16
 
17
+ logger.info("📦 校验/下载 GenieData 核心依赖...")
18
  if not os.path.exists("/app/GenieData/G2P"):
19
+ try:
20
+ snapshot_download(
21
+ repo_id="High-Logic/Genie",
22
+ allow_patterns=["GenieData/*"],
23
+ local_dir="/app",
24
+ local_dir_use_symlinks=False
25
+ )
26
+ logger.info("✅ GenieData 下载完毕")
27
+ except Exception as e:
28
+ logger.error(f"❌ 下载 GenieData 失败: {e}")
29
 
30
  def start_service():
31
+ """启动服务并预加载模型"""
32
  prepare_environment()
33
 
34
+ logger.info("🚀 启动 Genie-TTS 服务...")
35
+ import genie_tts
36
 
37
+ # 模型文件在仓库根目录,因此路径为 /app
38
+ model_path = "/app"
 
 
 
 
 
 
39
 
40
+ try:
41
+ # Step 1: 加载角色模型
42
+ logger.info(f"⚡ 正在内存中加载模型: {model_path}")
43
+ genie_tts.load_character("default", model_path, "zh")
44
+
45
+ # Step 2: 关键!启动时自动设置默认参考音频
46
+ # 即使你以后通过 API 换,这里设置一个初始值能保证 Space 启动即完成“上膛”
47
+ logger.info("🎤 设置默认参考音频...")
48
+ genie_tts.set_reference_audio(
49
+ character_name="default",
50
+ audio_path="/app/ref.wav",
51
+ audio_text="我今天就不写了!开干!烦死了,哎呀干不完的活",
52
+ language="zh"
53
+ )
54
+ logger.info("✅✅✅ 模型与音频全部就绪!")
55
+
56
+ # Step 3: 启动 FastAPI 服务器
57
+ # HF Space 必须使用 7860 端口
58
+ genie_tts.start_server(host="0.0.0.0", port=7860, workers=1)
59
+
60
+ except Exception as e:
61
+ logger.error(f"❌ 启动报错: {e}")
62
+ import traceback
63
+ traceback.print_exc()
64
 
65
  if __name__ == "__main__":
66
  start_service()