Automatische vertaling · Engels origineel
Qwen3-TTS
Inheemse Apple runtime · PocketTTS
PocketTTS voegt native CoreML spraaksynthese toe aan speech-swift. Alle fasen zijn standaard voor CPU-uitvoering. De Engelse Alba-voorinstelling streamt 1.920-sample frames op 24 kHz (80 ms per frame).
Voxtral TTS vooraf ingestelde downloads
Voxtral TTS downloadt bij het eerste gebruik de modelgewichten, tokenmachine, configuratie en alle 20 vooraf ingestelde spraakbestanden. Offline laden vereist de volledige gecachede bundel, inclusief elk bestand in voice_embedding/.
Qwen3-TTS is een 12Hz codec taalmodel met een Mimi decoder voor een hoogwaardige tekst-naar-spraak synthese. Het standaard MLX pad gebruikt nu de 1.7B Base bf16 bundel; 8-bit bundels blijven beschikbaar voor kleinere downloads. int4 werd ontmanteld voor TTS
VoxCPM2 vs Qwen3-TTS · Volledige vergelijking en methodologie met vijf talen.
Pijpleiding
De spraaksynthese volgt een drietrapspijplijn:
- Talker ..28-layer transformator die inputtekst omzet in eerste codebook tokens op 12,5 Hz
- Code Predictor .. 5-layer transformator die de resterende 15 codeboeken uit de eerste verborgen codeboektoestanden voorspelt
- Mimi Codec Decoder Converteert alle 16 codebook tokens in een 24 kHz audio waveform
Architectuur
Spreker
De spreker is het core autoregressief model dat codec tokens genereert van tekstinvoer.
| Parameter | Waarde |
|---|---|
| Lagen | 28 |
| Verborgen dimensie | 1024 |
| Zoekkoppen | 16 |
| Sleutel/waarde hoofden | 8 (GQA) |
| MLP | SwiGLU |
| Positiecodering | RoPE |
Code predicteur
Een lichtgewicht 5-laags transformator die de verborgen toestanden uit het eerste codeboek haalt en de resterende 15 codeboeken autoregressief voorspelt. Voor een enkele-item synthese, draait de vaste 15-groep loop als een gecompileerde grafiek.
Mimi Codec Decoder
De Mimi decoder zet gequantiseerde codec tokens terug in audio:
- RVQ decoderen (16 codeboeken)
- Preconcentratie (512 tot 1024 kanalen)
- Voortransformator (1024 tot 512 knelpunt, 8 lagen, SwiGLU + Laagschaal)
- Upsample (2x, 2x)
- SEANet decoder (8x, 5x, 4x, 3x upsample stadia)
- 24 kHz golfvorm uitgang
Model Varianten
| Model | Grootte | 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, standaard) | 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 draait zes gecompileerde componenten. Bereken plaatsing hangt af van de geselecteerde bundel.
- TekstProjector
- CodeEmbedder
- MultiCodeEmbedder Inbedden tokens uit codeboeken 1–15
- CodeDecoder andere 28-layer autoregressieve transformator met staatloze KV-cache (max 256 posities)
- MultiCodeDecoder 5-layer-codevoorspeller voor codeboeken 1Z15
- SpeechDecoder .. Mimi codec decoder, zet 16 codebook tokens om naar 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: De CoreML CodeDecoder gebruikt een vaste 256-positie KV-cache. Langere passages moeten in afzonderlijke zinnen worden gesplitst. Decodeer tokens worden automatisch geplakt om binnen de resterende cache-sleuven te passen na voorvulling.
Experimenteel 1,7B CoreML export
De decoder maakt gebruik van FP32-berekening omdat FP16 fout bij de validatie van het controlepunt; cache-tensors blijven FP16.
De zescomponentenconverter ondersteunt 1.7B Base en een 1024-positie statef CodeDecoder. De spraak- en luidsprekerinbedding hebben 2048 kanalen; de 1024-kanaalscodevoorspelling omvat de getrainde ingangsprojectie.
Swift ondersteunt 0,6B/256 en 1,7B/1024 bundels; 0,6B blijft de standaard. De experimentele 1,7B bundel standaard naar CPU en vereist een voorbereide 2048-kanaal Float32 .npy luidspreker inbedding via --speaker-embedding. GPU/ANE en iOS validatie blijven gescheiden.
De cache bevat prompt en audio posities. SpeechDecoder heeft een aparte standaard limiet van 125 frames (10 seconden); een grotere CodeDecoder cache vergroot het niet.
Conversiebron en validatiegids
speech qwen3-tts-coreml "Hello world" \
--model aufklarer/Qwen3-TTS-1.7B-CoreML \
--speaker-embedding speaker-17b.npy --output hello-17b.wav
CLI-gebruik
Spraak uit tekst genereren:
.build/release/speech speak "Hello, world!" --output hello.wav
Opties
| Vlag | Omschrijving |
|---|---|
--engine | TTS engine: qwen3 (MLX, default), coreml (CoreML/GPU), of cosyvoice |
--output, -o | Uitvoer WAV bestandspad |
--language | Taal (standaard: Engels). Toestaan om het moedertaaldialect van de spreker te gebruiken. |
--model | Modelvariant: base of customVoice |
--speaker | Speaker stem (vereist --model customVoice) |
--temperature | Monstertemperatuur (standaard: 0,3) |
--top-k | Samplingparameter van top-k |
--max-tokens | Maximaal aantal te genereren tokens (standaard: 500) |
--stream | Activeer streaming |
--first-chunk-frames | Aantal frames in de eerste gestreamde brok |
--chunk-frames | Aantal frames per volgende gestreamde brok |
--batch-file | Pad naar een tekstbestand met één uitdrukking per regel voor batchsynthese |
--batch-size | Aantal parallelle uitingen in batchmodus |
Voorbeelden
# 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
De --stream vlag maakt afgehaspelde audio-uitvoer tijdens het aanmaken mogelijk. In plaats van te wachten tot de volledige uitroep voltooid is, wordt audio uitgezonden in brokken als tokens worden geproduceerd. Gebruik --first-chunk-frames en --chunk-frames om de grootte van elke brok te bepalen.
Partijmodus
Voor het synchroniseren van meerdere uitingen, gebruik --batch-file met een tekstbestand dat één regel per uitdrukking bevat. De --batch-size vlag bepaalt hoeveel uitingen parallel worden verwerkt.
Prestaties
Op een M2 Max, Qwen3-TTS bereikt een RTF (real-time factor) van ongeveer 0,55, wat betekent dat het spraak sneller genereert dan real-time. Met compile() warmingup duurt elke stap ongeveer 37 ms.
Het standaard maximum is 500 tokens, die ongeveer 40 seconden audio produceren op 12,5 Hz. Het instellen van hogere waarden risico's hoger dan de Metal GPU watchdog timeout, die een systeem reboot kan veroorzaken op Apple Silicon omdat de GPU gedeeld wordt met de compositor.
Talen
Qwen3-TTS ondersteunt meertalige tekst-tot-spraak synthese. Het model detecteert automatisch de invoertaal en genereert spraak dienovereenkomstig.
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"))
Alleen lokale bundels
Gebruik fromLocal wanneer uw app modelaanwinst en -opslag bezit. Geef het hoofdmodel TTS en spraak-tokenizer directories apart door. De call lost nooit een cache op of contact op met het netwerk en leest de config.json voordat MLX modules worden toegewezen.
let model = try Qwen3TTSModel.fromLocal(
modelDirectory: ttsDirectory,
tokenizerDirectory: speechTokenizerDirectory
)
fromLocal standaard naar .none, dus het verandert de procesbreed Metal bedrade geheugenlimiet niet. fromPretrained behoudt zijn .pin(fraction: 0.9) standaard. Beide voorgetrainde laders accepteren een aparte tokenizerCacheDir.
Diagnostica
Qwen3-TTS stuurt modelladen en gevolgtrekkingendiagnostiek naar AudioLog.modelLoading en AudioLog.inference in plaats van stdout of stderr. Tellingen, vormen en timings blijven zichtbaar; door beller verstrekte taal- en luidsprekerwaarden zijn privé en invoertekst is nooit geregistreerd.
Voxtral TTS
Voxtral 4B TTS 2603 draait lokaal op Apple Silicon via de Voxtral tTS module: 20 vooraf ingestelde stemmen, negen talen en 24 kHz mono speech.
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.wavUitsluitend stemmen vooraf instellen; referentie-audio klonen is niet beschikbaar. Audiouitvoer stroomt door de SDK, CLI, WebSocket en HTTP PCM. Geef de volledige invoertekst vooraf. Modelgewichten gebruiken CC BY-NC 4.0.