Upload 3 files
Browse files- README.md +8 -7
- app.py +25 -41
- requirements.txt +2 -2
README.md
CHANGED
@@ -11,27 +11,27 @@ pinned: false
|
|
11 |
|
12 |
# MoodF - Duygusal Destek Asistanı
|
13 |
|
14 |
-
Bu uygulama, kullanıcıların duygusal durumlarını analiz edip destekleyici yanıtlar veren ve bunları insan sesine yakın bir
|
15 |
|
16 |
## Özellikler
|
17 |
|
18 |
- 🧠 **Duygu analizi** - Kullanıcının yazısındaki duygu durumunu tespit eder
|
19 |
- 💬 **Gerçek zamanlı metin üretimi** - Türkçe dil modeli kullanarak özgün destekleyici mesajlar üretir
|
20 |
-
- 🔊 **İnsan
|
21 |
|
22 |
## Nasıl Kullanılır
|
23 |
|
24 |
1. Duygularınızı veya düşüncelerinizi metin kutusuna yazın
|
25 |
2. "Gönder" düğmesine tıklayın
|
26 |
-
3. MoodF size özgün bir destekleyici yanıt verecek ve bunu
|
27 |
|
28 |
## Teknik Detaylar
|
29 |
|
30 |
-
Bu proje
|
31 |
|
32 |
- **Duygu Analizi**: DistilBERT modeli
|
33 |
- **Metin Üretme**: ytu-ce-cosmos/turkish-gpt2 - Yıldız Teknik Üniversitesi tarafından Türkçe dili için özel olarak eğitilmiş metin üretme modeli
|
34 |
-
- **Seslendirme**:
|
35 |
|
36 |
## API Kullanımı
|
37 |
|
@@ -58,11 +58,12 @@ Yanıt olarak metin ve ses dosyası URL'si alınır.
|
|
58 |
```
|
59 |
gradio==3.32.0
|
60 |
transformers==4.30.2
|
61 |
-
torch==2.0.
|
62 |
soundfile==0.12.1
|
63 |
datasets==2.13.0
|
64 |
-
numpy
|
65 |
protobuf==3.20.3
|
66 |
tqdm
|
67 |
sentencepiece
|
|
|
68 |
```
|
|
|
11 |
|
12 |
# MoodF - Duygusal Destek Asistanı
|
13 |
|
14 |
+
Bu uygulama, kullanıcıların duygusal durumlarını analiz edip destekleyici yanıtlar veren ve bunları gerçek insan sesine yakın bir kalitede seslendiren gelişmiş bir yapay zeka asistanıdır.
|
15 |
|
16 |
## Özellikler
|
17 |
|
18 |
- 🧠 **Duygu analizi** - Kullanıcının yazısındaki duygu durumunu tespit eder
|
19 |
- 💬 **Gerçek zamanlı metin üretimi** - Türkçe dil modeli kullanarak özgün destekleyici mesajlar üretir
|
20 |
+
- 🔊 **İnsan benzeri ses** - Meta AI tarafından geliştirilen VITS teknolojisi ile doğal insan sesine çok yakın kalitede seslendirme
|
21 |
|
22 |
## Nasıl Kullanılır
|
23 |
|
24 |
1. Duygularınızı veya düşüncelerinizi metin kutusuna yazın
|
25 |
2. "Gönder" düğmesine tıklayın
|
26 |
+
3. MoodF size özgün bir destekleyici yanıt verecek ve bunu gerçeğe çok yakın bir sesle seslendirecektir
|
27 |
|
28 |
## Teknik Detaylar
|
29 |
|
30 |
+
Bu proje iki farklı yapay zeka modelini ve Meta'nın ses teknolojisini bir araya getirir:
|
31 |
|
32 |
- **Duygu Analizi**: DistilBERT modeli
|
33 |
- **Metin Üretme**: ytu-ce-cosmos/turkish-gpt2 - Yıldız Teknik Üniversitesi tarafından Türkçe dili için özel olarak eğitilmiş metin üretme modeli
|
34 |
+
- **Seslendirme**: XTTS v2 (Coqui TTS) - Meta AI teknolojisiyle geliştirilmiş, insan sesine çok yakın kalitede çokdilli seslendirme yapan gelişmiş model
|
35 |
|
36 |
## API Kullanımı
|
37 |
|
|
|
58 |
```
|
59 |
gradio==3.32.0
|
60 |
transformers==4.30.2
|
61 |
+
torch==2.0.0
|
62 |
soundfile==0.12.1
|
63 |
datasets==2.13.0
|
64 |
+
numpy<2.0.0
|
65 |
protobuf==3.20.3
|
66 |
tqdm
|
67 |
sentencepiece
|
68 |
+
TTS
|
69 |
```
|
app.py
CHANGED
@@ -1,12 +1,9 @@
|
|
1 |
import gradio as gr
|
2 |
from transformers import pipeline, AutoModelForCausalLM, AutoTokenizer
|
3 |
-
from transformers import SpeechT5Processor, SpeechT5ForTextToSpeech, SpeechT5HifiGan
|
4 |
import torch
|
5 |
-
import soundfile as sf
|
6 |
-
from datasets import load_dataset
|
7 |
-
import numpy as np
|
8 |
import os
|
9 |
import time
|
|
|
10 |
|
11 |
# Daha az bellek kullanımı için
|
12 |
torch.set_grad_enabled(False)
|
@@ -24,16 +21,11 @@ tokenizer = AutoTokenizer.from_pretrained("ytu-ce-cosmos/turkish-gpt2")
|
|
24 |
text_model = AutoModelForCausalLM.from_pretrained("ytu-ce-cosmos/turkish-gpt2")
|
25 |
print("Metin modeli yüklendi.")
|
26 |
|
27 |
-
#
|
28 |
-
print("
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
print("SpeechT5 modeli yüklendi.")
|
33 |
-
|
34 |
-
# Konuşmacı embedding'i al - kadın sesi
|
35 |
-
embeddings_dataset = load_dataset("Matthijs/cmu-arctic-xvectors", split="validation")
|
36 |
-
speaker_embeddings = torch.tensor(embeddings_dataset[7306]["xvector"]).unsqueeze(0) # Kadın ses
|
37 |
|
38 |
def generate_turkish_text(prompt, max_length=100):
|
39 |
"""Türkçe metin üretme fonksiyonu"""
|
@@ -53,21 +45,21 @@ def generate_turkish_text(prompt, max_length=100):
|
|
53 |
return generated_text
|
54 |
|
55 |
def create_speech(text):
|
56 |
-
"""
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
|
72 |
def process_input(text):
|
73 |
try:
|
@@ -100,17 +92,9 @@ def process_input(text):
|
|
100 |
|
101 |
print(f"Üretilen yanıt: {response[:50]}...")
|
102 |
|
103 |
-
# Yüksek kaliteli ses üret
|
104 |
-
print("
|
105 |
-
audio_path =
|
106 |
-
|
107 |
-
# Türkçe metni İngilizce telaffuz edebilecek hale getir
|
108 |
-
# SpeechT5 sadece İngilizce için eğitilmiş, bu yüzden bir miktar uyarlama gerekiyor
|
109 |
-
response_for_speech = response
|
110 |
-
|
111 |
-
# Sesi oluştur ve kaydet
|
112 |
-
speech_array = create_speech(response_for_speech)
|
113 |
-
sf.write(audio_path, speech_array, 16000)
|
114 |
|
115 |
print(f"İşlem tamamlandı ({time.time() - start_time:.2f} saniye)")
|
116 |
|
@@ -131,7 +115,7 @@ Bu uygulama yapay zeka kullanarak duygularınızı analiz eder ve size destekley
|
|
131 |
**Nasıl kullanılır:**
|
132 |
1. Nasıl hissettiğinizi yazın
|
133 |
2. "Gönder" düğmesine tıklayın
|
134 |
-
3. MoodF'in yazılı ve sesli yanıtını alın
|
135 |
"""
|
136 |
|
137 |
# Arayüz tasarımı
|
|
|
1 |
import gradio as gr
|
2 |
from transformers import pipeline, AutoModelForCausalLM, AutoTokenizer
|
|
|
3 |
import torch
|
|
|
|
|
|
|
4 |
import os
|
5 |
import time
|
6 |
+
from TTS.api import TTS
|
7 |
|
8 |
# Daha az bellek kullanımı için
|
9 |
torch.set_grad_enabled(False)
|
|
|
21 |
text_model = AutoModelForCausalLM.from_pretrained("ytu-ce-cosmos/turkish-gpt2")
|
22 |
print("Metin modeli yüklendi.")
|
23 |
|
24 |
+
# TTS modeli yükleniyor
|
25 |
+
print("TTS modeli yükleniyor...")
|
26 |
+
# Facebook/Meta'nın yüksek kaliteli kadın sesi modelini kullanacağız
|
27 |
+
tts = TTS("tts_models/multilingual/multi-dataset/xtts_v2")
|
28 |
+
print("TTS modeli yüklendi.")
|
|
|
|
|
|
|
|
|
|
|
29 |
|
30 |
def generate_turkish_text(prompt, max_length=100):
|
31 |
"""Türkçe metin üretme fonksiyonu"""
|
|
|
45 |
return generated_text
|
46 |
|
47 |
def create_speech(text):
|
48 |
+
"""Facebook/Meta'nın VITS modeli ile doğal insan sesi üret"""
|
49 |
+
try:
|
50 |
+
audio_path = "response.wav"
|
51 |
+
# Türkçe metin için yüksek kaliteli doğal ses sentezi
|
52 |
+
# speaker_wav seçeneği yoksa basit halini kullanıyoruz
|
53 |
+
tts.tts_to_file(text=text, file_path=audio_path, language="tr")
|
54 |
+
return audio_path
|
55 |
+
except Exception as e:
|
56 |
+
print(f"Ses oluşturma hatası: {str(e)}")
|
57 |
+
# Hata durumunda log al
|
58 |
+
print(f"Detaylı hata: {e}")
|
59 |
+
# Boş ses dosyası oluştur
|
60 |
+
with open("empty.wav", "wb") as f:
|
61 |
+
f.write(b"")
|
62 |
+
return "empty.wav"
|
63 |
|
64 |
def process_input(text):
|
65 |
try:
|
|
|
92 |
|
93 |
print(f"Üretilen yanıt: {response[:50]}...")
|
94 |
|
95 |
+
# Yüksek kaliteli doğal ses üret
|
96 |
+
print("Doğal ses üretiliyor...")
|
97 |
+
audio_path = create_speech(response)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
98 |
|
99 |
print(f"İşlem tamamlandı ({time.time() - start_time:.2f} saniye)")
|
100 |
|
|
|
115 |
**Nasıl kullanılır:**
|
116 |
1. Nasıl hissettiğinizi yazın
|
117 |
2. "Gönder" düğmesine tıklayın
|
118 |
+
3. MoodF'in yazılı ve doğal sesli yanıtını alın
|
119 |
"""
|
120 |
|
121 |
# Arayüz tasarımı
|
requirements.txt
CHANGED
@@ -1,10 +1,10 @@
|
|
1 |
gradio==3.32.0
|
2 |
transformers==4.30.2
|
3 |
torch==2.0.0
|
4 |
-
torchaudio==2.0.1
|
5 |
soundfile==0.12.1
|
6 |
datasets==2.13.0
|
7 |
numpy<2.0.0
|
8 |
protobuf==3.20.3
|
9 |
tqdm
|
10 |
-
sentencepiece
|
|
|
|
1 |
gradio==3.32.0
|
2 |
transformers==4.30.2
|
3 |
torch==2.0.0
|
|
|
4 |
soundfile==0.12.1
|
5 |
datasets==2.13.0
|
6 |
numpy<2.0.0
|
7 |
protobuf==3.20.3
|
8 |
tqdm
|
9 |
+
sentencepiece
|
10 |
+
TTS
|