Maskinoversættelse · Engelsk original
Qwen3-TTS
Indfødt Apple runtime · PocketTTS
PocketTTS tilføjer indfødt CoreML talesyntesse til speech-swift. Alle trin standard til CPU- kun udførelse. Den engelske Alba forudindstillet streams 1,920- prøvesæt på 24 kHz (80 ms per frame).
Voxtral TTS forudindstillet downloads
Voxtral TTS downloader modelvægte, config og alle 20 forudindstillede stemmefiler ved første brug. Offline indlæsning kræver den komplette cachet bundt, herunder hver fil i voice_embedding/.
Qwen3-TTS er et 12Hz codec sprogmodel med en Mimi dekoder til højkvalitets tekst- to- talesyntesse. Standard MLX sti bruger nu 1.7B Base bf16 bundt 8-bit bundter forbliver tilgængelige for mindre downloads. int4 blev nedlagt for TTS kvalitet.
VoxCPM2 vs Qwen3-TTS · Fuld 5-sprog stemme-kloning sammenligning og metodologi.
Pipeline
Talesyntesen følger en tretrins rørledning:
- Oplæser - 28- layer transformer, der konverterer input tekst til første kodebog tokens på 12.5 Hz
- Kode Forudsigelse - 5- lag transformer, der forudsiger de resterende 15 kodebøger fra den første kodebog skjulte stater
- Mimi Codec Decoder - Konverterer alle 16 codebook tokens til en 24 kHz lydbølgeform
Arkitektur
Oplæser
Den Oplæser er den centrale autoregressive model, der genererer codec tokens fra tekst input.
| Parameter | Værdi |
|---|---|
| Lag | 28 |
| Skjult dimension | 1024 |
| Pelshoveder | 16 |
| Nøgle / værdihoved | 8 (GQA) |
| MLP | SVIGLU |
| Positionskodning | RoPE |
Kode Forudsigelse
En letvægts 5- lag transformer, der tager de skjulte tilstande fra den første kodebog og forudsiger de resterende 15 kodebøger autoregressivt. For single- element syntese, den faste 15- gruppe loop kører som en kompileret graf.
Mimi Codec Decoder
Mimi dekoder konverterer kvantiseret codec tokens tilbage til lyd:
- RVQ-dekode (16 kodebøger)
- Præ- convolution (512 til 1024 kanaler)
- Pre- transformer (1024 til 512 flaskehals, 8 lag, SwiGLU + LayerScale)
- Upsampe (2x, 2x)
- SEANET-dekoder (8x, 5x, 4x, 3x upsampe)
- 24 kHz bølgeform output
Model Variants
| Model | Størrelse | 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, standard) | 3.9 GB | aufklarer / Qwen3-TTS-12Hz-1.7B-Base-MLX-bf16 |
| Qwen3-TTS-0.6B CustomVoice (bf16) | 1,8 GB | aufklarer / Qwen3-TTS-12Hz-0.6B-CustomVoice-MLX-bf16 |
| Qwen3-TTS CoreML (FP16) | 2.1 GB | aufklarer / Qwen3-TTS-CoreML |
CoreML backend
CoreML kører seks kompilerede komponenter. Compute placering afhænger af det valgte bundt.
- Tekstprojektor - Projekter tekst token indlejringer til den delte skjulte rum
- CodeEmbedder - Indlejringer første- codebook tokens og kontrol tokens
- MultiCodeEmbedder - Indlejringer tokens fra kodebøger 1- 15
- CodeDecoder - 28- layer autoregressiv transformator med statsløs KV cache (max 256 positioner)
- MultiCodeDecoder - 5- layer code predictor for codebooks 1-15
- SpeechDecoder - Mimi codec dekoder, konverterer 16 kodebook tokens til 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: CoreML CodeDecoder bruger en fast 256- position KV cache. Længere passager bør opdeles i individuelle sætninger. Decode tokens er automatisk begrænset til at passe inden for resterende cache slots efter præfill.
Eksperimentel 1.7B CoreML eksport
Dekoderen bruger FP32 beregning, fordi FP16 mislykkedes validering af checkpoint; cache tensors forbliver FP16.
Six- komponent konverteren understøtter 1.7B Base og en 1024- position stateful CodeDecoder. Taleren og højttaleren indlejring har 2048 kanaler; 1024- kanal kode forudsigeren omfatter sin uddannede input projektion.
Swift Understøtter 0.6B /256 og 1.7B /1024 bundter 0.6B forbliver standard. 1.7B bundfejl til CPU og kræver en forberedt 2048-kanal Float32 .npy højttaler indlejring via --speaker-embeddingGPU / ANE og iOS valideringen forbliver adskilt.
Cachen indeholder hurtige og lyd positioner. SpeechDecoder har en separat standard grænse på 125 rammer (10 sekunder); en større CodeDecoder cache ikke forstørre det.
Omregningskilde og valideringsvejledning
speech qwen3-tts-coreml "Hello world" \
--model aufklarer/Qwen3-TTS-1.7B-CoreML \
--speaker-embedding speaker-17b.npy --output hello-17b.wav
CLI-brug
Generér tale ud fra tekst:
.build/release/speech speak "Hello, world!" --output hello.wav
Indstillinger
| Flag | Varebeskrivelse |
|---|---|
--engine | TTS motor: qwen3 (MLX, standard) coreml (CoreML / GPU) eller cosyvoice |
--output, -o | Output WAV filsti |
--language | Sprog (standard: engelsk). Omit til at bruge højttalerens indfødte dialekt. |
--model | Model variant: base eller customVoice |
--speaker | Talsmand (kræver --model customVoice) |
--temperature | Prøvetagningstemperatur (standard: 0,3) |
--top-k | Parameter for top- k prøvetagning |
--max-tokens | Maksimalt antal tokens at generere (standard: 500) |
--stream | Aktivér streaming - udsender lydstykker under generationen |
--first-chunk-frames | Antal rammer i det første streamede stykke |
--chunk-frames | Antal rammer pr. efterfølgende streamet stykke |
--batch-file | Sti til en tekstfil med én angivelse pr. linje for batch syntese |
--batch-size | Antal parallelle udtalelser i batchtilstand |
Eksempler
# 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
Den --stream flag gør det muligt chunked lyd output under generationen. I stedet for at vente på hele udsagn for at fuldføre, lyd er udsendt i stykker som tokens er produceret. --first-chunk-frames og --chunk-frames til at kontrollere størrelsen af hvert stykke.
Batchtilstand
Til syntetisering af flere ord, brug --batch-file med en tekstfil, der indeholder en linje pr. indlæg. --batch-size flag kontrollerer, hvor mange udtalelser der behandles parallelt.
Præstation
På et M2 Max, Qwen3-TTS opnår en RTF (realtidsfaktor) på cirka 0.55, hvilket betyder, at det genererer tale hurtigere end real- tid. compile() opvarmning, hvert trin tager omkring 37 ms.
Standard maksimum er 500 tokens, som producerer ca. 40 sekunder lyd på 12.5 Hz. Fastsættelse af højere værdier risikerer at overstige Metal GPU watchdog timeout, som kan forårsage et system genstarte på Apple Silicon siden GPU er delt med komponisten.
Sprog
Qwen3-TTS understøtter flersproget tekst- to- tale syntese. Modellen registrerer automatisk inputsproget og genererer tale i overensstemmelse hermed.
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"))
Lokal-kun bundter
Anvendelse fromLocal når din app ejer model erhvervelse og opbevaring. Pass de vigtigste TTS model og speech- precizer mapper separat. Opkaldet aldrig løser en cache eller kontakter netværket, og læser de vigtigste bundt config.json inden tildeling af MLX-moduler.
let model = try Qwen3TTSModel.fromLocal(
modelDirectory: ttsDirectory,
tokenizerDirectory: speechTokenizerDirectory
)
fromLocal standard til .none, så det ændrer ikke proces- wired Metal wired- memory limit. fromPretrained holder sin .pin(fraction: 0.9) standard. Begge forudtrænede læssere accepterer en separat tokenizerCacheDir.
Diagnostik
Qwen3-TTS sender model- loading og inferens diagnostik til AudioLog.modelLoading og AudioLog.inference i stedet for stdout eller stderr. Tæller, former og tidspunkter forbliver synlige; opkald-forudsat sprog og højttalerværdier er private, og input tekst er aldrig logget.
Voxtral TTS
Voxtral 4B TTS 2603 kører lokalt Apple Silicon gennem Voxtral TTS-modulet: 20 forudindstillet stemmer, ni sprog, og 24 kHz mono tale.
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.wavForetag kun stemmer; reference- audio kloning er ikke tilgængelig. Lydoutput strømme gennem SDK, CLI, WebSocket og HTTP PCM. Levere den komplette input tekst op foran. Model vægte bruge CC BY-NC 4.0.