Traducere automată · Originalul în engleză

Qwen3-TTS

Nativ Apple runtime · PocketTTS

PocketTTS adaugă sinteze native CoreML sinteze de vorbire la speech-swift. Toate etapele sunt implicite pentru executarea exclusivă a procesorului. Fluxurile de prefixe engleze Alba sunt 1,920-frame de probe la 24 kHz (80 ms per cadru).

Swift și utilizarea CLI

Voxtral TTS descărcări prestabilite

Voxtral TTS descarcă greutățile modelului, tokenizer, config și toate cele 20 de fișiere vocale presetate la prima utilizare. Încărcarea offline necesită pachetul cached complet, inclusiv fiecare fișier din voice_embedding/.

Swift cerințele privind utilizarea și pachetul

Qwen3-TTS este un model de limbaj codec 12Hz cu un decodor Mimi pentru sinteza de înaltă calitate a textului-la-discurs. Calea implicită MLX utilizează acum pachetul de bază 1.7B bf16; pachete de 8 biți rămân disponibile pentru descărcări mai mici. int4 a fost dezafectată pentru calitatea TTS

VoxCPM2 vs Qwen3-TTS · Comparație și metodologie de clonare vocală în cinci limbi .

Conductă

Sinteza vorbirii urmează unei conducte în trei etape:

  1. Talker Transformator 28-strat care convertește textul de intrare în primele jetoane de coduri la 12,5 Hz
  2. Code Predictor Transformator 5-strat care prezice restul de 15 coduri din primele state ascunse codebook
  3. Decodor Mimi Conversia tuturor jetoanelor de cod 16 într-o formă audio 24 kHz

Arhitectură

Vorbitor

Talker este modelul de bază autoregresiv care generează jetoane codec de intrare text.

Parametru Valoare
Straturi28
Dimensiunea ascunsă1024
Capete de interogare16
Capete cheie/valoare8 (GQA)
MLPSwigluCity in Germany
Codare pozițieRoPE

Predictor de cod

Un transformator usor cu 5 straturi care ia starile ascunse din primul cod si prezice restul de 15 coduri autoregresiv. Pentru sinteza unui singur element, bucla fixa de 15 grupuri functioneaza ca un grafic compilat.

Mimi Decodor codec

Mimi decodorul convertește jetoanele codec cuantice înapoi în audio:

  1. RVQ decodează (16 cărți de coduri)
  2. Pre-convoluție (512 până la 1024 canale)
  3. Pre-transformator (1024 până la 512 sticluță, 8 straturi, SwiGLU + StrateScale)
  4. Proba de sus (2x, 2x)
  5. Decodor SEANet (8x, 5x, 4x, 3x în sus etape de probă)
  6. Ieșire a formei de undă 24 kHz

Model Variante

ModelDimensiuneHuggingFace
Qwen3-TTS-0.6B Base (8-bit) 1,3 GBaufklarer/Qwen3-TTS-12Hz-0.6B-Base-MLX-8bit
Qwen3-TTS-1.7B Baza (8-bit)2.4 GBaufklarer/Qwen3-TTS-12Hz-1.7B-Base-MLX-8bit
Qwen3-TTS-1.7B Baza (bf16 implicit)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 Platformă

CoreML ruleaza sase componente compilate. Plasarea calcul depinde de pachetul selectat.

  1. TextProjector
  2. CodeEmbedder
  3. MultiCodeEmbedder 1–15
  4. Decodor de cod Transformator autoregresiv 28 cu cache KV apatrid (maxim 256)
  5. Decodor multicod — 5-previzionator de coduri pentru coduri 1–15
  6. Decodor de vorbire Decodor Mimi codec, convertește jetoane de cod 16 în audio 24
# 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: The CoreML CodDecodor folosește un cache KV poziție fixă 256. Pasaje mai lungi ar trebui să fie împărțite în propoziții individuale. Decodarea jetoanelor sunt automat plafonate pentru a se potrivi în sloturile cache rămase după prefill.

Experimental 1.7B CoreML export

Decodorul utilizează un calcul FP32 deoarece FP16 validarea punctului de control eșuat; tensorii cache rămân FP16.

Convertorul cu șase componente suportă 1,7B Base și un Cod deDecodor de ultimă poziție 1024-poziție. Conversitorul și difuzorul au 2048 de canale; predictorul de cod 1024-canal include proiecția sa de intrare instruită.

Swift suportă 0.6B/256 și 1.7B/1024 pachete; 0.6B rămâne implicit.Experimental 1.7B pachet implicit la CPU și necesită un 2048-canal pregătit Float32 .npy difuzor înglobare prin --speaker-embedding. GPU/ANE și iOS validare rămâne separată.

Cache-ul include poziţii prompte şi audio. DiseachDecodorul are o limită implicită separată de 125 de cadre (10 secunde); un cache mai mare CodeDecodor nu-l măreşte.

Sursă de conversie și ghid de validare

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

Utilizarea CLI

Generează discursul din text:

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

Opțiuni

Steag Descriere
--engineTTS motor: qwen3 (MLX, implicit), coreml (CoreML/GPU), sau cosyvoice
--output, -oIeșire WAV calea fișierului
--language Limba (default: english). Omit pentru a utiliza dialectul nativ difuzor.
--modelModel de variantă: base sau customVoice
--speakerVoce difuzor (necesită --model customVoice)
--temperature Temperatura eșantionului (default: 0,3)
--top-k Parametrul de eșantionare Top-K
--max-tokens Numărul maxim de jetoane de generat (default: 500)
--streamActivează streaming-ul emite bucăți audio în timpul producției
--first-chunk-frames Numărul de cadre din prima bucată
--chunk-frames Numărul de cadre per bucată de flux ulterioară
--batch-file Calea către un fișier text cu o declarație pe linie pentru sinteza lotului
--batch-size Numărul de declaraţii paralele în modul lot

Exemple

# 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

Steagul --stream permite o ieșire audio în timpul producției. În loc să aștepte întreaga declarație pentru a finaliza, audio este emis în bucăți ca jetoane sunt produse. Utilizați --first-chunk-frames și --chunk-frames pentru a controla dimensiunea fiecărei bucăți.

Mod lot

Pentru sintetizarea mai multor declaraţii, utilizaţi --batch-file cu un fişier text conţinând o linie per declaraţie. --batch-size

Performanță

Pe o M2 Max, Qwen3-TTS atinge un RTF (factor în timp real) de aproximativ 0.55Adică generează vorbirea mai repede decât în timp real. compile() încălzire, fiecare pas ia despre 37 ms.

Limita de siguranță

Maximul implicit este de 500 de jetoane, care produce aproximativ 40 de secunde de audio la 12,5 Hz. Stabilirea de valori mai mari riscuri care depășesc Metal GPU watchdog temporizeaza, care poate provoca o repornire a sistemului pe Apple Silicon deoarece GPU este partajat cu compositorul.

Limbi

Qwen3-TTS suportă sinteza multilingvă text-la-discurs. Modelul detectează automat limba de intrare și generează vorbirea în consecință.

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

Doar pachete locale

Utilizaţi fromLocal atunci când aplicaţia dumneavoastră deţine modelul de achiziţie şi stocare. Treceţi la modelul principal TTS şi la directoarele pentru tokenizator de vorbire separat. Apelul nu rezolvă niciodată o cache sau contactează reţeaua, şi citeşte modulele pachetului principal config.json înainte de alocarea MLX.

let model = try Qwen3TTSModel.fromLocal(
    modelDirectory: ttsDirectory,
    tokenizerDirectory: speechTokenizerDirectory
)
Politica în domeniul memoriei

fromLocal implicits to .none, astfel încât nu schimbă procesul la nivel Metal wired-memory limit. fromPretrained păstrează .pin(fraction: 0.9) implicit.Ambii încărcători precalificați acceptă un separat tokenizerCacheDir.

Diagnostice

Qwen3-TTS trimite diagnosticul de încărcare a modelelor și de interferență la AudioLog.modelLoading și AudioLog.inference în loc de stdout sau stderr. Counts, forme, și calendarul rămân vizibile; limba și valorile difuzorului furnizate de apelant sunt private, iar textul de intrare nu este niciodată autentificat.

Voxtral TTS

Voxtral 4B TTS 2603 ruleaza local pe Apple Silicon prin modulul VotralTTSS: 20 voci prestabilite, nouă limbi, și 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

Doar vocile presetate; clonarea de referință-audio nu este disponibilă. Fluxuri de ieșire audio prin SDK, CLI, WebSocket și HTTP PCM. Furnizarea textului complet de intrare în față. Greutate model de utilizare CC BY-NC 4.0.

Citeşte ghidul Voxtral TTS