Zum Hauptinhalt springen

Qwen3-TTS-Integration

Diese Anleitung richtet den enthaltenen OpenAI-kompatiblen Server für Alibaba Qwen3-TTS ein.

Überblick

Qwen3-TTS bietet 9 vorgefertigte englische, chinesische, japanische und koreanische Stimmen, 10 Sprachen einschließlich Deutsch, Französisch, Spanisch, Italienisch, Portugiesisch und Russisch, Klonen aus 3-Sekunden-Aufnahmen, Stimmendesign aus Beschreibungen und Anweisungen für Emotion und Prosodie.

Voraussetzungen

KomponenteMinimumEmpfohlen
Python3.12+3.12 (nicht 3.14)
GPU VRAM4GB (0.6B-Modelle)8GB+ (1.7B)
RAM8GB16GB+
Speicher5GB10GB

Plattformunterstützung

PlattformBackendHinweise
NVIDIA-GPUCUDABeste Leistung, bfloat16
Apple SiliconMPS0.6B für Speichereffizienz
CPUPyTorchLangsamer, 0.6B verwenden
Apple-Silicon-Benutzer

Verwende customvoice-0.6b; 1.7B kann Systeme mit 16GB Unified Memory destabilisieren.

Schnellstart

1. Server installieren

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. Server starten

# 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

Standard: http://localhost:8100.

3. Libre WebUI konfigurieren

Aktiviere plugins/qwen-tts.json unter Einstellungen → Plugins → Qwen3 TTS.

4. Testen

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

Verfügbare Modelle

ModellGrößeEinsatz
customvoice-1.7b~3.5GBVorgefertigte Stimmen und Anweisungen
customvoice-0.6b~1.5GBLeichtgewichtig
voicedesign-1.7b~3.5GBStimmen aus Beschreibungen
base-1.7b~3.5GBKlonen aus 3 Sekunden
base-0.6b~1.5GBLeichtes Klonen

Stimmen

Vorgefertigte Stimmen (CustomVoice)

StimmeSpracheBeschreibung
RyanEnglischMännlich, klar, natürlich
AidenEnglischMännlich, warm
VivianChinesischWeiblich, professionell
SerenaChinesischWeiblich, freundlich
Uncle_FuChinesischMännlich, reif
DylanChinesischPeking-Dialekt
EricChinesischSichuan-Dialekt
Ono_AnnaJapanischWeiblich
SoheeKoreanischWeiblich

OpenAI-Stimmen-Aliase

OpenAI-StimmeZuordnung
alloyRyan
echoAiden
fableVivian
onyxUncle_Fu
novaSerena
shimmerOno_Anna

API-Referenz

Spracherzeugung

Endpunkt: POST /v1/audio/speech

{
"model": "qwen3-tts",
"input": "Text to convert to speech",
"voice": "Ryan",
"response_format": "wav",
"instruct": "Speak with enthusiasm",
"language": "English"
}
ParameterTypStandardBeschreibung
modelstringqwen3-ttsModell-ID
inputstringerforderlichText, maximal 10,000 Zeichen
voicestringryanStimmenname
response_formatstringwavNur wav
instructstring""Emotion/Prosodie
languagestringautomatischSpracherkennung überschreiben

Antwort: Audio (audio/wav)

Stimmendesign

Endpunkt: 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"
}
hinweis

Benötigt voicedesign-1.7b.

Stimmenklonen

Endpunkt: 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
ParameterTypBeschreibung
inputstringZu synthetisierender Text
reference_audiofileAufnahme ab 3 Sekunden
reference_textstringTranskript
hinweis

Benötigt base-1.7b oder base-0.6b.

Stimmen auflisten

Endpunkt: GET /v1/voices

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

Gesundheitsprüfung

Endpunkt: GET /health

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

Serverkonfiguration

python server.py [OPTIONS]
OptionStandardBeschreibung
--host0.0.0.0Bind-Adresse
--port8100Port
--modelcustomvoice-1.7bModellvariante

Netzwerkzugriff

# 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 ...
{
"endpoint": "http://192.168.1.100:8100/v1/audio/speech",
"capabilities": {
"tts": {
"endpoint": "http://192.168.1.100:8100/v1/audio/speech"
}
}
}

Produktionsfunktionen

Textbereinigung

Emojis und Symbole, Markdown wie *bold* und _italic_, Wiederholungen (FUUUUUFUU), Regieanweisungen wie *(action)* und (whispers) sowie Leerraum werden bereinigt.

Textaufteilung

Maximal 500 Zeichen pro Abschnitt, 30 Sekunden Timeout; fehlerhafte Abschnitte werden übersprungen, übrige zu einer Antwort verbunden. So bleiben lange Antworten natürlich und vermeiden Timeouts.

Multi-GPU-Einrichtung

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

Fehlerbehebung

Modelldownload schlägt fehl

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

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

Speichermangel (Apple Silicon)

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

CUDA-Speichermangel

torch.cuda.OutOfMemoryError: CUDA out of memory
  1. Andere GPU-Anwendungen schließen.
  2. 0.6B verwenden.
  3. max_chunk_size=300 setzen.

Server-Timeout

Automatische Aufteilung und Logs prüfen, Eingabe bei Bedarf kürzen.

Audio klingt falsch

  • Wiederholungen: Sonderzeichen bereinigen.
  • Falsche Sprache: language setzen.
  • Unnatürliche Pausen: Zeichensetzung prüfen.

Plugin-Konfiguration

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

Ressourcen