Qwen3-TTS Tümleştirmesi
Alibaba Qwen3-TTS’yi yüksek kaliteli çok dilli metinden konuşmaya dönüşüm için yerelde çalıştırın. Bu kılavuz, Libre WebUI ile gelen OpenAI uyumlu TTS sunucusunun kurulumunu anlatır.
Genel Bakış
Qwen3-TTS şu özelliklere sahip gelişmiş bir konuşma sentez sistemidir:
- İngilizce, Çince, Japonca ve Korece için 9 hazır ses
- Almanca, Fransızca, İspanyolca, İtalyanca, Portekizce ve Rusça dâhil 10 dil desteği
- 3 saniyelik ses örneklerinden ses klonlama
- Doğal dil açıklamalarıyla ses tasarlama
- Duygu ve ezgi için yönerge denetimi
Paketli sunucu Qwen3-TTS’yi OpenAI uyumlu API ile sarar; Libre WebUI standart eklenti sistemi üzerinden kullanabilir.
Gereksinimler
| Bileşen | En az | Önerilen |
|---|---|---|
| Python | 3.12+ | 3.12 (3.14 değil) |
| GPU VRAM | 4GB (0.6B modeller) | 8GB+ (1.7B modeller) |
| RAM | 8GB | 16GB+ |
| Disk | 5GB | 10GB |
Platform Desteği
| Platform | Arka uç | Notlar |
|---|---|---|
| NVIDIA GPU | CUDA | En iyi başarım, bfloat16 desteği |
| Apple Silicon | MPS | Bellek verimliliği için 0.6B kullanın |
| CPU | PyTorch | Daha yavaş; 0.6B kullanın |
Mac’te bellek baskısını önlemek için customvoice-0.6b kullanın. 1.7B modeller, 16GB birleşik bellekli sistemleri kararsızlaştırabilir.
Hızlı Başlangıç
1. Sunucuyu Kurma
cd examples/qwen-tts-server
# Create virtual environment (Python 3.12 required)
python3.12 -m venv venv
source venv/bin/activate # Linux/macOS
# or: venv\Scripts\activate # Windows
# Install dependencies
pip install -r requirements.txt
2. Sunucuyu Başlatma
# NVIDIA GPU (recommended)
python server.py --model customvoice-1.7b
# Apple Silicon
python server.py --model customvoice-0.6b
# CPU (slower)
python server.py --model customvoice-0.6b
Sunucu varsayılan olarak http://localhost:8100 adresinde çalışır.
3. Libre WebUI’yi Yapılandırma
Eklenti plugins/qwen-tts.json içinde önceden yapılandırılmıştır. Settings → Plugins → Qwen3 TTS bölümünden etkinleştirin.
4. Sınama
curl http://localhost:8100/v1/audio/speech \
-H "Content-Type: application/json" \
-d '{"model": "qwen3-tts", "input": "Hello, welcome to Libre WebUI!", "voice": "Ryan"}' \
--output speech.wav
Kullanılabilir Modeller
| Model | Boyut | Kullanım |
|---|---|---|
customvoice-1.7b | ~3.5GB | Yönerge denetimli hazır sesler |
customvoice-0.6b | ~1.5GB | Sınırlı VRAM için hafif çeşit |
voicedesign-1.7b | ~3.5GB | Metin açıklamalarından ses oluşturma |
base-1.7b | ~3.5GB | 3 saniyelik örnekten ses klonlama |
base-0.6b | ~1.5GB | Hafif ses klonlama |
Sesler
Hazır Sesler (CustomVoice Modelleri)
| Ses | Dil | Açıklama |
|---|---|---|
| Ryan | İngilizce | Erkek, açık ve doğal |
| Aiden | İngilizce | Erkek, sıcak ton |
| Vivian | Çince | Kadın, profesyonel |
| Serena | Çince | Kadın, arkadaş canlısı |
| Uncle_Fu | Çince | Erkek, olgun |
| Dylan | Çince | Erkek, Pekin lehçesi |
| Eric | Çince | Erkek, Siçuan lehçesi |
| Ono_Anna | Japonca | Kadın |
| Sohee | Korece | Kadın |
OpenAI Ses Takma Adları
OpenAI TTS istemcileriyle uyumluluk için sunucu adları eşler:
| OpenAI Sesi | Eşleşen |
|---|---|
alloy | Ryan |
echo | Aiden |
fable | Vivian |
onyx | Uncle_Fu |
nova | Serena |
shimmer | Ono_Anna |
API Başvurusu
Konuşma Üretimi
Uç nokta: POST /v1/audio/speech
{
"model": "qwen3-tts",
"input": "Text to convert to speech",
"voice": "Ryan",
"response_format": "wav",
"instruct": "Speak with enthusiasm",
"language": "English"
}
| Parametre | Tür | Varsayılan | Açıklama |
|---|---|---|---|
model | string | qwen3-tts | Model tanımlayıcısı |
input | string | zorunlu | Sentezlenecek metin (en çok 10.000 karakter) |
voice | string | ryan | Ses adı (yukarıdaki tablo) |
response_format | string | wav | Ses biçimi (yalnız wav) |
instruct | string | "" | Duygu/ezgi yönergesi |
language | string | otomatik algılama | Dil algılamayı geçersiz kılma |
Yanıt: ses dosyası (audio/wav)
Ses Tasarımı
Uç nokta: POST /v1/audio/voice-design
Doğal dil açıklamasından özel ses oluşturur.
{
"model": "qwen3-tts-voicedesign",
"input": "Welcome to our service.",
"voice_description": "A warm, friendly female voice with a slight British accent",
"language": "English"
}
voicedesign-1.7b modelinin yüklü olmasını gerektirir.
Ses Klonlama
Uç nokta: POST /v1/audio/voice-clone
En az 3 saniyelik ses örneğinden ses klonlar.
curl -X POST http://localhost:8100/v1/audio/voice-clone \
-F "input=Hello, this is my cloned voice." \
-F "reference_audio=@reference.wav" \
-F "reference_text=This is what was said in the reference." \
--output cloned.wav
| Parametre | Tür | Açıklama |
|---|---|---|
input | string | Sentezlenecek metin |
reference_audio | file | En az 3 saniyelik ses örneği |
reference_text | string | Başvuru sesinin dökümü |
base-1.7b veya base-0.6b modelinin yüklü olmasını gerektirir.
Sesleri Listeleme
Uç nokta: GET /v1/voices
{
"voices": [
{"id": "ryan", "name": "Ryan", "language": "English"},
{"id": "aiden", "name": "Aiden", "language": "English"},
...
]
}
Durum Denetimi
Uç nokta: GET /health
{ "status": "healthy", "model_loaded": true }
Sunucu Yapılandırması
python server.py [OPTIONS]
| Seçenek | Varsayılan | Açıklama |
|---|---|---|
--host | 0.0.0.0 | Bağlanılacak ana makine |
--port | 8100 | Bağlanılacak bağlantı noktası |
--model | customvoice-1.7b | Yüklenecek model çeşidi |
Ağ Erişimi
Ağınızdaki diğer bilgisayarlardan erişmek için:
# Start server on all interfaces
python server.py --host 0.0.0.0 --port 8100
# Access from another machine
curl http://192.168.1.100:8100/v1/audio/speech ...
plugins/qwen-tts.json içindeki uç noktayı güncelleyin:
{
"endpoint": "http://192.168.1.100:8100/v1/audio/speech",
"capabilities": {
"tts": {
"endpoint": "http://192.168.1.100:8100/v1/audio/speech"
}
}
}
Üretim Özellikleri
Metin Temizleme
Sunucu, modelin takılmasını önlemek için metni otomatik temizler:
- Emoji ve simgeleri kaldırır
- Markdown biçimini (
*bold*,_italic_vb.) kaldırır - Yinelenen karakterleri kısaltır (
FUUUUU→FUU) - Sahne yönergelerini kaldırır (
*(action)*,(whispers)) - Boşluğu olağanlaştırır
Metin Parçalama
Uzun metin cümle sınırlarında otomatik bölünür:
- Parça başına en çok 500 karakter
- Parça başına 30 saniye zaman aşımı
- Başarısız parçalar atlanır, kalanlar sürer
- Parçalar tek ses yanıtında birleştirilir
Bu, doğal konuşma akışını koruyarak uzun AI yanıtlarında zaman aşımını önler.
Çoklu GPU Kurulumu
Birden fazla GPU bulunan sistemlerde sunucu, tensör aygıt uyuşmazlığını önlemek için tek GPU kullanımını zorlar:
device_map = {"": "cuda:0"} # Uses first GPU only
Belirli GPU için:
CUDA_VISIBLE_DEVICES=1 python server.py --model customvoice-1.7b
Sorun Giderme
Model İndirilemiyor
İlk çalıştırmada model Hugging Face’ten iner. Başarısız olursa:
# Set Hugging Face token for gated models
export HF_TOKEN=hf_...
# Or download manually
huggingface-cli download Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice
Bellek Yetersiz (Apple Silicon)
RuntimeError: MPS backend out of memory
Daha küçük çeşidi kullanın:
python server.py --model customvoice-0.6b
CUDA Belleği Yetersiz
torch.cuda.OutOfMemoryError: CUDA out of memory
- Diğer GPU uygulamalarını kapatın
- 0.6B çeşidini kullanın
- server.py içindeki parça boyutunu azaltın (
max_chunk_size=300)
Sunucu Zaman Aşımına Uğruyor
Uzun metin zaman aşımına uğrarsa:
- Sunucu metni otomatik böler ve kalan parçaları sürdürür
- Zaman aşımı olan parçalar için günlükleri denetleyin
- Girdiyi kısaltın
Ses Yanlış Geliyor
- Yinelenen heceler: genellikle emoji veya özel karakter kaynaklıdır; temizleyici işlemelidir.
- Yanlış dil:
languagedeğerini açıkça ayarlayın. - Doğal olmayan duraklamalar: olağandışı noktalama ve bölme sınırlarını denetleyin.
Eklenti Yapılandırması
Paketli eklenti (plugins/qwen-tts.json):
{
"id": "qwen-tts",
"name": "Qwen3 TTS",
"type": "tts",
"endpoint": "http://localhost:8100/v1/audio/speech",
"auth": {
"header": "",
"key_env": ""
},
"model_map": [
"qwen3-tts",
"qwen3-tts-customvoice",
"qwen3-tts-voicedesign",
"qwen3-tts-clone"
],
"capabilities": {
"tts": {
"endpoint": "http://localhost:8100/v1/audio/speech",
"model_map": [
"qwen3-tts",
"qwen3-tts-customvoice",
"qwen3-tts-voicedesign",
"qwen3-tts-clone"
],
"config": {
"voices": [
"Ryan",
"Aiden",
"Vivian",
"Serena",
"Uncle_Fu",
"Dylan",
"Eric",
"Ono_Anna",
"Sohee"
],
"default_voice": "Ryan",
"formats": ["wav"],
"default_format": "wav",
"max_characters": 10000,
"supports_streaming": false,
"no_auth_required": true
}
}
},
"description": "Qwen3-TTS local TTS server (NVIDIA CUDA, Apple MPS, or CPU)",
"documentation_url": "https://github.com/QwenLM/Qwen3-TTS"
}
Kaynaklar
- Qwen3-TTS GitHub - Resmî depo
- Qwen3-TTS Gösterimi - Çevrimiçi deneyin
- Alibaba Cloud TTS Belgeleri - Bulut API belgeleri