File size: 1,886 Bytes
9791162
71dda67
 
 
 
16f1b93
ad51a72
16f1b93
9791162
ad51a72
6079784
 
 
 
 
 
 
 
ad51a72
6079784
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ad51a72
6079784
ad51a72
9791162
3df32b6
9791162
6079784
9791162
ad51a72
 
 
 
 
3df32b6
6079784
 
 
 
 
 
 
 
 
ad51a72
 
 
6079784
ff5a46e
 
71dda67
6079784
 
ad51a72
 
9791162
 
 
 
ad51a72
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
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()