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

Utilizzo Swift e CLI

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/

Swift e requisiti di utilizzo e bundle

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:

  1. Talker — Trasformatore a 28 strati che converte il testo in ingresso in token di primo codebook a 12.5 Hz
  2. Code Predictor — Trasformatore a 5 strati che predice i rimanenti 15 codebooks dal primo codebook stati nascosti
  3. 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.

ParametroValore
Datori di lavoro28
Dimensione nascosta1024
Teste di query16
Teste chiave/valore8 (GQA)
MLPSwiGLU
Codifica posizioneRoPE

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:

  1. RVQ decodifica (16 codebooks)
  2. Pre-convoluzione (512 - 1024 canali)
  3. Pre-trasformatore (1024 a 512 collo di bottiglia, 8 strati, SwiGLU + LayerScale)
  4. Upsample (2x, 2x)
  5. decoder SEANet (8x, 5x, 4x, 3x tappe di upsample)
  6. Uscita della forma d'onda 24 kHz

Varianti di modello

ModelloDimensioneHuggingFace
Qwen3-TTS-0.6B Base (8-bit)1.3 GBaufklarer/Qwen3-TTS-12Hz-0.6B-Base-MLX-8bit
Qwen3-TTS-1.7B Base (8-bit)2.4 GBaufklarer/Qwen3-TTS-12Hz-1.7B-Base-MLX-8bit
Qwen3-TTS-1.7B Base ( bf16, default)3.9 GBaufklarer/Qwen3-TTS-12Hz-1.7B-Base-MLX-bf16
Qwen3-TTS-0.6B Voce personalizzata ( bf161.8 GBaufklarer/Qwen3-TTS-12Hz-0.6B-CustomVoice-MLX-bf16
Qwen3-TTS CoreML (FP16)2.1 GBaufklarer/Qwen3-TTS-CoreML

Indietro di CoreML

CoreML esegue sei componenti compilati. Il completamento dipende dal pacchetto selezionato.

  1. TextProjector — Progetti di testo token embeddings allo spazio nascosto condiviso
  2. CodeEmbedder — Incorpora i token del primo codice e i token di controllo
  3. MultiCodeEmbedder — Embeds tokens from codebooks 1–15
  4. CodeDecoder — Trasformatore autoregressivo a 28 strati con cache KV senza stato (max 256 posizioni)
  5. MultiCodeDecoder — Preventivo di codice a 5 strati per i codebook 1–15
  6. 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
CoreML KV Cache Limit

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

BandieraDesignazione
--engineTTS motore: qwen3 ( MLX, default), coreml( CoreML / GPU), o cosyvoice
--output, -oUscita WAV percorso file
--languageLingua (default: inglese). Omettere di usare il dialetto nativo dell'oratore.
--modelVariazione del modello: base o customVoice
--speakerVoce nominale (richiesto --model customVoice)
--temperatureTemperatura di campionamento (default: 0.3)
--top-kParametro di campionamento Top-k
--max-tokensNumero massimo di token da generare (default: 500)
--streamAttiva lo streaming — emette blocchi audio durante la generazione
--first-chunk-framesNumero di cornici nel primo pezzo in streaming
--chunk-framesNumero di fotogrammi per successivo pezzo in streaming
--batch-filePercorso a un file di testo con una pronuncia per linea per sintesi batch
--batch-sizeNumero 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.

Limite di sicurezza

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
)
Politica della memoria

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

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

Leggi la guida Voxtral TTS