Spaces:
Running
Running
| 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 | |