canksdi commited on
Commit
39d7dde
·
verified ·
1 Parent(s): 8147ea3

Upload 3 files

Browse files
Files changed (3) hide show
  1. README.md +8 -7
  2. app.py +25 -41
  3. 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 sesle 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 sesine yakın seslendirme** - SpeechT5 modeli ile doğal sesli yanıtlar üretir
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 insan sesine yakın bir şekilde seslendirecektir
27
 
28
  ## Teknik Detaylar
29
 
30
- Bu proje üç farklı yapay zeka modelini 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**: Microsoft SpeechT5 - İnsan sesine çok yakın doğal seslendirme yapan gelişmiş TTS modeli
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.1
62
  soundfile==0.12.1
63
  datasets==2.13.0
64
- numpy>=1.17.0
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
- # Yüksek kaliteli SpeechT5 TTS modeli
28
- print("SpeechT5 modeli yükleniyor...")
29
- processor = SpeechT5Processor.from_pretrained("microsoft/speecht5_tts")
30
- tts_model = SpeechT5ForTextToSpeech.from_pretrained("microsoft/speecht5_tts")
31
- vocoder = SpeechT5HifiGan.from_pretrained("microsoft/speecht5_hifigan")
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
- """Yüksek kaliteli konuşma üretme fonksiyonu"""
57
- # Metni işle
58
- inputs = processor(text=text, return_tensors="pt")
59
-
60
- # Ses üret
61
- speech = tts_model.generate_speech(
62
- inputs["input_ids"],
63
- speaker_embeddings,
64
- vocoder=vocoder
65
- )
66
-
67
- # Numpy dizisine dönüştür
68
- speech_np = speech.numpy()
69
-
70
- return speech_np
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("Yüksek kaliteli ses dosyası oluşturuluyor...")
105
- audio_path = "response.wav"
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