import gradio as gr import os import requests from tqdm import tqdm from svc_inference import main from whisper.inference import check_and_download_model def run_main(audio_file,shift): # 固定の引数を設定 class Args: pass args = Args() args.config = "configs/base.yaml" args.model = "./vits_pretrain/sovits5.0.pretrain.pth" args.spk = "./configs/singers/singer0001.npy" args.wave = audio_file args.shift = shift # オプショナルパラメータのデフォルト値設定 args.ppg = None args.vec = None args.pit = None args.enable_retrieval = False args.retrieval_index_prefix = "" args.retrieval_ratio = 0.5 args.n_retrieval_vectors = 3 args.hubert_index_path = None args.whisper_index_path = None args.debug = False try: main(args) return "svc_out.wav" # 音声ファイルのパスを返す except Exception as e: return None # Gradio インターフェースの作成 with gr.Blocks() as demo: gr.Markdown("# SVC 音声変換システム") # 入力音声のアップロード input_audio = gr.Audio( label="変換したい音声をアップロード", type="filepath" # ファイルパスとして取得 ) # Pitch シフトのスライダー shift = gr.Slider( minimum=-12, maximum=12, value=0, step=1, label="Pitch Shift(-12から+12の半音)" ) # ボタン run_btn = gr.Button(value="音声変換を実行", variant="primary", size="lg") # 出力表示用 output_audio = gr.Audio(label="変換後の音声") run_btn.click( fn=run_main, inputs=[input_audio, shift], outputs=[output_audio] ) # アプリケーションの起動 if __name__ == "__main__": demo.launch()