Qwen3-TTS integráció
Futtassa helyben az Alibaba Qwen3-TTS modelljét. Ez az útmutató a Libre WebUI részét képező, OpenAI-kompatibilis TTS-szervert állítja be.
Áttekintés
A Qwen3-TTS kilenc kész hangot kínál angol, kínai, japán és koreai nyelven, összesen tíz nyelvet támogat, három másodperces mintából hangot klónoz, természetes nyelvű leírásból hangot tervez, valamint érzelmi és prozódiai utasításokat követ. A szerver OpenAI-kompatibilis API-val veszi körül.
Követelmények
| Összetevő | Minimum | Ajánlott |
|---|---|---|
| Python | 3.12+ | 3.12 (nem 3.14) |
| GPU VRAM | 4GB (0.6B) | 8GB+ (1.7B) |
| RAM | 8GB | 16GB+ |
| Lemez | 5GB | 10GB |
Platformok
| Platform | Backend | Megjegyzés |
|---|---|---|
| NVIDIA GPU | CUDA | Legjobb teljesítmény, bfloat16 |
| Apple Silicon | MPS | Memóriakíméléshez használja a 0.6B modellt |
| CPU | PyTorch | Lassabb; használja a 0.6B modellt |
Macen használja a customvoice-0.6b modellt. Az 1.7B változat instabillá teheti a 16GB egyesített memóriával rendelkező gépet.
Gyors kezdés
1. A szerver telepítése
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. A szerver elindítása
# 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
A szerver a http://localhost:8100 címen fut.
3. A Libre WebUI beállítása
A plugins/qwen-tts.json használatra kész. Engedélyezze a Settings → Plugins → Qwen3 TTS elemet.
4. Tesztelés
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
Elérhető modellek
| Modell | Méret | Használat |
|---|---|---|
customvoice-1.7b | ~3.5GB | Kész hangok és utasítások |
customvoice-0.6b | ~1.5GB | Könnyű változat |
voicedesign-1.7b | ~3.5GB | Hang leírásból |
base-1.7b | ~3.5GB | Három másodperces hangklónozás |
base-0.6b | ~1.5GB | Könnyű hangklónozás |
Hangok
Kész hangok
| Hang | Nyelv | Leírás |
|---|---|---|
| Ryan | Angol | Férfi, tiszta, természetes |
| Aiden | Angol | Férfi, meleg hangzású |
| Vivian | Kínai | Női, professzionális |
| Serena | Kínai | Női, barátságos |
| Uncle_Fu | Kínai | Férfi, érett |
| Dylan | Kínai | Pekingi nyelvjárás |
| Eric | Kínai | Szecsuáni nyelvjárás |
| Ono_Anna | Japán | Női |
| Sohee | Koreai | Női |
OpenAI-aliasok
| OpenAI-hang | Megfelelő hang |
|---|---|
alloy | Ryan |
echo | Aiden |
fable | Vivian |
onyx | Uncle_Fu |
nova | Serena |
shimmer | Ono_Anna |
API-referencia
Beszéd generálása
Végpont: POST /v1/audio/speech
{
"model": "qwen3-tts",
"input": "Text to convert to speech",
"voice": "Ryan",
"response_format": "wav",
"instruct": "Speak with enthusiasm",
"language": "English"
}
| Paraméter | Típus | Alapérték | Leírás |
|---|---|---|---|
model | string | qwen3-tts | Modellazonosító |
input | string | kötelező | Szöveg, legfeljebb 10 000 karakter |
voice | string | ryan | Hang neve |
response_format | string | wav | Csak wav |
instruct | string | "" | Érzelem/prozódia |
language | string | auto | Nyelv felülírása |
Válasz: fájl (audio/wav)
Hangtervezés
Végpont: POST /v1/audio/voice-design
{
"model": "qwen3-tts-voicedesign",
"input": "Welcome to our service.",
"voice_description": "A warm, friendly female voice with a slight British accent",
"language": "English"
}
A voicedesign-1.7b modell szükséges.
Hangklónozás
Végpont: POST /v1/audio/voice-clone
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
| Paraméter | Típus | Leírás |
|---|---|---|
input | string | Szintetizálandó szöveg |
reference_audio | file | Legalább 3 másodperces hang |
reference_text | string | A referenciaminta átirata |
A base-1.7b vagy base-0.6b modell szükséges.
Hangok listája
Végpont: GET /v1/voices
{
"voices": [
{"id": "ryan", "name": "Ryan", "language": "English"},
{"id": "aiden", "name": "Aiden", "language": "English"},
...
]
}
Állapotellenőrzés
Végpont: GET /health
{ "status": "healthy", "model_loaded": true }
A szerver beállítása
python server.py [OPTIONS]
| Beállítás | Alapérték | Leírás |
|---|---|---|
--host | 0.0.0.0 | Csatolási host |
--port | 8100 | Csatolási port |
--model | customvoice-1.7b | Modellváltozat |
Hálózati hozzáférés
# 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 ...
Frissítse a plugins/qwen-tts.json fájlt:
{
"endpoint": "http://192.168.1.100:8100/v1/audio/speech",
"capabilities": {
"tts": {
"endpoint": "http://192.168.1.100:8100/v1/audio/speech"
}
}
}
Éles funkciók
Szövegtisztítás
A szerver eltávolítja az emojikat, szimbólumokat, a *bold* és _italic_ formájú Markdown-jelöléseket, a *(action)* és (whispers) utasításokat, a FUUUUU alakot FUU értékre rövidíti, és normalizálja a szóközöket.
Szegmentálás
A hosszú szöveget mondatokra bontja: legfeljebb 500 karakter, 30 másodperces timeout, a sikertelen szegmenseket kihagyja, a többit összefűzi.
Több GPU
A szerver egyetlen GPU használatát kényszeríti ki:
device_map = {"": "cuda:0"} # Uses first GPU only
CUDA_VISIBLE_DEVICES=1 python server.py --model customvoice-1.7b
Hibaelhárítás
A modell letöltése sikertelen
# Set Hugging Face token for gated models
export HF_TOKEN=hf_...
# Or download manually
huggingface-cli download Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice
Memóriahiány (Apple Silicon)
RuntimeError: MPS backend out of memory
python server.py --model customvoice-0.6b
CUDA-memóriahiány
torch.cuda.OutOfMemoryError: CUDA out of memory
Zárja be a többi GPU-alkalmazást, használja a 0.6B modellt, vagy csökkentse a max_chunk_size=300 értéket.
Szerver-timeout
Ellenőrizze a naplókat, és szükség esetén rövidítse a bemenetet.
Hibás hang
Az ismétlődéseket általában szimbólumok okozzák; a hibás nyelv a language mezővel, a szünetek normál írásjelekkel javíthatók.
A bővítmény beállítása
{
"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"
}
Források
- Qwen3-TTS GitHub — hivatalos repository
- Qwen3-TTS Demo — online bemutató
- Alibaba Cloud TTS — cloud API-dokumentáció