Traduzione automatica · Originale inglese
Qwen3-TTS
Tempo di esecuzione nativo di Apple · PocketTTS
PocketTTS aggiunge la sintesi vocale nativo CoreML a speech-swift. Tutte le fasi di default all'esecuzione della CPU. I flussi preimpostati di Alba inglese 1,920-sample frame a 24 kHz (80 ms per frame).
Voxtral TTS download predefiniti
Voxtral TTS scarica i pesi del modello, tokenizer, config e tutti i 20 file vocali preimpostati sul primo utilizzo. Il caricamento in linea richiede il pacchetto completo della cache, inclusi tutti i file in voice_embedding/
Qwen3-TTS è un 12Hz modello di linguaggio codec con un Mimi decoder per la sintesi test-speech di alta qualità. MLX il sentiero ora utilizza 1.7Base B bf16 fascio; 8-bit bundle rimangono disponibili per i download più piccoli. int4 è stato decommesso per TTS qualità.
VoxCPM2 vs Qwen3-TTS · Confronto e metodologia di clonazione vocale a cinque lingue.
Pipeline
La sintesi vocale segue una pipeline a tre stadi:
- Talker — Trasformatore a 28 strati che converte il testo in ingresso in token di primo codebook a 12.5 Hz
- Code Predictor — Trasformatore a 5 strati che predice i rimanenti 15 codebooks dal primo codebook stati nascosti
- Mimi Codec Decoder — Converte tutti i 16 token del codebook in una forma d'onda audio a 24 kHz
Architettura
Parlante
Il Talker è il modello core autoregressive che genera token codec da input di testo.
| Parametro | Valore |
|---|---|
| Datori di lavoro | 28 |
| Dimensione nascosta | 1024 |
| Teste di query | 16 |
| Teste chiave/valore | 8 (GQA) |
| MLP | SwiGLU |
| Codifica posizione | RoPE |
Codice Precisore
Un trasformatore a 5 strati leggero che prende gli stati nascosti dal primo codebook e prevede i rimanenti 15 codebooks in modo autoregressivo. Per la sintesi di un singolo-item, il loop fisso di 15 gruppi viene eseguito come un grafico compilato.
Decoder del codice Mimi
Il decoder Mimi converte i token codec quantizzati in audio:
- RVQ decodifica (16 codebooks)
- Pre-convoluzione (512 - 1024 canali)
- Pre-trasformatore (1024 a 512 collo di bottiglia, 8 strati, SwiGLU + LayerScale)
- Upsample (2x, 2x)
- decoder SEANet (8x, 5x, 4x, 3x tappe di upsample)
- Uscita della forma d'onda 24 kHz
Varianti di modello
| Modello | Dimensione | HuggingFace |
|---|---|---|
| Qwen3-TTS-0.6B Base (8-bit) | 1.3 GB | aufklarer/Qwen3-TTS-12Hz-0.6B-Base-MLX-8bit |
| Qwen3-TTS-1.7B Base (8-bit) | 2.4 GB | aufklarer/Qwen3-TTS-12Hz-1.7B-Base-MLX-8bit |
| Qwen3-TTS-1.7B Base ( bf16, default) | 3.9 GB | aufklarer/Qwen3-TTS-12Hz-1.7B-Base-MLX-bf16 |
| Qwen3-TTS-0.6B Voce personalizzata ( bf16 | 1.8 GB | aufklarer/Qwen3-TTS-12Hz-0.6B-CustomVoice-MLX-bf16 |
| Qwen3-TTS CoreML (FP16) | 2.1 GB | aufklarer/Qwen3-TTS-CoreML |
Indietro di CoreML
CoreML esegue sei componenti compilati. Il completamento dipende dal pacchetto selezionato.
- TextProjector — Progetti di testo token embeddings allo spazio nascosto condiviso
- CodeEmbedder — Incorpora i token del primo codice e i token di controllo
- MultiCodeEmbedder — Embeds tokens from codebooks 1–15
- CodeDecoder — Trasformatore autoregressivo a 28 strati con cache KV senza stato (max 256 posizioni)
- MultiCodeDecoder — Preventivo di codice a 5 strati per i codebook 1–15
- SpeechDecoder — Mimi decoder codec, converte 16 token codebook a 24 kHz audio
# CoreML synthesis
.build/release/speech speak "Hello, world!" --engine coreml -o hello.wav
# CoreML uses temperature 0.8 by default (required for quality output)
.build/release/speech speak "Long text here." --engine coreml --temperature 0.9 -o out.wav
0.6B: Il CoreML CodeDecoder utilizza una cache KV a 256 posizioni fissa. I passaggi più lunghi devono essere suddivisi in singole frasi. I gettoni Decode sono automaticamente bloccati per adattarsi all'interno delle slot cache rimanenti dopo la prefill.
1,7B CoreML esportazione
Il decoder utilizza il calcolo FP32 perché FP16 fail checkpoint validation; i tensori della cache rimangono FP16
Il convertitore a sei componenti supporta la Base 1.7B e un CodeDecoder a 1024 posizioni. Il diffusore e l'integrazione dei diffusori hanno 2048 canali; il predittore di codice a 1024 canali include la sua proiezione di ingresso addestrata.
Swift Supporti 0.6B/256 e 1.7B/1024 fasci; 0.6B rimane l'impostazione predefinita. 1.7B pacchetti di default a CPU e richiede un preparato 2048-canale Float32 .npy embedding del diffusore tramite --speaker-embeddingLa convalida GPU/ANE e iOS rimangono separate.
SpeechDecoder ha un limite di default separato di 125 frame (10 secondi); una cache CodeDecoder più grande non lo ingrandisce.
Fonte di conversione e guida di validazione
speech qwen3-tts-coreml "Hello world" \
--model aufklarer/Qwen3-TTS-1.7B-CoreML \
--speaker-embedding speaker-17b.npy --output hello-17b.wav
Uso CLI
Generare il discorso dal testo:
.build/release/speech speak "Hello, world!" --output hello.wav
Opzioni
| Bandiera | Designazione |
|---|---|
--engine | TTS motore: qwen3 ( MLX, default), coreml( CoreML / GPU), o cosyvoice |
--output, -o | Uscita WAV percorso file |
--language | Lingua (default: inglese). Omettere di usare il dialetto nativo dell'oratore. |
--model | Variazione del modello: base o customVoice |
--speaker | Voce nominale (richiesto --model customVoice) |
--temperature | Temperatura di campionamento (default: 0.3) |
--top-k | Parametro di campionamento Top-k |
--max-tokens | Numero massimo di token da generare (default: 500) |
--stream | Attiva lo streaming — emette blocchi audio durante la generazione |
--first-chunk-frames | Numero di cornici nel primo pezzo in streaming |
--chunk-frames | Numero di fotogrammi per successivo pezzo in streaming |
--batch-file | Percorso a un file di testo con una pronuncia per linea per sintesi batch |
--batch-size | Numero di espressioni parallele in modalità batch |
Esempi
# Basic synthesis
.build/release/speech speak "The quick brown fox." -o fox.wav
# Streaming output
.build/release/speech speak "Long passage of text..." --stream -o stream.wav
# Batch synthesis from file
.build/release/speech speak --batch-file sentences.txt --batch-size 4 -o output_dir/
Streaming
Il --stream Invece di aspettare che l'intera emissione completa, l'audio viene emesso in pezzi come gettoni sono prodotti. --first-chunk-frames e --chunk-frames per controllare le dimensioni di ogni pezzo.
Modalità Batch
Per sintetizzare più pronunciamenti, utilizzare --batch-file con un file di testo contenente una riga per enunciazione. La bandiera --batch-size controlla quante espressioni vengono elaborate in parallelo.
Prestazioni
Su un M2 Max, Qwen3-TTS raggiunge un RTF (fattore in tempo reale) di circa 0,55, il che significa che genera un discorso più veloce del tempo reale. Con compile() warmup, ogni passo richiede circa 37 ms.
Il massimo predefinito è il gettoni 500, che produce circa i secondi 40 dell'audio a 12.5 Hz. Impostare i rischi di valori più elevati che superano il timeout Metal GPU del watchdog, che può causare un riavvio del sistema su Apple Silicon in quanto lo GPU è condiviso con il compositore.
Lingue
Qwen3-TTS supporta la sintesi multilingue del testo-to-speech. Il modello rileva automaticamente la lingua d'ingresso e genera il discorso di conseguenza.
Swift API
import Qwen3TTS
import AudioCommon
let model = try await Qwen3TTSModel.fromPretrained()
let audio = model.synthesize(text: "Hello, world!", language: "english")
try WAVWriter.write(samples: audio, sampleRate: 24000, to: URL(filePath: "hello.wav"))
Fasci di sola locale
Utilizzare fromLocal quando l'app possiede l'acquisizione e lo storage del modello. Passare separatamente le principali directory TTS modello e word-tokenizer. La chiamata non risolve mai una cache o contatta la rete, e legge il pacchetto principale config.json prima di assegnare moduli MLX
let model = try Qwen3TTSModel.fromLocal(
modelDirectory: ttsDirectory,
tokenizerDirectory: speechTokenizerDirectory
)
fromLocal di default a .none, quindi non cambia il limite di memoria cablato Metal a livello di processo. fromPretrained mantiene la sua .pin(fraction: 0.9) default. Entrambi i caricatori pre-trained accettano un separato tokenizerCacheDir.
Diagnostica
Qwen3-TTS invia la diagnostica per il caricamento del modello e l'inferenza a AudioLog.modelLoading e AudioLog.inference invece di stdout o stderr. Conti, forme e tempi rimangono visibili; linguaggio e valori di altoparlante non sono mai ingressi privati, testo.
Voxtral TTS
Voxtral 4B TTS 2603 funziona localmente su Apple Silicon attraverso il modulo VoxtraLTTS: 20 voci predefinite, nove lingue e 24 kHz monolingua.
speech speak "Hello, welcome to Voxtral." --engine voxtral --voxtral-voice casual_male --stream --voxtral-chunk-frames 3 -o hello.wav
speech speak --engine voxtral --list-speakers
speech speak "Bonjour." --engine voxtral --voxtral-voice fr_female --voxtral-max-frames 500 --voxtral-seed 0 -o bonjour.wavSolo le voci preimpostate; la clonazione audio di riferimento non è disponibile. I flussi di output audio attraverso il SDK, CLI, WebSocket e HTTP PCM. Fornire il testo di input completo sul fronte. I pesi del modello utilizzano CC BY-NC 4.0.