Strojový překlad · Anglický originál

Qwen3-TTS

Původní Apple runtime · PocketTTS

PocketTTS přidává nativní syntézu CoreML do speech-swift. Všechny fáze jsou výchozí pouze pro CPU- provedení. Anglické Alba preset streams 1,920-výběrové rámy na 24 kHz (80 ms na snímek).

Použití Swift a CLI

Voxtral TTS přednastavené stažení

Voxtral TTS stahuje modelové závaží, tokenizer, konfiguraci a všechny přednastavené hlasové soubory 20 při prvním použití. Offline načítání vyžaduje kompletní cached balík, včetně každého souboru v voice_embedding/.

Swift použití a požadavky na svazek

Qwen3-TTS je 12Hz kodekový jazykový model s dekodérem Mimi pro vysoce kvalitní text- to- řeč syntézy. Výchozí cesta MLX nyní používá 1.7B Base bf16 svazku; 8-bitové balíčky zůstávají k dispozici pro menší stahování. int4 byla vyřazena pro kvalitu TTS.

VoxCPM2 vs Qwen3-TTS · Plné pětijazyčné hlasové-klonování srovnání a metodika.

Potrubí

Syntéza řeči následuje po třístupňovém potrubí:

  1. Mluvčí - Transformátor 28- vrstvy, který převádí vstupní text na první kódovací tokeny na 12.5 Hz
  2. Kód prediktoru - Transformátor vrstvy 5-, který předpovídá zbývající kódové knihy 15 z prvních skrytých stavů
  3. Mimi Kodek Dekodér - Převede všechny kódové tokeny 16 do zvukové vlny 24 kHz

Architektura

Mluvčí

Talker je základní autoregresivní model, který generuje kodekové žetony z textového vstupu.

ParametrHodnota
Vrstvy28
Skrytá dimenze1024
Hlavy dotazu16
Hlavy klíčů / hodnoty8 (GQA)
MLPSwiGLU
Kódování poziceRoPE

Kód prediktoru

Lehký 5vrstvý transformátor, který vezme skryté stavy z první kódové knihy a předpovídá zbývajících 15 kódových knih automaticky regresivně. Pro syntézu single-položky, fixní 15- skupina smyčka běží jako jeden sestavený graf.

Mimi Kodek Dekodér

Dekodér Mimi převádí kvantifikované kodekové tokeny zpět do zvuku:

  1. RVQ dekódování (16 kodeknih)
  2. Pre- konvoluce (512 až 1024 kanálů)
  3. Pre- transformátor (1024 až 512 těsnění, 8 vrstev, SwiGLU + LayerScale)
  4. Nahrávací vzorek (2x, 2x)
  5. SEAnet dekodér (8x, 5x, 4x, 3x upvzort)
  6. 24 kHz výstup vlnové délky

Vzor Variantů

VzorVelikostHuggingFace
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, výchozí)3.9 GBaufklarer / Qwen3-TTS-12Hz-1.7B-Base-MLX-bf16
Qwen3-TTS-0.6B Vlastní hlas (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 má šest sestavených komponentů. Vypočítejte umístění závisí na zvoleném svazku.

  1. TextProjektor - Projekty text symbolické embedding do sdíleného skrytého prostoru
  2. CodeEmbedder - Vloží první-codebook tokens a ovládací tokens
  3. MultiCodeEmbedder - Vložené žetony z kódů 1-15
  4. CodeDecoder - Autoregresivní transformátor 28- vrstvy s KV cache bez státní příslušnosti (max. 256 pozice)
  5. MultiCodeDecoder - 5- descriptor kódu pro kódy 1-15
  6. SpeechDekodér - Mimi kodek dekodér, konvertuje 16 kódové tokeny na 24 codebook 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 limit cache

0.6B: KodeDekodér CoreML používá pevnou pozici KV cache 256-. Delší pasáže by měly být rozděleny do jednotlivých vět. Decode tokeny jsou automaticky omezeny tak, aby se vešly do zbývajících cache sloty po předplnění.

Experimentální vývoz 1.7B CoreML

Dekodér používá výpočet FP32, protože FP16 selhala validace kontrolního bodu; tenzory cache zůstávají FP16.

Šestikomponentní převodník podporuje 1.7B Base a 1024- pozici Stateful CodeDecoder. Řečnický a reproduktor vložení má 2048 kanálů, 1024- kanál kód prediktor obsahuje jeho vyškolený vstupní projekci.

Swift podložky 0.6B /256 a 1.7B /1024 svazky; 0.6B zůstává výchozí. Experiment 1.7B svazek selhání na CPU a vyžaduje připravenou 2048-Channel Float32 .npy Vložení reproduktoru přes --speaker-embedding. GPU / ANE a iOS validace zůstávají oddělené.

V cache je uvedena rychlá a zvuková poloha. SpeechDecoder má samostatný výchozí limit 125 snímků (10 sekund); větší cache CodeDecoderu ji nezvětší.

Příručka pro konverzní zdroj a validaci

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

Použití CLI

Vygenerovat řeč z textu:

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

Možnosti

VlajkaPopis
--engineMotor TTS: qwen3 (výchozí hodnota MLX), coreml (CoreML / GPU) nebo cosyvoice
--output, -oVýstupní cesta k souboru WAV
--languageJazyk (výchozí: angličtina). Vymit používat rodilý dialekt reproduktoru.
--modelVarianta modelu: base nebo customVoice
--speakerHlas mluvčího (vyžaduje --model customVoice)
--temperatureTeplota odběru vzorků (výchozí hodnota: 0.3)
--top-kParametr odběru vzorků Top-k
--max-tokensMaximální počet žetonů pro generování (výchozí hodnota: 500)
--streamPovolit streaming - vysílá zvukové kousky během generace
--first-chunk-framesPočet snímků v prvním proudovaném bloku
--chunk-framesPočet snímků na následující streamovaný kus
--batch-fileCesta k textovému souboru s jedním slovníkem na řádek pro syntézu šarží
--batch-sizePočet paralelních slovníků v dávkovém režimu

Příklady

# 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

V --stream vlajka umožňuje odštípnutý audio výstup během generace. Místo čekání na dokončení celého projevu, je zvuk vyzařován v kusech jako žetony jsou vyráběny. --first-chunk-frames a --chunk-frames k ovládání velikosti každého kusu.

Režim šarže

Pro syntetizaci více slov použijte --batch-file s textovým souborem, který obsahuje jeden řádek na slovo. --batch-size Vlajka kontroluje, kolik slov je zpracováváno paralelně.

Výkonnost

Na M2 Max, Qwen3-TTS dosáhne RTF (faktor reálného času) přibližně 0.55, což znamená, že generuje řeč rychleji než reálný čas. compile() Zahřívání, každý krok trvá asi 37 ms.

Bezpečnostní limit

Výchozí maximum je 500 žetony, které produkují zhruba 40 sekundy zvuku při 12.5 Hz. Nastavení vyšších hodnot riskuje překročení Metal GPU watchdog timeout, který může způsobit restart systému Apple Silicon vzhledem k těmto důvodům: GPU je sdílen s skladatelem.

Jazyky

Qwen3-TTS podporuje vícejazyčnou syntézu text- to- speak. Model automaticky detekuje vstupní jazyk a podle toho generuje řeč.

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

Lokální-pouze svazky

Použití fromLocal když vaše aplikace vlastní model akvizice a úložiště. Předejte hlavní TTS model a speech- tokenizer adresáře odděleně. Hovor nikdy vyřeší cache nebo kontaktuje síť, a čte hlavní balíček config.json před přidělením modulů MLX.

let model = try Qwen3TTSModel.fromLocal(
    modelDirectory: ttsDirectory,
    tokenizerDirectory: speechTokenizerDirectory
)
Politika paměti

fromLocal selhání .none, takže to nemění proces- wide Metal wired- memory limit. fromPretrained udržuje .pin(fraction: 0.9) výchozí. Oba předškolené nakladače akceptují samostatný tokenizerCacheDir.

Diagnostika

Qwen3-TTS odešle modelovou diagnostiku AudioLog.modelLoading a AudioLog.inference místo stdout nebo stderr. Počítání, tvary a časové rozvržení zůstávají viditelné; volající - za předpokladu, že jazyk a reproduktor hodnoty jsou soukromé, a vstupní text není nikdy přihlášen.

Voxtral TTS

Voxtral 4B TTS 2603 běží lokálně na Apple Silicon přes modul Voxtral TTS: 20 přednastavené hlasy, devět jazyků a 24 KHz mono řeč.

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

Pouze přednastavené hlasy; reference-audio klonování je nedostupné. Audio výstupy proudí přes SDK, CLI, WebSocket a HTTP PCM. Dodávejte kompletní vstupní text vpředu. Modelové váhy používají CC BY-NC 4.0.

Přečtěte si průvodce Voxtral TTS