Maskinoversettelse · Engelsk original

Qwen3-TTS

Native Apple Runtime · PocketTTS

PocketTTS legger til opprinnelig CoreML talesyntese til speech-swift. Alle stadier er standard til CPU-beskyttelse. Den engelske Alba-forhåndsinnstilte strømmer 1.920-prøverammer ved 24 kHz (80 ms per ramme).

Swift og CLI-bruk

Voxtral TTS forhåndsinnstilte nedlastinger

Voxtral TTS laster ned modellvekter, tokenizer, config og alle 20 forhåndsdefinerte talefiler ved første bruk. Frakoblet lasting krever den komplette cachede bundten, inkludert hver fil i voice_embedding/.

Swift bruk og pakkekrav

Qwen3-TTS er en 12Hz kodekspråkmodell med en Mimi dekoder for tekst-til-speech-syntese av høy kvalitet. Standard MLX -stien bruker nå 1,7B-basen bf16 -pakken; 8-bits bundter er fortsatt tilgjengelige for mindre nedlastinger. int4 ble frakommført for TTS

VoxCPM2 vs Qwen3-TTS · Full femspråklig stemmekloning sammenligning og metode.

Pipeline

Talsyntese følger en tretrinns rørledning:

  1. Talker - 28-lags transformator som konverterer inngangstekst til første kodeboktegn på 12,5 Hz
  2. Code Prediktor - 5-lags transformator som forutsi de resterende 15 kodebøkene fra den første kodeboken skjulte tilstander
  3. Mimi CodecDescription - Konverterer alle 16 kodeboktegn til en 24 kHz lydbølgeform

Arkitektur

Talker

Talkeren er kjernen autoregressiv modell som genererer kodek tokens fra tekstinngang.

Parameter Verdi
Lag28
Skjult dimensjon1024
Forespørselshoder16
Nøkkel/verdihoder8 (GQA)
MLP Swiglu
PosisjonskodingRoPE

Kodeprediktor

En lett 5-lags transformator som tar de skjulte tilstandene fra den første kodeboken og forutsier de gjenværende 15 kodebøkene automatisk regressivt. For enkel-element syntese, den faste 15-gruppe sløyfe kjører som én kompilert graf.

Mimi Kodedekode

Den Mimi dekoderen konverterer kvantiserte kodekene tilbake til lyd:

  1. RVQ dekode (16 kodebøker)
  2. Førkonvolusjon (512 til 1024 kanaler)
  3. Pre-transformer (1024 til 512 flaskehals, 8 lag, Swiglu + LayerScale)
  4. Oppprøve (2x, 2x)
  5. SEANet dekoder (8x, 5x, 4x, 3x upsample-stadier)
  6. 24 kHz bølgeform utgang

Modell Varianter

Modell StørrelseHuggingFace
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, standard)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 Motor

CoreML kjører seks kompilerte komponenter. Beregn plassering avhenger av den valgte pakke.

  1. TextProjector - Prosjekter tekst token inneslutter til delt skjult plass
  2. CodeEmbedder - Embeds førstekodebok token og kontrollsymboler
  3. MultiCodeEmbedder — Embeds tokens fra kodebøker 1-15
  4. CodeDecoder — 28 lag autoregressiv transformator med ustabil KV-buffer (maks 256 posisjoner)
  5. MultiCodeDecoder — 5-lags kodeprediktor for kodebøker 1-15
  6. SpeechDecoder — Mimi codecode dekoder, konverterer 16 kodeboktegn til 24 kHz-lyd
# 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 grense

0.6B: CoreML CodeDecoder bruker en fast 256-posisjon KV-cache. Lengre passasjer bør deles inn i individuelle setninger. Decode-token er automatisk dekket for å passe innenfor de gjenværende cache-sporene etter forhåndsfylling.

Eksperimentell 1,7B CoreML eksport

Dekoderen bruker FP32-beregning fordi FP16 mislyktes kontrollpunktvalidering; cache tensors forblir FP16.

Den sekskomponentomformeren støtter 1,7B Base og en 1024-stillings stateful CodeDecoder. Taleren og høyttalerinnbyggingen har 2048 kanaler; 1024-kanals kodeprediktor inkluderer dens utdannede inngangsprojeksjon.

Swift støtter 0.6B/256 og 1.7B/1024 bundter; 0.6b forblir standard. Den eksperimentelle 1,7B bunt standard til CPU og krever en forberedt 2048-kanal Float32 .npy høyttaler inneslutting via --speaker-embedding. GPU/ANE og iOS validering forblir separat.

Cacheen inkluderer hurtig- og lydposisjoner. SpeechDecoder har en egen standardgrense på 125 rammer (10 sekunder); en større CodeDecoder cache forstørrer den ikke.

Konverteringskilde og valideringsguide

speech qwen3-tts-coreml "Hello world" \
  --model aufklarer/Qwen3-TTS-1.7B-CoreML \
  --speaker-embedding speaker-17b.npy --output hello-17b.wav

CLI bruk

Opprett tale fra tekst:

.build/release/speech speak "Hello, world!" --output hello.wav

Alternativer

Flag Beskrivelse
--engineTTS motor: qwen3 (MLX, standard), coreml (CoreML/GPU), eller cosyvoice
--output, -o Utgang WAV filsti
--language Språk (standard: engelsk). Om å bruke høyttalerens innfødte dialekt.
--model Modellvariant: base eller customVoice
--speaker Høyttaler (krever --model customVoice)
--temperature Prøvetemperatur (standard: 0.3)
--top-kTop-k prøvetaking parameter
--max-tokens Maksimalt antall polletter som skal genereres (standard: 500)
--stream Aktivere streaming - sender ut lydbiter under generasjon
--first-chunk-frames Antall rammer i den første streamede delen
--chunk-frames Antall rammer per påfølgende streamed bit
--batch-file Sti til en tekstfil med én uttalelse per linje for batchsyntese
--batch-size Antall parallelle uttalelser i batchmodus

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

--stream flagget gjør det mulig å dele lydutgang i løpet av generasjonen. I stedet for å vente på at hele uttalelsen skal fullføres, blir lyden sendt i biter som polletter produsert. Bruk --first-chunk-frames og --chunk-frames for å kontrollere størrelsen på hver bit.

Batchmodus

For å syntetisere flere uttalelser, bruk --batch-file med en tekstfil som inneholder én linje per uttalelse. --batch-size flagget kontrollerer hvor mange uttalelser som behandles parallellt.

Ytelse

På en M2 Max, Qwen3-TTS oppnår en RTF (realtime factor) på ca. 0,55, noe som betyr at det genererer tale raskere enn sanntid. Med compile() oppvarming, tar hvert trinn ca. 37 ms.

Sikkerhetsgrense

Standardmaksimum er 500 polletter som produserer omtrent 40 sekunders lyd ved 12,5 Hz. Setting av høyere verdier risikoer som overstiger Metal GPU watchdog timeout, noe som kan forårsake et system omstart på Apple Silicon siden GPU er delt med kompositoren.

Språk

Qwen3-TTS støtter flerspråklig tekst-til-speech syntese. Modellen registrerer automatisk inngangsspråket og genererer tale tilsvarende.

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

Lokale pakker

Bruk fromLocal når appen din eier modelloppkjøp og lagring. Send hovedenheten TTS modell og tale-tokenizer kataloger separat. Oppkallet løser aldri en cache eller kontakter nettverket, og leser hovedbuntens config.json før deling MLX moduler.

let model = try Qwen3TTSModel.fromLocal(
    modelDirectory: ttsDirectory,
    tokenizerDirectory: speechTokenizerDirectory
)
Minnepolitikk

fromLocal standard til .none, så det endrer ikke prosessen-vidt Metal wired-hukommelsesgrense. fromPretrained holder sin .pin(fraction: 0.9) standard. Begge forhåndsutdannede lasere aksepterer en egen tokenizerCacheDir.

Diagnostikere

Qwen3-TTS sender modell-lasting og inferensdiagnosikk til AudioLog.modelLoading og AudioLog.inference i stedet for stderr eller stderr. Taller, former og timinger forblir synlige; caller-levert språk og høyttalerverdier er private, og inngangstekst er aldri logget.

Voxtral TTS

Voxtral 4B TTS 2603 kjører lokalt på Apple Silicon gjennom Voxtral TTS-modulen: 20 forhåndsinnstilte stemmer, ni språk 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.wav

Bare forhåndsinnstillinger; referanse-audio kloning er utilgjengelig. Lydutgangsstrømmer gjennom SDK, CLI, WebSocket og HTTP PCM. Gi den komplette inngangsteksten opp foran. Modellvekter bruker CC BY-NC 4.0.

Les Voxtral TTS guide