Spaces:
Running
Running
cockolo terada
commited on
Update gradio_tabs/single.py
Browse files- gradio_tabs/single.py +21 -17
gradio_tabs/single.py
CHANGED
@@ -414,9 +414,22 @@ def process_single_synthesis_webui(
|
|
414 |
|
415 |
|
416 |
def create_synthesis_app(model_holder: TTSModelHolder) -> gr.Blocks:
|
417 |
-
# ▼▼▼ 変更点:
|
418 |
MERGER_CACHE_PATH = Path("/tmp/sbv2_merger_cache")
|
419 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
420 |
# ▲▲▲ 変更点 ▲▲▲
|
421 |
|
422 |
custom_css = """
|
@@ -514,9 +527,7 @@ def create_synthesis_app(model_holder: TTSModelHolder) -> gr.Blocks:
|
|
514 |
|
515 |
with gr.Column(scale=1):
|
516 |
with gr.Row():
|
517 |
-
# ▼▼▼ 変更点: visibleプロパティの参照先を変更 ▼▼▼
|
518 |
use_symlink_mode_checkbox = gr.Checkbox(label="融☆合モデルを使う", value=False, interactive=True, scale=3, visible=is_merger_cache_available)
|
519 |
-
# ▲▲▲ 変更点 ▲▲▲
|
520 |
refresh_model_list_button = gr.Button("再読込", scale=1)
|
521 |
selected_model_dropdown = gr.Dropdown(label="話者", choices=[], value=None, interactive=True)
|
522 |
current_styles_dropdown = gr.Dropdown(label="スタイル", choices=[], type="value", interactive=True)
|
@@ -625,9 +636,7 @@ def create_synthesis_app(model_holder: TTSModelHolder) -> gr.Blocks:
|
|
625 |
|
626 |
def action_refresh_model_list(use_symlink_mode: bool):
|
627 |
"""モデルリストを再読み込みし、UIとバックエンドの状態を同期させる。"""
|
628 |
-
# ▼▼▼ 変更点: 検索パスを変更 ▼▼▼
|
629 |
MERGER_CACHE_PATH = Path("/tmp/sbv2_merger_cache")
|
630 |
-
# ▲▲▲ 変更点 ▲▲▲
|
631 |
|
632 |
# 既存のシンボリックリンクをクリアする処理
|
633 |
if assets_root_path.exists():
|
@@ -638,7 +647,6 @@ def create_synthesis_app(model_holder: TTSModelHolder) -> gr.Blocks:
|
|
638 |
except OSError as e:
|
639 |
print(f"Failed to remove symlink {item}: {e}")
|
640 |
|
641 |
-
# ▼▼▼ 変更点: 新しい検索パスを参照してシンボリックリンクを作成 ▼▼▼
|
642 |
# シンボリックリンクモードが有効なら、新しいリンクを作成する処理
|
643 |
if use_symlink_mode:
|
644 |
if MERGER_CACHE_PATH.exists() and MERGER_CACHE_PATH.is_dir():
|
@@ -652,7 +660,6 @@ def create_synthesis_app(model_holder: TTSModelHolder) -> gr.Blocks:
|
|
652 |
print(f"Warning: Could not create symlink for {item.name}: {e}")
|
653 |
else:
|
654 |
print(f"Warning: Symlink mode is on, but {MERGER_CACHE_PATH} does not exist or is not a directory.")
|
655 |
-
# ▲▲▲ 変更点 ▲▲▲
|
656 |
|
657 |
# バックエンドのリストを更新
|
658 |
model_holder.refresh()
|
@@ -1184,28 +1191,25 @@ def create_synthesis_app(model_holder: TTSModelHolder) -> gr.Blocks:
|
|
1184 |
if __name__ == "__main__":
|
1185 |
if Path("model_assets").exists(): shutil.rmtree("model_assets")
|
1186 |
|
1187 |
-
#
|
1188 |
merger_cache_path = Path("/tmp/sbv2_merger_cache")
|
1189 |
-
# ▲▲▲ 変更点 ▲▲▲
|
1190 |
|
1191 |
mock_model_holder = TTSModelHolder()
|
1192 |
print(f"Initial models loaded by TTSModelHolder: {mock_model_holder.model_names}")
|
|
|
|
|
1193 |
app = create_synthesis_app(mock_model_holder)
|
1194 |
|
1195 |
assets_dir_path = assets_root_path.resolve()
|
1196 |
assets_dir_path.mkdir(exist_ok=True)
|
1197 |
allowed_paths = [str(assets_dir_path)]
|
1198 |
|
1199 |
-
#
|
1200 |
-
if sys.platform != "win32" and merger_cache_path.
|
1201 |
allowed_paths.append(str(merger_cache_path.resolve()))
|
1202 |
-
# ▲▲▲ 変更点 ▲▲▲
|
1203 |
|
1204 |
output_dir_path = Path("output").resolve()
|
1205 |
-
|
1206 |
-
(output_dir_path / "merge").mkdir(exist_ok=True, parents=True)
|
1207 |
-
(output_dir_path / "creative").mkdir(exist_ok=True, parents=True)
|
1208 |
-
(output_dir_path / "creative_merge").mkdir(exist_ok=True, parents=True)
|
1209 |
allowed_paths.append(str(output_dir_path))
|
1210 |
allowed_paths.append(tempfile.gettempdir())
|
1211 |
|
|
|
414 |
|
415 |
|
416 |
def create_synthesis_app(model_holder: TTSModelHolder) -> gr.Blocks:
|
417 |
+
# ▼▼▼ 変更点: 融合モデルのキャッシュディレクトリを定義し、存在しない場合は作成する ▼▼▼
|
418 |
MERGER_CACHE_PATH = Path("/tmp/sbv2_merger_cache")
|
419 |
+
|
420 |
+
is_merger_cache_available = False
|
421 |
+
if sys.platform != "win32":
|
422 |
+
try:
|
423 |
+
# ディレクトリが存在しない場合に作成を試みる
|
424 |
+
MERGER_CACHE_PATH.mkdir(parents=True, exist_ok=True)
|
425 |
+
# 最終的な可用性をチェック
|
426 |
+
is_merger_cache_available = MERGER_CACHE_PATH.is_dir()
|
427 |
+
if is_merger_cache_available:
|
428 |
+
print(f"Merger cache directory is available at: {MERGER_CACHE_PATH}")
|
429 |
+
else:
|
430 |
+
print(f"Warning: Merger cache path {MERGER_CACHE_PATH} exists but is not a directory.")
|
431 |
+
except OSError as e:
|
432 |
+
print(f"Warning: Could not create or access merger cache directory {MERGER_CACHE_PATH}: {e}")
|
433 |
# ▲▲▲ 変更点 ▲▲▲
|
434 |
|
435 |
custom_css = """
|
|
|
527 |
|
528 |
with gr.Column(scale=1):
|
529 |
with gr.Row():
|
|
|
530 |
use_symlink_mode_checkbox = gr.Checkbox(label="融☆合モデルを使う", value=False, interactive=True, scale=3, visible=is_merger_cache_available)
|
|
|
531 |
refresh_model_list_button = gr.Button("再読込", scale=1)
|
532 |
selected_model_dropdown = gr.Dropdown(label="話者", choices=[], value=None, interactive=True)
|
533 |
current_styles_dropdown = gr.Dropdown(label="スタイル", choices=[], type="value", interactive=True)
|
|
|
636 |
|
637 |
def action_refresh_model_list(use_symlink_mode: bool):
|
638 |
"""モデルリストを再読み込みし、UIとバックエンドの状態を同期させる。"""
|
|
|
639 |
MERGER_CACHE_PATH = Path("/tmp/sbv2_merger_cache")
|
|
|
640 |
|
641 |
# 既存のシンボリックリンクをクリアする処理
|
642 |
if assets_root_path.exists():
|
|
|
647 |
except OSError as e:
|
648 |
print(f"Failed to remove symlink {item}: {e}")
|
649 |
|
|
|
650 |
# シンボリックリンクモードが有効なら、新しいリンクを作成する処理
|
651 |
if use_symlink_mode:
|
652 |
if MERGER_CACHE_PATH.exists() and MERGER_CACHE_PATH.is_dir():
|
|
|
660 |
print(f"Warning: Could not create symlink for {item.name}: {e}")
|
661 |
else:
|
662 |
print(f"Warning: Symlink mode is on, but {MERGER_CACHE_PATH} does not exist or is not a directory.")
|
|
|
663 |
|
664 |
# バックエンドのリストを更新
|
665 |
model_holder.refresh()
|
|
|
1191 |
if __name__ == "__main__":
|
1192 |
if Path("model_assets").exists(): shutil.rmtree("model_assets")
|
1193 |
|
1194 |
+
# このパスは create_synthesis_app 内で定義・作成されるものと一致させます
|
1195 |
merger_cache_path = Path("/tmp/sbv2_merger_cache")
|
|
|
1196 |
|
1197 |
mock_model_holder = TTSModelHolder()
|
1198 |
print(f"Initial models loaded by TTSModelHolder: {mock_model_holder.model_names}")
|
1199 |
+
|
1200 |
+
# この中で merger_cache_path が (必要なら) 作成されます
|
1201 |
app = create_synthesis_app(mock_model_holder)
|
1202 |
|
1203 |
assets_dir_path = assets_root_path.resolve()
|
1204 |
assets_dir_path.mkdir(exist_ok=True)
|
1205 |
allowed_paths = [str(assets_dir_path)]
|
1206 |
|
1207 |
+
# Gradioにキャッシュディレクトリへのアクセスを許可します
|
1208 |
+
if sys.platform != "win32" and merger_cache_path.is_dir():
|
1209 |
allowed_paths.append(str(merger_cache_path.resolve()))
|
|
|
1210 |
|
1211 |
output_dir_path = Path("output").resolve()
|
1212 |
+
output_dir_path.mkdir(exist_ok=True, parents=True)
|
|
|
|
|
|
|
1213 |
allowed_paths.append(str(output_dir_path))
|
1214 |
allowed_paths.append(tempfile.gettempdir())
|
1215 |
|