Ana içeriğe geç

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şenEn azÖnerilen
Python3.12+3.12 (3.14 değil)
GPU VRAM4GB (0.6B modeller)8GB+ (1.7B modeller)
RAM8GB16GB+
Disk5GB10GB

Platform Desteği​

PlatformArka uçNotlar
NVIDIA GPUCUDAEn iyi başarım, bfloat16 desteği
Apple SiliconMPSBellek verimliliği için 0.6B kullanın
CPUPyTorchDaha yavaş; 0.6B kullanın
Apple Silicon Kullanıcıları

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​

ModelBoyutKullanım
customvoice-1.7b~3.5GBYönerge denetimli hazır sesler
customvoice-0.6b~1.5GBSınırlı VRAM için hafif çeşit
voicedesign-1.7b~3.5GBMetin açıklamalarından ses oluşturma
base-1.7b~3.5GB3 saniyelik örnekten ses klonlama
base-0.6b~1.5GBHafif ses klonlama

Sesler​

Hazır Sesler (CustomVoice Modelleri)​

SesDilAçıklama
RyanİngilizceErkek, açık ve doğal
AidenİngilizceErkek, sıcak ton
VivianÇinceKadın, profesyonel
SerenaÇinceKadın, arkadaş canlısı
Uncle_FuÇinceErkek, olgun
DylanÇinceErkek, Pekin lehçesi
EricÇinceErkek, Siçuan lehçesi
Ono_AnnaJaponcaKadın
SoheeKoreceKadın

OpenAI Ses Takma Adları​

OpenAI TTS istemcileriyle uyumluluk için sunucu adları eşler:

OpenAI SesiEşleşen
alloyRyan
echoAiden
fableVivian
onyxUncle_Fu
novaSerena
shimmerOno_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"
}
ParametreTürVarsayılanAçıklama
modelstringqwen3-ttsModel tanımlayıcısı
inputstringzorunluSentezlenecek metin (en çok 10.000 karakter)
voicestringryanSes adı (yukarıdaki tablo)
response_formatstringwavSes biçimi (yalnız wav)
instructstring""Duygu/ezgi yönergesi
languagestringotomatik algılamaDil 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"
}
not

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_text=This is what was said in the reference." \
--output cloned.wav
ParametreTürAçıklama
inputstringSentezlenecek metin
reference_audiofileEn az 3 saniyelik ses örneği
reference_textstringBaşvuru sesinin dökümü
not

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çenekVarsayılanAçıklama
--host0.0.0.0Bağlanılacak ana makine
--port8100Bağlanılacak bağlantı noktası
--modelcustomvoice-1.7bYü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
  1. Diğer GPU uygulamalarını kapatın
  2. 0.6B çeşidini kullanın
  3. 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:

  1. Sunucu metni otomatik böler ve kalan parçaları sürdürür
  2. Zaman aşımı olan parçalar için günlükleri denetleyin
  3. Girdiyi kısaltın

Ses Yanlış Geliyor​

  • Yinelenen heceler: genellikle emoji veya özel karakter kaynaklıdır; temizleyici işlemelidir.
  • Yanlış dil: language değ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​