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