melek-voice 2.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- melek-voice-2.0.0/MANIFEST.in +4 -0
- melek-voice-2.0.0/PKG-INFO +136 -0
- melek-voice-2.0.0/README.md +115 -0
- melek-voice-2.0.0/melek_voice/__init__.py +19 -0
- melek-voice-2.0.0/melek_voice/assets/config.json +5 -0
- melek-voice-2.0.0/melek_voice/assets/voice_styles/F1.json +1 -0
- melek-voice-2.0.0/melek_voice/assets/voice_styles/F2.json +1 -0
- melek-voice-2.0.0/melek_voice/assets/voice_styles/F3.json +1 -0
- melek-voice-2.0.0/melek_voice/assets/voice_styles/F4.json +1 -0
- melek-voice-2.0.0/melek_voice/assets/voice_styles/F5.json +1 -0
- melek-voice-2.0.0/melek_voice/assets/voice_styles/M1.json +1 -0
- melek-voice-2.0.0/melek_voice/assets/voice_styles/M2.json +1 -0
- melek-voice-2.0.0/melek_voice/assets/voice_styles/M3.json +1 -0
- melek-voice-2.0.0/melek_voice/assets/voice_styles/M4.json +1 -0
- melek-voice-2.0.0/melek_voice/assets/voice_styles/M5.json +1 -0
- melek-voice-2.0.0/melek_voice/cache.py +139 -0
- melek-voice-2.0.0/melek_voice/engine.py +441 -0
- melek-voice-2.0.0/melek_voice/presets.py +83 -0
- melek-voice-2.0.0/melek_voice/resolver.py +63 -0
- melek-voice-2.0.0/melek_voice.egg-info/PKG-INFO +136 -0
- melek-voice-2.0.0/melek_voice.egg-info/SOURCES.txt +25 -0
- melek-voice-2.0.0/melek_voice.egg-info/dependency_links.txt +1 -0
- melek-voice-2.0.0/melek_voice.egg-info/requires.txt +4 -0
- melek-voice-2.0.0/melek_voice.egg-info/top_level.txt +1 -0
- melek-voice-2.0.0/pyproject.toml +34 -0
- melek-voice-2.0.0/setup.cfg +4 -0
- melek-voice-2.0.0/setup.py +43 -0
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: melek-voice
|
|
3
|
+
Version: 2.0.0
|
|
4
|
+
Summary: melek-voice (Meleğin Ses Telleri) - Yüksek Performanslı Türkçe Nöral Ses Sentezleyici
|
|
5
|
+
Home-page: https://github.com/TearsFearsxf/melek-voice
|
|
6
|
+
Author: Melek AI Development
|
|
7
|
+
Author-email: Melek AI Development <developer@melek.ai>
|
|
8
|
+
License: MIT
|
|
9
|
+
Project-URL: Homepage, https://github.com/TearsFearsxf/melek-voice
|
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
17
|
+
Classifier: Operating System :: OS Independent
|
|
18
|
+
Classifier: Topic :: Multimedia :: Sound/Audio :: Speech
|
|
19
|
+
Requires-Python: >=3.8
|
|
20
|
+
Description-Content-Type: text/markdown
|
|
21
|
+
|
|
22
|
+
# melek-voice (Meleğin Ses Telleri) 2.0.0
|
|
23
|
+
|
|
24
|
+
Melek Yapay Zeka Asistanı için geliştirilmiş yüksek performanslı, stüdyo kalitesinde Türkçe nöral ses sentezleme (Text-to-Speech / TTS) ve kesilebilir ses oynatma kütüphanesidir.
|
|
25
|
+
|
|
26
|
+
Supertone'un **Flow Matching (Supertonic 3)** mimarisi üzerine inşa edilmiştir. %100 yerel ve çevrimdışı (offline) çalışır, internete bağımlı değildir.
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Öne Çıkan Özellikler (v2.0.0)
|
|
31
|
+
|
|
32
|
+
* **44.1 kHz Stüdyo Kalitesi:** `44100 Hz` örnekleme hızı ve `228` Mel-filtre bankası ile insan doğallığında, dolgun ve pürüzsüz Türkçe telaffuz.
|
|
33
|
+
* **4 Kat Hızlı & Optimize Sentez (RTF ~0.26x):** Önceki versiyondaki 32 adım yerine kalibre edilen 8 adım ile CPU üzerinde 4 saniyelik konuşmayı ~1.0 saniyede üretir.
|
|
34
|
+
* **Bellek İçi (In-Memory) Oynatma:** Sesi geçici diske yazmadan doğrudan RAM üzerinden `pygame.mixer` ile çalar. Sıfır disk gecikmesi ve aşınması.
|
|
35
|
+
* **İnteraktif Araya Girme & Susturma (Barge-in):** `stop()`, `pause()`, `resume()`, `clear_queue()` ve `is_speaking` fonksiyonları ile kullanıcı Melek'in sözünü anında kesebilir.
|
|
36
|
+
* **Cümle Bazlı Streaming Pipelining:** Uzun paragrafları cümlelere bölüp ilk cümleyi anında (~300ms) başlatır; birinci cümle çalarken ikinci cümle arka planda sentezlenir.
|
|
37
|
+
* **Akıllı Model Çözücü (Smart Model Resolver):** 398 MB'lık büyük ağırlıkları paketten ayırarak hafif PyPI paketi sunar. Modelleri yerel klasörden veya kullanıcı önbelleğinden (`~/.cache/supertonic3`) anında yükler; yoksa HuggingFace'ten otomatik çeker.
|
|
38
|
+
* **LRU Ses Önbelleği:** Sık söylenen cümleleri RAM ve diskte önbelleğe alır, disk boyutunu otomatik sınırlar (varsayılan max 50 MB).
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Kurulum
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
pip install melek-voice
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Gerekli bağımlılıklar:
|
|
49
|
+
* `supertonic`
|
|
50
|
+
* `pygame`
|
|
51
|
+
* `soundfile`
|
|
52
|
+
* `numpy`
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Hızlı Başlangıç
|
|
57
|
+
|
|
58
|
+
### 1. Temel Kullanım
|
|
59
|
+
|
|
60
|
+
```python
|
|
61
|
+
from melek_voice import MelekVoice
|
|
62
|
+
|
|
63
|
+
# Varsayılan 'dengeli' (F5 Melek tonu) ile başlat
|
|
64
|
+
voice = MelekVoice()
|
|
65
|
+
|
|
66
|
+
# Arka planda asenkron konuşur
|
|
67
|
+
voice.speak("Merhaba, ben Melek. Size nasıl yardımcı olabilirim?")
|
|
68
|
+
|
|
69
|
+
# Konuşmanın bitmesini bekle
|
|
70
|
+
voice.wait_until_done()
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### 2. Senkron Konuşma (`block=True`)
|
|
74
|
+
|
|
75
|
+
```python
|
|
76
|
+
# Ses tamamen bitene kadar program akışını bekletir
|
|
77
|
+
voice.speak("Sistem başarıyla güncellendi efendim.", block=True)
|
|
78
|
+
print("Bu satır ancak ses bittikten sonra çalışır.")
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### 3. Cümle Streaming Pipelining (`pipeline=True`)
|
|
82
|
+
|
|
83
|
+
Uzun bir yanıt verirken tüm paragrafın sentezlenmesini beklemeden ilk cümleyi hemen başlatmak için:
|
|
84
|
+
|
|
85
|
+
```python
|
|
86
|
+
metin = (
|
|
87
|
+
"Bugün hava İstanbul'da 22 derece ve güneşli. "
|
|
88
|
+
"Öğleden sonra hafif rüzgar bekleniyor. "
|
|
89
|
+
"Planlanan 3 adet hatırlatıcınız bulunuyor efendim."
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
# İlk cümle ~300 milisaniyede çalmaya başlar!
|
|
93
|
+
voice.speak(metin, pipeline=True, block=True)
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### 4. Konuşmayı Kesme (Barge-in / Stop)
|
|
97
|
+
|
|
98
|
+
```python
|
|
99
|
+
# Melek konuşurken anında sustur ve bekleyen kuyruğu temizle:
|
|
100
|
+
voice.stop()
|
|
101
|
+
|
|
102
|
+
# Veya duraklat / devam ettir:
|
|
103
|
+
voice.pause()
|
|
104
|
+
voice.resume()
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### 5. Ses Stilleri ve Presetler
|
|
108
|
+
|
|
109
|
+
```python
|
|
110
|
+
# Hazır kadınsı ve erkeksi presetler:
|
|
111
|
+
voice.set_style("hizli") # 5 Adım - Ultra hızlı tepki
|
|
112
|
+
voice.set_style("dengeli") # 8 Adım - Doğal ve pürüzsüz Melek tonu (Varsayılan)
|
|
113
|
+
voice.set_style("sicak") # 8 Adım - Samimi ve dostane tonlama
|
|
114
|
+
voice.set_style("zarif") # 10 Adım - Sakin ve feminen akış
|
|
115
|
+
voice.set_style("derin") # 12 Adım - Stüdyo kalitesinde maksimum netlik
|
|
116
|
+
|
|
117
|
+
# Erkek sesleri:
|
|
118
|
+
voice.set_style("erkek_dengeli")
|
|
119
|
+
voice.set_style("erkek_derin")
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### 6. Dosyaya veya Baytlara Dönüştürme
|
|
123
|
+
|
|
124
|
+
```python
|
|
125
|
+
# Doğrudan WAV dosyasına kaydet
|
|
126
|
+
voice.save_to_file("Bu ses diske kaydedildi.", "cikti.wav")
|
|
127
|
+
|
|
128
|
+
# WAV baytlarını bellekten al (Web API / GUI için)
|
|
129
|
+
wav_bytes, duration = voice.synthesize_bytes("API üzerinden dönecek ses.")
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Lisans
|
|
135
|
+
|
|
136
|
+
MIT License. Melek AI Projesi.
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# melek-voice (Meleğin Ses Telleri) 2.0.0
|
|
2
|
+
|
|
3
|
+
Melek Yapay Zeka Asistanı için geliştirilmiş yüksek performanslı, stüdyo kalitesinde Türkçe nöral ses sentezleme (Text-to-Speech / TTS) ve kesilebilir ses oynatma kütüphanesidir.
|
|
4
|
+
|
|
5
|
+
Supertone'un **Flow Matching (Supertonic 3)** mimarisi üzerine inşa edilmiştir. %100 yerel ve çevrimdışı (offline) çalışır, internete bağımlı değildir.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Öne Çıkan Özellikler (v2.0.0)
|
|
10
|
+
|
|
11
|
+
* **44.1 kHz Stüdyo Kalitesi:** `44100 Hz` örnekleme hızı ve `228` Mel-filtre bankası ile insan doğallığında, dolgun ve pürüzsüz Türkçe telaffuz.
|
|
12
|
+
* **4 Kat Hızlı & Optimize Sentez (RTF ~0.26x):** Önceki versiyondaki 32 adım yerine kalibre edilen 8 adım ile CPU üzerinde 4 saniyelik konuşmayı ~1.0 saniyede üretir.
|
|
13
|
+
* **Bellek İçi (In-Memory) Oynatma:** Sesi geçici diske yazmadan doğrudan RAM üzerinden `pygame.mixer` ile çalar. Sıfır disk gecikmesi ve aşınması.
|
|
14
|
+
* **İnteraktif Araya Girme & Susturma (Barge-in):** `stop()`, `pause()`, `resume()`, `clear_queue()` ve `is_speaking` fonksiyonları ile kullanıcı Melek'in sözünü anında kesebilir.
|
|
15
|
+
* **Cümle Bazlı Streaming Pipelining:** Uzun paragrafları cümlelere bölüp ilk cümleyi anında (~300ms) başlatır; birinci cümle çalarken ikinci cümle arka planda sentezlenir.
|
|
16
|
+
* **Akıllı Model Çözücü (Smart Model Resolver):** 398 MB'lık büyük ağırlıkları paketten ayırarak hafif PyPI paketi sunar. Modelleri yerel klasörden veya kullanıcı önbelleğinden (`~/.cache/supertonic3`) anında yükler; yoksa HuggingFace'ten otomatik çeker.
|
|
17
|
+
* **LRU Ses Önbelleği:** Sık söylenen cümleleri RAM ve diskte önbelleğe alır, disk boyutunu otomatik sınırlar (varsayılan max 50 MB).
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Kurulum
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
pip install melek-voice
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Gerekli bağımlılıklar:
|
|
28
|
+
* `supertonic`
|
|
29
|
+
* `pygame`
|
|
30
|
+
* `soundfile`
|
|
31
|
+
* `numpy`
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Hızlı Başlangıç
|
|
36
|
+
|
|
37
|
+
### 1. Temel Kullanım
|
|
38
|
+
|
|
39
|
+
```python
|
|
40
|
+
from melek_voice import MelekVoice
|
|
41
|
+
|
|
42
|
+
# Varsayılan 'dengeli' (F5 Melek tonu) ile başlat
|
|
43
|
+
voice = MelekVoice()
|
|
44
|
+
|
|
45
|
+
# Arka planda asenkron konuşur
|
|
46
|
+
voice.speak("Merhaba, ben Melek. Size nasıl yardımcı olabilirim?")
|
|
47
|
+
|
|
48
|
+
# Konuşmanın bitmesini bekle
|
|
49
|
+
voice.wait_until_done()
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### 2. Senkron Konuşma (`block=True`)
|
|
53
|
+
|
|
54
|
+
```python
|
|
55
|
+
# Ses tamamen bitene kadar program akışını bekletir
|
|
56
|
+
voice.speak("Sistem başarıyla güncellendi efendim.", block=True)
|
|
57
|
+
print("Bu satır ancak ses bittikten sonra çalışır.")
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### 3. Cümle Streaming Pipelining (`pipeline=True`)
|
|
61
|
+
|
|
62
|
+
Uzun bir yanıt verirken tüm paragrafın sentezlenmesini beklemeden ilk cümleyi hemen başlatmak için:
|
|
63
|
+
|
|
64
|
+
```python
|
|
65
|
+
metin = (
|
|
66
|
+
"Bugün hava İstanbul'da 22 derece ve güneşli. "
|
|
67
|
+
"Öğleden sonra hafif rüzgar bekleniyor. "
|
|
68
|
+
"Planlanan 3 adet hatırlatıcınız bulunuyor efendim."
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
# İlk cümle ~300 milisaniyede çalmaya başlar!
|
|
72
|
+
voice.speak(metin, pipeline=True, block=True)
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### 4. Konuşmayı Kesme (Barge-in / Stop)
|
|
76
|
+
|
|
77
|
+
```python
|
|
78
|
+
# Melek konuşurken anında sustur ve bekleyen kuyruğu temizle:
|
|
79
|
+
voice.stop()
|
|
80
|
+
|
|
81
|
+
# Veya duraklat / devam ettir:
|
|
82
|
+
voice.pause()
|
|
83
|
+
voice.resume()
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### 5. Ses Stilleri ve Presetler
|
|
87
|
+
|
|
88
|
+
```python
|
|
89
|
+
# Hazır kadınsı ve erkeksi presetler:
|
|
90
|
+
voice.set_style("hizli") # 5 Adım - Ultra hızlı tepki
|
|
91
|
+
voice.set_style("dengeli") # 8 Adım - Doğal ve pürüzsüz Melek tonu (Varsayılan)
|
|
92
|
+
voice.set_style("sicak") # 8 Adım - Samimi ve dostane tonlama
|
|
93
|
+
voice.set_style("zarif") # 10 Adım - Sakin ve feminen akış
|
|
94
|
+
voice.set_style("derin") # 12 Adım - Stüdyo kalitesinde maksimum netlik
|
|
95
|
+
|
|
96
|
+
# Erkek sesleri:
|
|
97
|
+
voice.set_style("erkek_dengeli")
|
|
98
|
+
voice.set_style("erkek_derin")
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### 6. Dosyaya veya Baytlara Dönüştürme
|
|
102
|
+
|
|
103
|
+
```python
|
|
104
|
+
# Doğrudan WAV dosyasına kaydet
|
|
105
|
+
voice.save_to_file("Bu ses diske kaydedildi.", "cikti.wav")
|
|
106
|
+
|
|
107
|
+
# WAV baytlarını bellekten al (Web API / GUI için)
|
|
108
|
+
wav_bytes, duration = voice.synthesize_bytes("API üzerinden dönecek ses.")
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## Lisans
|
|
114
|
+
|
|
115
|
+
MIT License. Melek AI Projesi.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"""
|
|
2
|
+
melek-voice (Meleğin Ses Telleri) - Melek AI Ses Sentezleyici & Oynatıcı.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from .engine import MelekVoice
|
|
6
|
+
from .presets import PRESETS, DEFAULT_PRESET, SAMPLE_RATE, split_sentences
|
|
7
|
+
from .cache import AudioCache
|
|
8
|
+
from .resolver import resolve_model_path
|
|
9
|
+
|
|
10
|
+
__version__ = "2.0.0"
|
|
11
|
+
__all__ = [
|
|
12
|
+
"MelekVoice",
|
|
13
|
+
"PRESETS",
|
|
14
|
+
"DEFAULT_PRESET",
|
|
15
|
+
"SAMPLE_RATE",
|
|
16
|
+
"split_sentences",
|
|
17
|
+
"AudioCache",
|
|
18
|
+
"resolve_model_path",
|
|
19
|
+
]
|