Qwen3-TTS

Qwen3-TTS उच्च-गुणवत्ता वाले टेक्स्ट-टू-स्पीच सिंथेसिस के लिए Mimi decoder के साथ 12Hz कोडेक भाषा मॉडल है। मॉडल 4-bit क्वांटाइज़्ड है और Apple Silicon पर रियल-टाइम से तेज़ चलता है।

पाइपलाइन

स्पीच सिंथेसिस तीन-चरण पाइपलाइन का पालन करता है:

  1. Talker — 28-लेयर transformer जो इनपुट टेक्स्ट को 12.5 Hz पर पहले codebook टोकन में बदलता है
  2. Code Predictor — 5-लेयर transformer जो पहले codebook hidden states से शेष 15 codebooks की भविष्यवाणी करता है
  3. Mimi Codec Decoder — सभी 16 codebook टोकन को 24 kHz ऑडियो वेवफ़ॉर्म में बदलता है

आर्किटेक्चर

Talker

Talker मुख्य ऑटोरिग्रेसिव मॉडल है जो टेक्स्ट इनपुट से कोडेक टोकन जेनरेट करता है।

पैरामीटरमान
लेयर28
Hidden dimension1024
Query heads16
Key/Value heads8 (GQA)
MLPSwiGLU
Position encodingRoPE

Code Predictor

एक हल्का 5-लेयर transformer जो पहले codebook से hidden states लेता है और शेष 15 codebooks की समानांतर भविष्यवाणी करता है। यह प्रति चरण पूरे Talker को 16 बार चलाने से बचाता है।

Mimi Codec Decoder

Mimi decoder क्वांटाइज़्ड कोडेक टोकन को वापस ऑडियो में बदलता है:

  1. RVQ decode (16 codebooks)
  2. Pre-convolution (512 से 1024 चैनल)
  3. Pre-transformer (1024 से 512 bottleneck, 8 लेयर, SwiGLU + LayerScale)
  4. Upsample (2x, 2x)
  5. SEANet decoder (8x, 5x, 4x, 3x upsample चरण)
  6. 24 kHz वेवफ़ॉर्म आउटपुट

मॉडल वेरिएंट

मॉडलआकारHuggingFace
Qwen3-TTS-0.6B Base (4-bit)1.7 GBaufklarer/Qwen3-TTS-12Hz-0.6B-Base-MLX-4bit
Qwen3-TTS-0.6B Base (8-bit)2.4 GBaufklarer/Qwen3-TTS-12Hz-0.6B-Base-MLX-8bit
Qwen3-TTS-0.6B CustomVoice (4-bit)1.7 GBaufklarer/Qwen3-TTS-12Hz-0.6B-CustomVoice-MLX-4bit
Qwen3-TTS-1.7B Base (4-bit)3.2 GBaufklarer/Qwen3-TTS-12Hz-1.7B-Base-MLX-4bit
Qwen3-TTS-1.7B Base (8-bit)4.8 GBaufklarer/Qwen3-TTS-12Hz-1.7B-Base-MLX-8bit
Qwen3-TTS CoreML (FP16)2.1 GBaufklarer/Qwen3-TTS-CoreML

CoreML बैकएंड

CoreML बैकएंड पूरी Qwen3-TTS पाइपलाइन को Core ML के माध्यम से GPU पर चलाता है, MLX निर्भरताओं के बिना iOS और macOS पर डिप्लॉयमेंट सक्षम करता है। मॉडल को Apple के कंप्यूट स्टैक के लिए अनुकूलित 6 विशेष उप-मॉडलों में विभाजित किया गया है:

  1. TextProjector — टेक्स्ट टोकन एम्बेडिंग को साझा hidden space में प्रोजेक्ट करता है
  2. CodeEmbedder — पहले-codebook टोकन और कंट्रोल टोकन को एम्बेड करता है
  3. MultiCodeEmbedder — codebooks 1–15 से टोकन एम्बेड करता है
  4. CodeDecoder — stateless KV cache (अधिकतम 256 positions) के साथ 28-लेयर ऑटोरिग्रेसिव transformer
  5. MultiCodeDecoder — codebooks 1–15 के लिए 5-लेयर code predictor
  6. SpeechDecoder — Mimi कोडेक decoder, 16 codebook टोकन को 24 kHz ऑडियो में बदलता है
# CoreML सिंथेसिस
.build/release/audio speak "Hello, world!" --engine coreml -o hello.wav

# CoreML डिफ़ॉल्ट रूप से temperature 0.8 का उपयोग करता है (गुणवत्ता आउटपुट के लिए आवश्यक)
.build/release/audio speak "Long text here." --engine coreml --temperature 0.9 -o out.wav
CoreML KV Cache सीमा

CoreML CodeDecoder एक निश्चित 256-position KV cache का उपयोग करता है। लंबे अनुच्छेदों को व्यक्तिगत वाक्यों में विभाजित किया जाना चाहिए। Decode टोकन स्वचालित रूप से prefill के बाद शेष cache स्लॉट में फ़िट होने के लिए सीमित किए जाते हैं।

CLI उपयोग

टेक्स्ट से स्पीच जेनरेट करें:

.build/release/audio speak "Hello, world!" --output hello.wav

विकल्प

फ़्लैगविवरण
--engineTTS इंजन: qwen3 (MLX, डिफ़ॉल्ट), coreml (CoreML/GPU), या cosyvoice
--output, -oआउटपुट WAV फ़ाइल पथ
--languageभाषा (डिफ़ॉल्ट: english)। स्पीकर की मूल बोली का उपयोग करने के लिए छोड़ें।
--modelमॉडल वेरिएंट: base या customVoice
--speakerस्पीकर वॉयस (--model customVoice आवश्यक)
--temperatureसैंपलिंग temperature (डिफ़ॉल्ट: 0.3)
--top-kTop-k सैंपलिंग पैरामीटर
--max-tokensजेनरेट करने के लिए टोकन की अधिकतम संख्या (डिफ़ॉल्ट: 500)
--streamस्ट्रीमिंग सक्षम करें — जेनरेशन के दौरान ऑडियो चंक्स एमिट करता है
--first-chunk-framesपहले स्ट्रीम किए गए चंक में फ़्रेम की संख्या
--chunk-framesप्रत्येक बाद के स्ट्रीम किए गए चंक में फ़्रेम की संख्या
--batch-fileबैच सिंथेसिस के लिए प्रति पंक्ति एक उच्चारण वाली टेक्स्ट फ़ाइल का पथ
--batch-sizeबैच मोड में समानांतर उच्चारणों की संख्या

उदाहरण

# बेसिक सिंथेसिस
.build/release/audio speak "The quick brown fox." -o fox.wav

# स्ट्रीमिंग आउटपुट
.build/release/audio speak "Long passage of text..." --stream -o stream.wav

# फ़ाइल से बैच सिंथेसिस
.build/release/audio speak --batch-file sentences.txt --batch-size 4 -o output_dir/

स्ट्रीमिंग

--stream फ़्लैग जेनरेशन के दौरान चंक्ड ऑडियो आउटपुट सक्षम करता है। पूरे उच्चारण के पूरा होने का इंतज़ार करने के बजाय, टोकन उत्पन्न होते ही ऑडियो चंक्स में एमिट किया जाता है। प्रत्येक चंक के आकार को नियंत्रित करने के लिए --first-chunk-frames और --chunk-frames का उपयोग करें।

बैच मोड

कई उच्चारणों को सिंथेसाइज़ करने के लिए, प्रति उच्चारण एक पंक्ति वाली टेक्स्ट फ़ाइल के साथ --batch-file का उपयोग करें। --batch-size फ़्लैग नियंत्रित करता है कि कितने उच्चारण समानांतर में प्रोसेस किए जाते हैं।

प्रदर्शन

M2 Max पर, Qwen3-TTS लगभग 0.55 का RTF (रियल-टाइम फ़ैक्टर) प्राप्त करता है, जिसका अर्थ है कि यह रियल-टाइम से तेज़ स्पीच जेनरेट करता है। compile() वार्मअप के साथ, प्रत्येक चरण में लगभग 37 ms लगता है।

सुरक्षा सीमा

डिफ़ॉल्ट अधिकतम 500 टोकन है, जो 12.5 Hz पर लगभग 40 सेकंड का ऑडियो उत्पन्न करता है। उच्च मान सेट करने से Metal GPU watchdog timeout से अधिक होने का जोखिम है, जो Apple Silicon पर सिस्टम रिबूट का कारण बन सकता है क्योंकि GPU कम्पोज़िटर के साथ साझा है।

भाषाएँ

Qwen3-TTS बहुभाषी टेक्स्ट-टू-स्पीच सिंथेसिस का समर्थन करता है। मॉडल स्वचालित रूप से इनपुट भाषा का पता लगाता है और तदनुसार स्पीच जेनरेट करता है।

Swift API

import Qwen3TTS

let model = try await Qwen3TTSModel.loadFromHub()
let audio = try await model.speak("Hello, world!")
try audio.write(to: "hello.wav")