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

Swift en CLI-gebruik

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

Swift gebruik en bundelvereisten

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:

  1. Talker ..28-layer transformator die inputtekst omzet in eerste codebook tokens op 12,5 Hz
  2. Code Predictor .. 5-layer transformator die de resterende 15 codeboeken uit de eerste verborgen codeboektoestanden voorspelt
  3. 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
Lagen28
Verborgen dimensie1024
Zoekkoppen16
Sleutel/waarde hoofden8 (GQA)
MLPSwiGLU
PositiecoderingRoPE

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:

  1. RVQ decoderen (16 codeboeken)
  2. Preconcentratie (512 tot 1024 kanalen)
  3. Voortransformator (1024 tot 512 knelpunt, 8 lagen, SwiGLU + Laagschaal)
  4. Upsample (2x, 2x)
  5. SEANet decoder (8x, 5x, 4x, 3x upsample stadia)
  6. 24 kHz golfvorm uitgang

Model Varianten

Model GrootteHuggingFace
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, standaard)3,9 GBaufklarer/Qwen3-TTS-12Hz-1.7B-Base-MLX-bf16
Qwen3-TTS-0.6B CustomVoice (bf16)1,8 GBaufklarer/Qwen3-TTS-12Hz-0.6B-CustomVoice-MLX-bf16
Qwen3-TTS CoreML (FP16)2,1 GBaufklarer/Qwen3-TTS-CoreML

CoreML Backend

CoreML draait zes gecompileerde componenten. Bereken plaatsing hangt af van de geselecteerde bundel.

  1. TekstProjector
  2. CodeEmbedder
  3. MultiCodeEmbedder Inbedden tokens uit codeboeken 1–15
  4. CodeDecoder andere 28-layer autoregressieve transformator met staatloze KV-cache (max 256 posities)
  5. MultiCodeDecoder 5-layer-codevoorspeller voor codeboeken 1Z15
  6. 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
CoreML KV Cache Limit

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
--engineTTS engine: qwen3 (MLX, default), coreml (CoreML/GPU), of cosyvoice
--output, -o Uitvoer WAV bestandspad
--languageTaal (standaard: Engels). Toestaan om het moedertaaldialect van de spreker te gebruiken.
--modelModelvariant: base of customVoice
--speakerSpeaker stem (vereist --model customVoice)
--temperature Monstertemperatuur (standaard: 0,3)
--top-kSamplingparameter van top-k
--max-tokens Maximaal aantal te genereren tokens (standaard: 500)
--streamActiveer streaming
--first-chunk-frames Aantal frames in de eerste gestreamde brok
--chunk-frames Aantal frames per volgende gestreamde brok
--batch-filePad 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.

Veiligheidslimiet

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

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

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

Lees de Voxtral TTS gids