File size: 2,466 Bytes
ed1ec0d
6b98317
 
 
 
3955363
ed1ec0d
3955363
ed1ec0d
6b98317
 
ed1ec0d
 
6b98317
 
 
 
 
 
 
 
 
 
 
 
 
ed1ec0d
6b98317
 
ed1ec0d
6b98317
8f81deb
ed1ec0d
3955363
6b98317
ed1ec0d
 
6b98317
 
 
 
 
 
ed1ec0d
3955363
ed1ec0d
 
 
 
 
 
 
 
 
6b98317
ed1ec0d
6b98317
3955363
 
 
6b98317
3955363
 
 
ed1ec0d
3955363
ed1ec0d
3955363
6b98317
ed1ec0d
 
6b98317
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
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)}")