Upload 2 files
Browse files- app.py +43 -25
- requirements.txt +9 -8
app.py
CHANGED
@@ -1,27 +1,47 @@
|
|
1 |
import gradio as gr
|
2 |
-
from transformers import pipeline
|
3 |
import torch
|
4 |
-
from
|
5 |
import os
|
6 |
import time
|
7 |
|
8 |
# Daha az bellek kullanımı için
|
9 |
torch.set_grad_enabled(False)
|
10 |
|
11 |
-
#
|
12 |
sentiment_model = pipeline(
|
13 |
"sentiment-analysis",
|
14 |
model="distilbert-base-uncased-finetuned-sst-2-english",
|
15 |
device=-1 # CPU üzerinde çalıştır
|
16 |
)
|
17 |
|
18 |
-
#
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
|
26 |
def process_input(text):
|
27 |
try:
|
@@ -38,28 +58,26 @@ def process_input(text):
|
|
38 |
|
39 |
print(f"Duygu analizi sonucu: {label} ({score:.2f})")
|
40 |
|
41 |
-
# Uygun prompt oluştur
|
42 |
if label == "NEGATIVE" or (label == "POSITIVE" and score < 0.6):
|
43 |
-
prompt = f"
|
44 |
else:
|
45 |
-
prompt = f"
|
46 |
-
|
47 |
-
# Metni üret
|
48 |
-
generated_text = generator(prompt, max_new_tokens=60, do_sample=True, temperature=0.7)[0]['generated_text']
|
49 |
|
50 |
-
#
|
51 |
-
|
|
|
52 |
|
53 |
# Cevabı kısalt
|
54 |
-
if len(response) >
|
55 |
-
response = response[:
|
56 |
|
57 |
-
print(f"Üretilen
|
58 |
|
59 |
-
#
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
|
64 |
print(f"İşlem tamamlandı ({time.time() - start_time:.2f} saniye)")
|
65 |
|
|
|
1 |
import gradio as gr
|
2 |
+
from transformers import pipeline, AutoModelForCausalLM, AutoTokenizer
|
3 |
import torch
|
4 |
+
from TTS.api import TTS
|
5 |
import os
|
6 |
import time
|
7 |
|
8 |
# Daha az bellek kullanımı için
|
9 |
torch.set_grad_enabled(False)
|
10 |
|
11 |
+
# Duygu Analizi Modeli
|
12 |
sentiment_model = pipeline(
|
13 |
"sentiment-analysis",
|
14 |
model="distilbert-base-uncased-finetuned-sst-2-english",
|
15 |
device=-1 # CPU üzerinde çalıştır
|
16 |
)
|
17 |
|
18 |
+
# Türkçe Metin Üretme Modeli - Türkçe destekleyen bir model
|
19 |
+
print("Metin üretme modeli yükleniyor...")
|
20 |
+
tokenizer = AutoTokenizer.from_pretrained("dbmdz/turkish-gpt2")
|
21 |
+
text_model = AutoModelForCausalLM.from_pretrained("dbmdz/turkish-gpt2")
|
22 |
+
print("Model yüklendi.")
|
23 |
+
|
24 |
+
# Daha profesyonel TTS modeli
|
25 |
+
print("TTS modeli yükleniyor...")
|
26 |
+
tts_model = TTS(model_name="tts_models/tr/common-voice/glow-tts")
|
27 |
+
print("TTS modeli yüklendi.")
|
28 |
+
|
29 |
+
def generate_turkish_text(prompt, max_length=100):
|
30 |
+
"""Türkçe metin üretme fonksiyonu"""
|
31 |
+
inputs = tokenizer(prompt, return_tensors="pt")
|
32 |
+
output = text_model.generate(
|
33 |
+
inputs["input_ids"],
|
34 |
+
max_length=max_length,
|
35 |
+
num_return_sequences=1,
|
36 |
+
do_sample=True,
|
37 |
+
temperature=0.7,
|
38 |
+
pad_token_id=tokenizer.eos_token_id
|
39 |
+
)
|
40 |
+
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
|
41 |
+
# Başlangıç prompt'unu kaldır ve sadece yeni üretilen kısmı al
|
42 |
+
if prompt in generated_text:
|
43 |
+
generated_text = generated_text[len(prompt):].strip()
|
44 |
+
return generated_text
|
45 |
|
46 |
def process_input(text):
|
47 |
try:
|
|
|
58 |
|
59 |
print(f"Duygu analizi sonucu: {label} ({score:.2f})")
|
60 |
|
61 |
+
# Uygun prompt oluştur (Türkçe)
|
62 |
if label == "NEGATIVE" or (label == "POSITIVE" and score < 0.6):
|
63 |
+
prompt = f"Aşağıdaki kişi üzgün veya olumsuz hissediyor. Ona destek ve moral verecek bir mesaj yazın:\nKişinin mesajı: '{text}'\nDestekleyici yanıt:"
|
64 |
else:
|
65 |
+
prompt = f"Aşağıdaki kişi olumlu ve mutlu hissediyor. Onun bu duygularını destekleyen bir mesaj yazın:\nKişinin mesajı: '{text}'\nOlumlu yanıt:"
|
|
|
|
|
|
|
66 |
|
67 |
+
# Türkçe metin üret
|
68 |
+
print("Metin üretiliyor...")
|
69 |
+
response = generate_turkish_text(prompt, max_length=150)
|
70 |
|
71 |
# Cevabı kısalt
|
72 |
+
if len(response) > 200:
|
73 |
+
response = response[:200] + "..."
|
74 |
|
75 |
+
print(f"Üretilen yanıt: {response[:50]}...")
|
76 |
|
77 |
+
# Yüksek kaliteli TTS ile seslendirme yap
|
78 |
+
print("Ses dosyası oluşturuluyor...")
|
79 |
+
audio_path = "response.wav"
|
80 |
+
tts_model.tts_to_file(text=response, file_path=audio_path)
|
81 |
|
82 |
print(f"İşlem tamamlandı ({time.time() - start_time:.2f} saniye)")
|
83 |
|
requirements.txt
CHANGED
@@ -1,8 +1,9 @@
|
|
1 |
-
gradio==3.32.0
|
2 |
-
transformers==4.30.2
|
3 |
-
torch==2.0.1
|
4 |
-
|
5 |
-
numpy==1.24.3
|
6 |
-
scipy==1.10.1
|
7 |
-
protobuf==3.20.3
|
8 |
-
tqdm
|
|
|
|
1 |
+
gradio==3.32.0
|
2 |
+
transformers==4.30.2
|
3 |
+
torch==2.0.1
|
4 |
+
TTS==0.17.3
|
5 |
+
numpy==1.24.3
|
6 |
+
scipy==1.10.1
|
7 |
+
protobuf==3.20.3
|
8 |
+
tqdm
|
9 |
+
sentencepiece
|