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_audio=@reference.wav" \
-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 (FUUUUUFUU)
  • 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