Hop til hovedindhold

Qwen3-TTS-integration

Kør Alibabas Qwen3-TTS lokalt til flersproget tekst til tale i høj kvalitet. Guiden konfigurerer den OpenAI-kompatible TTS-server, der følger med Libre WebUI.

Oversigt​

Qwen3-TTS tilbyder ni færdige stemmer på engelsk, kinesisk, japansk og koreansk; understøttelse af ti sprog; stemmekloning fra tre sekunders lyd; stemmedesign ud fra beskrivelser i naturligt sprog; og instruktioner til følelse og prosodi. Serveren omslutter modellen med et OpenAI-kompatibelt API, så Libre WebUI kan bruge den gennem standardsystemet til plugins.

Krav​

KomponentMinimumAnbefalet
Python3.12+3.12 (ikke 3.14)
GPU VRAM4GB (0.6B)8GB+ (1.7B)
RAM8GB16GB+
Disk5GB10GB

Platforme​

PlatformBackendBemærkning
NVIDIA GPUCUDABæst ydeevne, bfloat16
Apple SiliconMPSBrug 0.6B for hukommelsen
CPUPyTorchLangsommere, brug 0.6B
Apple Silicon

Brug customvoice-0.6b på Mac. 1.7B kan gøre 16 GB samlet hukommelse ustabilt.

Hurtig start​

1. Installer serveren​

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. Start serveren​

# 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

Standardadressen er http://localhost:8100.

3. Konfigurer Libre WebUI​

plugins/qwen-tts.json er førkonfigurerad. Aktivera Settings → Plugins → Qwen3 TTS.

4. Test​

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

Tilgængelige modeller​

ModelStørrelseAnvændning
customvoice-1.7b~3.5GBFærdiga stemmer og instruktioner
customvoice-0.6b~1.5GBLætt variant
voicedesign-1.7b~3.5GBStemme fra tekstbeskrivelse
base-1.7b~3.5GBKloning fra tre sekunder
base-0.6b~1.5GBLætt kloning

Røster​

Færdiga stemmer (CustomVoice)​

StemmeSpråkBeskrivelse
RyanEngelskaManlig, tydelig, naturlig
AidenEngelskaManlig, varm
VivianKinesiskaKvinnlig, professionell
SerenaKinesiskaKvinnlig, vænlig
Uncle_FuKinesiskaManlig, mogen
DylanKinesiskaManlig, Beijingdialekt
EricKinesiskaManlig, Sichuandialekt
Ono_AnnaJapanskaKvinnlig
SoheeKoreanskaKvinnlig

OpenAI-røstalias​

OpenAI-stemmeMappas til
alloyRyan
echoAiden
fableVivian
onyxUncle_Fu
novaSerena
shimmerOno_Anna

API-reference​

Talgenerering​

Endpoint: POST /v1/audio/speech

{
"model": "qwen3-tts",
"input": "Text to convert to speech",
"voice": "Ryan",
"response_format": "wav",
"instruct": "Speak with enthusiasm",
"language": "English"
}
ParameterTypStandardBeskrivelse
modelstringqwen3-ttsModel-id
inputstringkrævesText, højst 10 000 tegn
voicestringryanRøstnamn
response_formatstringwavKun wav
instructstring""Kænsla/prosodi
languagestringautomatiskØverstyr språkdetektering

Svar: lydfil (audio/wav)

Røstdesign​

Endpoint: 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"
}
bemærkning

Kræver voicedesign-1.7b.

Røstkloning​

Endpoint: 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_text=This is what was said in the reference." \
--output cloned.wav
ParameterTypBeskrivelse
inputstringText at syntetisera
reference_audiofileMinst tre sekunders lyd
reference_textstringTranskript af referensen
bemærkning

Kræver base-1.7b eller base-0.6b.

Vis stemmer​

Endpoint: GET /v1/voices

{
"voices": [
{"id": "ryan", "name": "Ryan", "language": "English"},
{"id": "aiden", "name": "Aiden", "language": "English"},
...
]
}

Hælsokontroll​

Endpoint: GET /health

{ "status": "healthy", "model_loaded": true }

Serverkonfiguration​

python server.py [OPTIONS]
AlternativStandardBeskrivelse
--host0.0.0.0Bindningsværd
--port8100Bindningsport
--modelcustomvoice-1.7bModelvariant

Nætverksåtkomst​

# 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 ...

Opdatera plugins/qwen-tts.json:

{
"endpoint": "http://192.168.1.100:8100/v1/audio/speech",
"capabilities": {
"tts": {
"endpoint": "http://192.168.1.100:8100/v1/audio/speech"
}
}
}

Produktionsfunktioner​

Textsanering​

Serveren fjerner emoji, symboler og Markdown som *bold* og _italic_, fjerner sceneanvisninger som *(action)* og (whispers), forkorter FUUUUU til FUU og normaliserer mellemrum for at undgå modelstop.

Textuppdeling​

Lång tekst deles ved meningsgrænser: højst 500 tegn per del, 30 sekunders timeout, mislykkede deler hoppas over og resten sammanfogas til et lydsvar.

Flera GPU'er​

Serveren tvinger brugen af én GPU for at undgå konflikter mellem tensorenheder:

device_map = {"": "cuda:0"} # Uses first GPU only
CUDA_VISIBLE_DEVICES=1 python server.py --model customvoice-1.7b

Fejlfinding​

Modelhæmtning mislykkes​

# Set Hugging Face token for gated models
export HF_TOKEN=hf_...

# Or download manually
huggingface-cli download Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice

Slut på hukommelse (Apple Silicon)​

RuntimeError: MPS backend out of memory
python server.py --model customvoice-0.6b

Slut på CUDA-hukommelse​

torch.cuda.OutOfMemoryError: CUDA out of memory

Luk andre GPU-apps, brug 0.6B eller minska max_chunk_size=300.

Serveren får timeout​

Serveren opdeler automatisk teksten. Kontrollér loggen for at se, hvilke dele der fik timeout, og forkort inputteksten efter behov.

Lydet låter fejl​

Upprepningar orsakas ofta af symboler, fejl sprog løses med language, og onaturliga pauser kan bero på ovanlig interpunktion.

Pluginskonfiguration​

{
"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"
}

Resurser​