import gradio as gr import sys import os import logging DEFAULT_PORT = 7860 MAX_PORT_ATTEMPTS = 10 # Set up logging logging.getLogger("uvicorn").setLevel(logging.WARNING) logging.getLogger("httpx").setLevel(logging.WARNING) # Add current directory to sys.path now_dir = os.getcwd() sys.path.append(now_dir) # Zluda hijack import rvc.lib.zluda # Import Tabs from tabs.inference.inference import inference_tab from tabs.train.train import train_tab from tabs.extra.extra import extra_tab from tabs.report.report import report_tab from tabs.download.download import download_tab from tabs.tts.tts import tts_tab from tabs.voice_blender.voice_blender import voice_blender_tab from tabs.plugins.plugins import plugins_tab from tabs.settings.settings import settings_tab # Run prerequisites from core import run_prerequisites_script run_prerequisites_script( pretraineds_hifigan=True, models=True, exe=True, ) # Initialize i18n from assets.i18n.i18n import I18nAuto i18n = I18nAuto() # Start Discord presence if enabled from tabs.settings.sections.presence import load_config_presence if load_config_presence(): from assets.discord_presence import RPCManager RPCManager.start_presence() # Check installation import assets.installation_checker as installation_checker installation_checker.check_installation() # Load theme import assets.themes.loadThemes as loadThemes my_applio = loadThemes.load_theme() or "ParityError/Interstellar" #------------------- import json from rvc.lib.tools.model_download import model_download_pipeline # JSONデータを解析する関数 def process_model_data(json_data): try: # JSONデータをPythonの辞書型に変換 data = json.loads(json_data) # "model_data"キーにアクセス model_data = data.get("model_data", []) # 各モデルデータに対して処理を実行 for model in model_data: if len(model) >= 3: # URLが存在するか確認 version, name, zip_url, *_ = model model_download_pipeline(zip_url) except json.JSONDecodeError as e: print(f"JSON解析エラー: {e}") # 使用例 json_data = '''{ "model_data":[ ["v1", "ayaka-jp", "https://huggingface.co/ArkanDash/rvc-genshin-impact/resolve/main/prezipped/v1/ayaka-jp%20100%20epochs%2040k.zip", "https://static.wikia.nocookie.net/gensin-impact/images/d/d0/Character_Kamisato_Ayaka_Full_Wish.png"], ["v1", "ayato-jp", "https://huggingface.co/ArkanDash/rvc-genshin-impact/resolve/main/prezipped/v1/ayato-jp%20100%20epochs%2040k.zip", "https://static.wikia.nocookie.net/gensin-impact/images/c/ce/Character_Kamisato_Ayato_Full_Wish.png"] ], "list": [ "ayaka-jp", "ayato-jp" ] }''' process_model_data(json_data) #---------- # Define Gradio interface with gr.Blocks( theme=my_applio, title="Applio", css="footer{display:none !important}" ) as Applio: gr.Markdown("# Applio") gr.Markdown( i18n( "A simple, high-quality voice conversion tool focused on ease of use and performance." ) ) gr.Markdown( i18n( "[Support](https://discord.gg/urxFjYmYYh) — [GitHub](https://github.com/IAHispano/Applio)" ) ) with gr.Tab(i18n("Inference")): inference_tab() with gr.Tab(i18n("Training")): train_tab() with gr.Tab(i18n("TTS")): tts_tab() with gr.Tab(i18n("Voice Blender")): voice_blender_tab() with gr.Tab(i18n("Plugins")): plugins_tab() with gr.Tab(i18n("Download")): download_tab() with gr.Tab(i18n("Report a Bug")): report_tab() with gr.Tab(i18n("Extra")): extra_tab() with gr.Tab(i18n("Settings")): settings_tab() gr.Markdown( """