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("""
Banner
""") 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(""" """) return app