TamerTokgoz's picture
Update app.py
8f81deb verified
import streamlit as st
import pandas as pd
import numpy as np
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from deep_translator import GoogleTranslator
from gtts import gTTS
import os
# Sayfa Ayarları (Mobil uyumlu)
st.set_page_config(page_title="ML Dil Asistanı", layout="centered")
@st.cache_resource
def train_ml_model():
# 1. Veri Yükleme
data = pd.read_csv("LangDetect.csv")
# 2. ML Hazırlık
cv = CountVectorizer()
X = cv.fit_transform(data["Text"])
y = data["language"]
# 3. Model Eğitimi (Naive Bayes)
model = MultinomialNB()
model.fit(X, y)
return model, cv
# Modeli ve Vectorizer'ı bir kez eğitip belleğe alıyoruz
model, cv = train_ml_model()
st.title("🎓 ML Tabanlı Dil Tespit & Çeviri")
st.markdown("Bu uygulama, Naive Bias kullanarak dil tespit eder")
# Kullanıcı Girişi
user_input = st.text_area("Analiz edilecek metni girin:", height=150, placeholder="Örn: Merhaba, Helloo. ")
if user_input:
# 1. Aşama: Manuel Eğitilen ML Modeli ile Dil Tespiti
with st.spinner('ML Modeli dili tahmin ediyor...'):
input_vector = cv.transform([user_input]).toarray()
prediction = model.predict(input_vector)[0]
st.info(f"**ML Model Tahmini:** {prediction}")
# 2. Aşama: Çeviri Hedefi Seçimi
target_option = st.selectbox(
"Hangi dile çevrilsin?",
["Türkçe", "İngilizce", "Almanca"]
)
lang_map = {"Türkçe": "tr", "İngilizce": "en", "Almanca": "de"}
target_lang = lang_map[target_option]
if st.button("Çevir ve Seslendir"):
with st.spinner('İşleniyor...'):
try:
# Çeviri işlemi (Python 3.13 uyumlu modern yöntem)
translated_text = GoogleTranslator(source='auto', target=target_lang).translate(user_input)
st.success(f"**{target_option} Çeviri:** {translated_text}")
# 3. Aşama: Seslendirme
tts = gTTS(text=translated_text, lang=target_lang)
filename = "output.mp3"
tts.save(filename)
with open(filename, "rb") as f:
st.audio(f.read(), format="audio/mp3")
os.remove(filename) # Geçici dosyayı temizle
except Exception as e:
st.error(f"Bir hata oluşti: {str(e)}")