cockolo terada commited on
Commit
60eee72
·
verified ·
1 Parent(s): c520dc8

Update gradio_tabs/single.py

Browse files
Files changed (1) hide show
  1. 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
- # ▼▼▼ 変更点: 融合モデルの検索パスを/tmp/sbv2_merger_cacheに変更 ▼▼▼
418
  MERGER_CACHE_PATH = Path("/tmp/sbv2_merger_cache")
419
- is_merger_cache_available = sys.platform != "win32" and MERGER_CACHE_PATH.exists() and MERGER_CACHE_PATH.is_dir()
 
 
 
 
 
 
 
 
 
 
 
 
 
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
- # ▼▼▼ 変更点: パスを/tmp/sbv2_merger_cacheに変更 ▼▼▼
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.exists():
1201
  allowed_paths.append(str(merger_cache_path.resolve()))
1202
- # ▲▲▲ 変更点 ▲▲▲
1203
 
1204
  output_dir_path = Path("output").resolve()
1205
- (output_dir_path / "normal").mkdir(exist_ok=True, parents=True)
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