File size: 2,811 Bytes
7138043
bb47651
90a9c82
 
 
 
7138043
 
90a9c82
 
 
 
 
 
 
 
7138043
91ccc0d
90a9c82
bb47651
 
 
90a9c82
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1f68b8e
 
 
90a9c82
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr

# ギャラリーの画像と対応するMP3ファイル
gallery_data = [
    {
        "image": "default/sikokumetan.webp", 
        "mp3": "default/sikokumetan.mp3"
    }
]

# ギャラリーの画像が選択された際の処理
def on_image_select(image_path):
    # 画像に対応するMP3を取得
    for item in gallery_data:
        if item["image"] == image_path:
            return item["mp3"]
    return None

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条件付きモデル使用時にのみ有効です"),
    ]

    # ギャラリーコンポーネントの追加
    gallery = gr.Gallery(
        value=[item["image"] for item in gallery_data],  # ギャラリーに表示する画像を指定
        label="参考音声選択画像",
        interactive=True,
        columns=3  # 3列で表示
    )

    # ギャラリー画像が選択されたときにMP3を自動で設定
    def update_reference_audio(selected_image):
        mp3_path = on_image_select(selected_image)
        return mp3_path

    # 参考音声を選択するためのインターフェースを更新
    gr.Interface(
        fn=voice_conversion,
        description=description,
        inputs=[*inputs, gallery],  # ギャラリーを追加
        outputs=outputs,
        title="Seed Voice Conversion",
        examples=examples,
        cache_examples=False,
    ).launch()