File size: 4,309 Bytes
63dfe54
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
import gradio as gr
from themes import IndonesiaTheme

import gradio as gr

def create_interface(models, tts_voices, tts_func):
    initial_md = """
    # TTS-RVC-Tokoh Indonesia

    Pembuktian algoritma **Retrieval-based Voice Conversion (RVC)** dan teknologi **Edge TTS** yang dapat membuat clone dari suara tokoh-tokoh penting di Indonesia. 

    **Perhatian:** Harap tidak menyalahgunakan teknologi ini.
    """

    app = gr.Blocks(theme=IndonesiaTheme(), title="TTS-RVC-Tokoh Indonesia")
    with app:
        # Tambahkan banner di bagian atas
        gr.HTML("""
        <div style="text-align: center; margin-top: 20px;">
            <img src="https://i.ibb.co.com/dm13YjJ/banner1.jpg" alt="Banner" style="width: 100%; max-width: 1200px; border-radius: 10px;">
        </div>
        """)
        gr.Markdown(initial_md)
        with gr.Row():
            with gr.Column():
                model_name = gr.Dropdown(
                    label="Model",
                    choices=models,
                    value=models[0],
                )
                f0_key_up = gr.Number(
                    label="Tune (+12 = 1 oktaf dari edge-tts, nilai terbaik tergantung pada model dan pembicara)",
                    value=2,
                )
            with gr.Column():
                f0_method = gr.Radio(
                    label="Metode ekstraksi pitch (pm: sangat cepat, kualitas rendah, rmvpe: sedikit lambat, kualitas tinggi)",
                    choices=["pm", "rmvpe"],  # harvest and crepe terlalu lambat
                    value="rmvpe",
                    interactive=True,
                )
                index_rate = gr.Slider(
                    minimum=0,
                    maximum=1,
                    label="Tingkat indeks",
                    value=0.5,
                    interactive=True,
                )
                protect0 = gr.Slider(
                    minimum=0,
                    maximum=0.5,
                    label="Perlindungan",
                    value=0.33,
                    step=0.01,
                    interactive=True,
                )
        with gr.Row():
            with gr.Column():
                tts_voice = gr.Dropdown(
                    label="Pembicara Edge-tts (format: bahasa-Negara-Nama-Jenis Kelamin), pastikan jenis kelamin cocok dengan model",
                    choices=tts_voices,
                    allow_custom_value=False,
                    value="id-ID-ArdiNeural-Male",
                )
                speed = gr.Slider(
                    minimum=-100,
                    maximum=100,
                    label="Kecepatan bicara (%)",
                    value=0,
                    step=10,
                    interactive=True,
                )
                tts_text = gr.Textbox(label="Teks Input", value="Konversi dari teks ke suara dalam bahasa Indonesia.")
            with gr.Column():
                but0 = gr.Button("โœ… Konversi Suara", variant="primary")
                info_text = gr.Textbox(label="Informasi Output")
            with gr.Column():
                edge_tts_output = gr.Audio(label="Suara Edge", type="filepath")
                tts_output = gr.Audio(label="Hasil")
            but0.click(
                tts_func,
                [
                    model_name,
                    speed,
                    tts_text,
                    tts_voice,
                    f0_key_up,
                    f0_method,
                    index_rate,
                    protect0,
                ],
                [info_text, edge_tts_output, tts_output],
            )
        with gr.Row():
            examples = gr.Examples(
                examples_per_page=100,
                examples=[
                    ["Ini adalah demo percobaan menggunakan Bahasa Indonesia untuk pria.", "jokowi"],
                    ["Ini adalah teks percobaan menggunakan Bahasa Indonesia pada wanita.", "prabowo"],
                ],
                inputs=[tts_text, tts_voice],
            )
        
        # Tambahkan footer di bagian bawah
        gr.HTML("""
        <footer style="text-align: center; margin-top: 20px; color:silver;">
            Energi Semesta Digital ยฉ 2024 __drat. | ๐Ÿ‡ฎ๐Ÿ‡ฉ Untuk Indonesia Jaya!
        </footer>
        """)

    return app