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).
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/.
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í:
- Mluvčí - Transformátor 28- vrstvy, který převádí vstupní text na první kódovací tokeny na 12.5 Hz
- Kód prediktoru - Transformátor vrstvy 5-, který předpovídá zbývající kódové knihy 15 z prvních skrytých stavů
- 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.
| Parametr | Hodnota |
|---|---|
| Vrstvy | 28 |
| Skrytá dimenze | 1024 |
| Hlavy dotazu | 16 |
| Hlavy klíčů / hodnoty | 8 (GQA) |
| MLP | SwiGLU |
| Kódování pozice | RoPE |
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:
- RVQ dekódování (16 kodeknih)
- Pre- konvoluce (512 až 1024 kanálů)
- Pre- transformátor (1024 až 512 těsnění, 8 vrstev, SwiGLU + LayerScale)
- Nahrávací vzorek (2x, 2x)
- SEAnet dekodér (8x, 5x, 4x, 3x upvzort)
- 24 kHz výstup vlnové délky
Vzor Variantů
| Vzor | Velikost | 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, výchozí) | 3.9 GB | aufklarer / Qwen3-TTS-12Hz-1.7B-Base-MLX-bf16 |
| Qwen3-TTS-0.6B Vlastní hlas (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 má šest sestavených komponentů. Vypočítejte umístění závisí na zvoleném svazku.
- TextProjektor - Projekty text symbolické embedding do sdíleného skrytého prostoru
- CodeEmbedder - Vloží první-codebook tokens a ovládací tokens
- MultiCodeEmbedder - Vložené žetony z kódů 1-15
- CodeDecoder - Autoregresivní transformátor 28- vrstvy s KV cache bez státní příslušnosti (max. 256 pozice)
- MultiCodeDecoder - 5- descriptor kódu pro kódy 1-15
- 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
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
| Vlajka | Popis |
|---|---|
--engine | Motor TTS: qwen3 (výchozí hodnota MLX), coreml (CoreML / GPU) nebo cosyvoice |
--output, -o | Výstupní cesta k souboru WAV |
--language | Jazyk (výchozí: angličtina). Vymit používat rodilý dialekt reproduktoru. |
--model | Varianta modelu: base nebo customVoice |
--speaker | Hlas mluvčího (vyžaduje --model customVoice) |
--temperature | Teplota odběru vzorků (výchozí hodnota: 0.3) |
--top-k | Parametr odběru vzorků Top-k |
--max-tokens | Maximální počet žetonů pro generování (výchozí hodnota: 500) |
--stream | Povolit streaming - vysílá zvukové kousky během generace |
--first-chunk-frames | Počet snímků v prvním proudovaném bloku |
--chunk-frames | Počet snímků na následující streamovaný kus |
--batch-file | Cesta k textovému souboru s jedním slovníkem na řádek pro syntézu šarží |
--batch-size | Poč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.
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
)
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.wavPouze 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.