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)}")