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 | |