File size: 3,705 Bytes
f518bfd
dce4caf
484d808
 
 
f0965b5
 
484d808
 
dce4caf
484d808
 
 
 
f518bfd
 
 
 
484d808
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f518bfd
 
 
 
484d808
f518bfd
484d808
 
f0965b5
 
 
484d808
 
 
 
 
 
 
 
 
 
 
f518bfd
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
import gradio as gr

# 画像とMP3の情報
image_data = {
    "sikokumetan": {
        "webp": "default/sikokumetan.webp",
        "mp3": "default/sikokumetan.mp3"
    }
}

def on_image_select(image_name):
    # 画像が選択されたとき、対応するMP3ファイルを返す
    return image_data[image_name]["mp3"]

def voice_conversion(source_audio, reference_audio, steps, length_adjustment, cfg, use_f0_model, auto_f0, pitch_shift):
    # 音声変換のロジック(仮の関数)
    pass

if __name__ == "__main__":
    description = ("Zero-shot音声変換モデル(学習不要)。ローカルでの利用方法は[GitHubリポジトリ](https://github.com/Plachtaa/seed-vc)をご覧ください。"
                   "参考音声が25秒を超える場合、自動的に25秒にクリップされます。"
                   "また、元音声と参考音声の合計時間が30秒を超える場合、元音声は分割処理されます。")
    
    # 入力欄の定義
    inputs = [
        gr.Audio(type="filepath", label="元音声"),
        gr.Audio(type="filepath", label="参考音声"),
        gr.Slider(minimum=1, maximum=200, value=10, step=1, label="拡散ステップ数", info="デフォルトは10、50~100が最適な品質"),
        gr.Slider(minimum=0.5, maximum=2.0, step=0.1, value=1.0, label="長さ調整", info="1.0未満で速度を上げ、1.0以上で速度を遅くします"),
        gr.Slider(minimum=0.0, maximum=1.0, step=0.1, value=0.7, label="推論CFG率", info="わずかな影響があります"),
        gr.Checkbox(label="F0条件付きモデルを使用", value=False, info="歌声変換には必須です"),
        gr.Checkbox(label="F0自動調整", value=True, info="F0をおおよそ調整して目標音声に合わせます。F0条件付きモデル使用時にのみ有効です"),
        gr.Slider(label='音程変換', minimum=-24, maximum=24, step=1, value=0, info="半音単位の音程変換。F0条件付きモデル使用時にのみ有効です"),
    ]

    examples = [["examples/source/yae_0.wav", "examples/reference/dingzhen_0.wav", 25, 1.0, 0.7, False, True, 0],
                ["examples/source/jay_0.wav", "examples/reference/azuma_0.wav", 25, 1.0, 0.7, True, True, 0],
                ["examples/source/Wiz Khalifa,Charlie Puth - See You Again [vocals]_[cut_28sec].wav",
                 "examples/reference/teio_0.wav", 100, 1.0, 0.7, True, False, 0],
                ["examples/source/TECHNOPOLIS - 2085 [vocals]_[cut_14sec].wav",
                 "examples/reference/trump_0.wav", 50, 1.0, 0.7, True, False, -12],
                ]

    outputs = [gr.Audio(label="ストリーム出力音声", streaming=True, format='mp3'),
               gr.Audio(label="完全出力音声", streaming=False, format='wav')]

    # ギャラリーに渡す画像のパスリスト
    gallery_images = [image_data["sikokumetan"]["webp"]]  # 画像のファイルパスを直接渡す

    # ギャラリーを追加
    gallery = gr.Gallery(
        value=gallery_images,
        label="選択した画像に基づく参考音声",
        elem_id="image_gallery",
        interactive=True,
        grid=2  # 画像を2列に並べる
    )

    # ギャラリーの選択時にMP3ファイルを更新する処理
    gallery.change(fn=on_image_select, inputs=gallery, outputs=inputs[1])  # 参考音声を更新

    gr.Interface(fn=voice_conversion,
                 description=description,
                 inputs=inputs,
                 outputs=outputs,
                 title="Seed Voice Conversion",
                 examples=examples,
                 cache_examples=False,
                 ).launch()