elfgk's picture
Update app.py
ef00039 verified
import gradio as gr
import os
from gtts import gTTS
from datetime import datetime
def text_to_speech(file, text_input, lang_input):
# Kullanıcı dosya yüklediyse, dosyadan metin oku
if file is not None:
try:
with open(file.name, 'r', encoding='utf-8') as f:
metin = f.read()
except Exception as e:
return f"Dosya okunamadı: {e}"
# Dosya yoksa ve kullanıcı doğrudan metin girdiyse, metni kullan
elif text_input:
metin = text_input
else:
return "Lütfen bir dosya yükleyin veya metin girin."
try:
# gTTS nesnesini oluştur
kayit = gTTS(text=metin, lang=lang_input, slow=False)
dosya_adi = f"ses_{lang_input}_{datetime.now().strftime('%Y%m%d_%H%M%S')}.mp3"
kayit.save(dosya_adi)
# Ses dosyasının yolunu döndür
if os.path.exists(dosya_adi):
return dosya_adi # Bu dosyayı indirme linki olarak döndüreceğiz
else:
return "Ses kaydedilemedi."
except Exception as e:
return f"Bir hata oluştu: {e}"
# Gradio arayüzü
with gr.Blocks() as demo:
gr.Markdown("# Metni veya Dosyayı Seslendirme Uygulaması")
with gr.Row():
file_input = gr.File(label="Metin Dosyasını Yükle (.txt)")
text_input = gr.Textbox(label="Metin Girin", placeholder="Seslendirmek istediğiniz metni buraya yazın.")
lang_input = gr.Radio(["tr", "en", "fr"], label="Dil Seçimi", value="tr")
output = gr.Audio(label="Ses Dosyası", type="filepath", interactive=False)
submit_button = gr.Button("Seslendir")
submit_button.click(
fn=text_to_speech,
inputs=[file_input, text_input, lang_input],
outputs=output
)
# Uygulamayı çalıştır
demo.launch(share=True)