Spaces:
Running
Running
cockolo terada
commited on
Update app.py
Browse files
app.py
CHANGED
|
@@ -1,16 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
import argparse
|
| 2 |
from pathlib import Path
|
| 3 |
|
| 4 |
import gradio as gr
|
| 5 |
import torch
|
| 6 |
|
| 7 |
-
# --- [変更点1] 必要な関数だけをインポート ---
|
| 8 |
# 拡張機能タブから必要なものだけをインポート
|
| 9 |
from gradio_tabs.single import create_synthesis_app
|
| 10 |
from gradio_tabs.merge import create_merge_app
|
| 11 |
|
| 12 |
-
# ---------------------------------------------
|
| 13 |
-
|
| 14 |
from config import get_path_config
|
| 15 |
from style_bert_vits2.constants import GRADIO_THEME, VERSION
|
| 16 |
from style_bert_vits2.nlp.japanese import pyopenjtalk_worker
|
|
@@ -27,37 +43,38 @@ update_dict()
|
|
| 27 |
|
| 28 |
parser = argparse.ArgumentParser()
|
| 29 |
parser.add_argument("--device", type=str, default="cuda")
|
| 30 |
-
|
| 31 |
-
|
|
|
|
|
|
|
| 32 |
parser.add_argument("--no_autolaunch", action="store_true")
|
| 33 |
-
parser.add_argument("--share", action="store_true")
|
| 34 |
|
| 35 |
args = parser.parse_args()
|
| 36 |
device = args.device
|
| 37 |
if device == "cuda" and not torch.cuda.is_available():
|
|
|
|
| 38 |
device = "cpu"
|
|
|
|
|
|
|
|
|
|
| 39 |
|
| 40 |
path_config = get_path_config()
|
|
|
|
|
|
|
|
|
|
| 41 |
model_holder = TTSModelHolder(Path(path_config.assets_root), device)
|
| 42 |
|
| 43 |
# 起動時にトップへスクロールさせるjsを追加
|
| 44 |
with gr.Blocks(theme=GRADIO_THEME, js="() => { window.scrollTo(0, 0); }") as app:
|
| 45 |
-
# タイトルを少し変更しても良いかもしれません
|
| 46 |
gr.Markdown(f"# Style-Bert-VITS2 拡張ツール (version {VERSION})")
|
| 47 |
|
| 48 |
-
# --- [変更点2] 表示したいタブだけを残す ---
|
| 49 |
with gr.Tabs():
|
| 50 |
with gr.Tab("拡張音声合成"):
|
| 51 |
-
# 拡張ツールの音声合成タブ (single.py)
|
| 52 |
create_synthesis_app(model_holder=model_holder)
|
| 53 |
with gr.Tab("モデルマージ"):
|
| 54 |
create_merge_app(model_holder=model_holder)
|
| 55 |
|
| 56 |
-
|
| 57 |
-
|
| 58 |
-
app.launch(
|
| 59 |
-
server_name=args.host,
|
| 60 |
-
server_port=args.port,
|
| 61 |
-
inbrowser=not args.no_autolaunch,
|
| 62 |
-
share=args.share,
|
| 63 |
-
)
|
|
|
|
| 1 |
+
# ===================================================================
|
| 2 |
+
# [最重要] アプリケーションの本体を読み込む前に、モデルのセットアップを実行
|
| 3 |
+
import initialize
|
| 4 |
+
import time
|
| 5 |
+
|
| 6 |
+
print("--- [1/3] Starting Model Setup Script ---")
|
| 7 |
+
start_time = time.time()
|
| 8 |
+
# Hugging Face Spacesでは推論のみ行うのが一般的なので、
|
| 9 |
+
# only_infer=True を指定して不要なモデルのダウンロードをスキップします。
|
| 10 |
+
# これにより起動が高速化します。
|
| 11 |
+
initialize.main(only_infer=True)
|
| 12 |
+
end_time = time.time()
|
| 13 |
+
print(f"--- [2/3] Model Setup Complete. Elapsed time: {end_time - start_time:.2f} seconds ---")
|
| 14 |
+
# ===================================================================
|
| 15 |
+
|
| 16 |
+
|
| 17 |
+
# [3/3] モデルの準備が完了したので、アプリケーションの本体を読み込んで起動
|
| 18 |
+
print("--- [3/3] Initializing and launching Gradio App... ---")
|
| 19 |
+
|
| 20 |
import argparse
|
| 21 |
from pathlib import Path
|
| 22 |
|
| 23 |
import gradio as gr
|
| 24 |
import torch
|
| 25 |
|
|
|
|
| 26 |
# 拡張機能タブから必要なものだけをインポート
|
| 27 |
from gradio_tabs.single import create_synthesis_app
|
| 28 |
from gradio_tabs.merge import create_merge_app
|
| 29 |
|
|
|
|
|
|
|
| 30 |
from config import get_path_config
|
| 31 |
from style_bert_vits2.constants import GRADIO_THEME, VERSION
|
| 32 |
from style_bert_vits2.nlp.japanese import pyopenjtalk_worker
|
|
|
|
| 43 |
|
| 44 |
parser = argparse.ArgumentParser()
|
| 45 |
parser.add_argument("--device", type=str, default="cuda")
|
| 46 |
+
# Hugging Face Spacesで動かす場合、hostとportはGradioが自動で設定するため、
|
| 47 |
+
# ここでの指定は通常不要です。
|
| 48 |
+
# parser.add_argument("--host", type=str, default="127.0.0.1")
|
| 49 |
+
# parser.add_argument("--port", type=int, default=None)
|
| 50 |
parser.add_argument("--no_autolaunch", action="store_true")
|
| 51 |
+
parser.add_argument("--share", action="store_true", help="Set to True to create a public link")
|
| 52 |
|
| 53 |
args = parser.parse_args()
|
| 54 |
device = args.device
|
| 55 |
if device == "cuda" and not torch.cuda.is_available():
|
| 56 |
+
print("CUDA not available, falling back to CPU.")
|
| 57 |
device = "cpu"
|
| 58 |
+
else:
|
| 59 |
+
print(f"Using device: {device}")
|
| 60 |
+
|
| 61 |
|
| 62 |
path_config = get_path_config()
|
| 63 |
+
|
| 64 |
+
# この時点で、initialize.pyが作成したモデルへのシンボリックリンクが
|
| 65 |
+
# Path(path_config.assets_root) 以下に存在しているはずです。
|
| 66 |
model_holder = TTSModelHolder(Path(path_config.assets_root), device)
|
| 67 |
|
| 68 |
# 起動時にトップへスクロールさせるjsを追加
|
| 69 |
with gr.Blocks(theme=GRADIO_THEME, js="() => { window.scrollTo(0, 0); }") as app:
|
|
|
|
| 70 |
gr.Markdown(f"# Style-Bert-VITS2 拡張ツール (version {VERSION})")
|
| 71 |
|
|
|
|
| 72 |
with gr.Tabs():
|
| 73 |
with gr.Tab("拡張音声合成"):
|
|
|
|
| 74 |
create_synthesis_app(model_holder=model_holder)
|
| 75 |
with gr.Tab("モデルマージ"):
|
| 76 |
create_merge_app(model_holder=model_holder)
|
| 77 |
|
| 78 |
+
# Hugging Face Spacesでは、share=Trueは不要(自動で公開URLが生成される)
|
| 79 |
+
# また、サーバー名とポートも指定しない方が安定します。
|
| 80 |
+
app.launch()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|