Spaces:
Sleeping
Sleeping
File size: 1,885 Bytes
432fe24 54ca5b1 432fe24 54ca5b1 b23ef02 54ca5b1 b23ef02 432fe24 54ca5b1 432fe24 |
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 |
import gradio as gr
import pandas as pd
import glob
from backend import translate_to_javanese, text_to_speech
# Load cerita
cerita_data = []
for file in glob.glob("cerita/*.csv"):
df = pd.read_csv(file)
for _, row in df.iterrows():
cerita_data.append({
"judul": row["judul"],
"provinsi": row["provinsi"],
"id_teks": row["id_teks"],
"teks": row["teks"]
})
cerita_df = pd.DataFrame(cerita_data)
# Fungsi untuk Gradio
def process(provinsi, judul):
rows = cerita_df[(cerita_df["provinsi"] == provinsi) & (cerita_df["judul"] == judul)]
rows = rows.sort_values(by="id_teks")
teks_list = rows["teks"].tolist()
hasil_list = [translate_to_javanese(paragraf) for paragraf in teks_list]
teks_utuh = "\n\n".join(teks_list)
hasil_terjemahan_utuh = "\n\n".join(hasil_list)
sampling_rate, audio = text_to_speech(hasil_terjemahan_utuh)
return teks_utuh, hasil_terjemahan_utuh, (sampling_rate, audio)
# UI Gradio
with gr.Blocks() as demo:
gr.Markdown("## Aplikasi Penerjemahan Cerita Rakyat")
provinsi_dropdown = gr.Dropdown(label="Pilih Provinsi", choices=sorted(cerita_df["provinsi"].unique()))
judul_dropdown = gr.Dropdown(label="Pilih Cerita")
btn = gr.Button("Terjemahkan")
input_area = gr.Textbox(label="Cerita Bahasa Indonesia", lines=10)
translated_area = gr.Textbox(label="Cerita Bahasa Jawa", lines=10)
audio_out = gr.Audio(label="Audio", type="numpy")
def update_judul(provinsi):
filtered = cerita_df[cerita_df["provinsi"] == provinsi]
return gr.update(choices=sorted(filtered["judul"].unique()))
provinsi_dropdown.change(fn=update_judul, inputs=provinsi_dropdown, outputs=judul_dropdown)
btn.click(fn=process, inputs=[provinsi_dropdown, judul_dropdown], outputs=[input_area, translated_area, audio_out])
demo.launch()
|