Awtomatikong salin · Orihinal sa Ingles

Qwen3-TTS

Katutubong Apple runtime · PocketTTS

Ang PocketTTS ay nagdaragdag ng katutubong CoreML speech synthesis sa speech-swift. lahat ng mga yugto ay default sa CPU-lamang pagpatay. Ang Ingles na Alba preseted streams 1,920-sample frames sa 24 kHz (80 ms kada frame).

Ginamit ang Swift at CLI

Voxtral TTS preset downloads

Voxtral TTS download ang modelong mga pabigat, tonizer, recide at lahat ng 20 preset voice files sa unang gamit. Ang pagkarga ay nangangailangan ng offline loading ng kumpletong cached browse, kasama ang bawat file sa voice_embedding/.

Swift ang gamit at mga kahilingan sa bungkos

Qwen3-TTS ay isang 12Hz codec language model na may Mimi decoder para sa mataas-quality text-to-speech synthesis. Ang default MLX Ginagamit na ngayon ng landas ang 1.7Base bf16 talaksan; 8- Ang mga bungkos ng basura ay nananatiling magagamit para sa mas maliliit na download. int4 ay inalis sa tungkulin TTS kalidad.

VoxCPM2 vs Qwen3-TTS · Buong limang-wikang voice-cloning na paghahambing at metolohiya.

Pipeline

Ang synthesis sa pagsasalita ay sumusunod sa isang tatlong-stage pipeline:

  1. Mangusap — 28-layer transformer na binabago ang input na teksto upang maging unang codebook tokens sa 12.5 Hz
  2. Hula Tungkol sa Kodigo — 5-layer transformer na humuhula sa natitirang 15 codebook mula sa unang codebook na nakatagong mga estado
  3. Mimi Codec Decoder — Kinokomberti ang lahat ng 16 codebook na inilalagay sa isang 24 kHz audio waveform

Arkitektura

Mangusap

Ang Talisay ay ang core autoregressive model na lumilikha ng mga codec token mula sa text input.

Parameter Halaga
Mga tagapaglatag28
Natatagong mga Katangian1024
Tanong ng mga ulo16
Susi/Value heads8 (GQA)
MLPSwiGLU
Posisyon ng PosisyonLANGIS

Hula Tungkol sa Kodigo

Isang lightlight 5-layer transformer na kumukuha sa mga nakatagong estado mula sa unang codebook at humuhula sa natitirang 15 codebooks autoregressively. Para sa isang-item synthesis, ang nakapirmeng 15-group loop run bilang isa na tinipong graph.

Mimi Codec Decoder

Ang Mimi decoder na nagkukumberte ng mga quanized codec na panimpla pabalik sa audio:

  1. RVQ decode (16 codebook)
  2. Pre-convolution (512 hanggang 1024 channel)
  3. Pre-transpormante (1024 hanggang 512 thutneck, 8 layer, SwiGLU + LayerScale)
  4. Upsample (2x, 2x)
  5. SEANet decoder (8x, 5x, 4x, 3x upsample stage)
  6. 24 kHz waveform output

Modelong mga Variante

Huwaran LakiHuggingFace
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, default)3.9 GB Aufklarer/Qwen3-TTS-12Hz-1.7B-Base-MLX-bf16
Qwen3-TTS-0.6B CriticalVoice (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

Ang CoreML ay nagpapatakbo ng anim na tinipong sangkap. Ang comute placement ay nakasalalay sa napiling bungkos.

  1. TextProjector — Ang teksto sa mga Project ay nagtatanda ng mga emebeding sa bahaging nakatagong espasyo
  2. Tagaayos ng Kodigo — Ang unang-codebook na mga token at control tokens
  3. Multi Codembender — Ang mga marka mula sa mga codebook na 1–15
  4. Pag - aayos ng Kodigo — 28-layer autoregressive transformer na may stateless KV cache (mga posisyong 256)
  5. Maraming - Gamit na Gamot — 5-layer code propesiyar para sa mga codebook na 1–15
  6. Pandaraya sa Pagsasalita — Mimi codec decoder, kinumberte ang 16 na codebook to 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 Cach Limit

0.6B: Ang CoreML CodeDecoder ay gumagamit ng isang nakapirmeng 256-pook na KV cache. Ang mga mas mahabang daanan ay dapat hatiin sa mga indibiduwal na pangungusap. Decode tokens automatic beads to to to to are in areved cache slots matapos ang prefilling.

Experimental 1.7B CoreML iluwas

Ang decoder ay gumagamit ng FP32 Assumption dahil ang FP16 ay nabigong checkpoint application; ang cache tensor ay nananatiling FP16

Ang anime-component converter ay sumusuporta sa 1.7B Base at isang 1024-pook na stateful CodeDecoder.Ang mananalita at speaker ermbeding ay may 2048 channels; ang 1024-channel code propesyunal na kinabibilangan ng sinanay na input projection nito.

Swift suporta 0.6B/256 at 1.7B/1024 mga bungkos; 0.6B ang nananatiling default. 1.7 Mga default sa brock CPU at nangangailangan ng isang inihanda 2048-Anglon Float32 .npy nagsasalita sa pamamagitan ng pag - eembed --speaker-embedding. GPU/ANE at iOS professionation ay nananatiling hiwalay.

Ang cache ay kinabibilangan ng mga posisyong tuloy-tuloy at audio.Ang speechDecoder ay may hiwalay na default limit na 125 frames (10 segundo); ang isang mas malaking CodeDeconder cache ay hindi ito pinalalaki.

Pagkumberte sa pinagmulan at patnubay sa pagpapatunay

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

Paggamit ng CLI

Pag - usapan ang mga salita mula sa teksto:

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

Mga Mapagpipilian

Bandila Paglalarawan
--engineTTS makina: qwen3 (MLX, default), coreml (CoreML/GPU), o o kaya ay cosyvoice
--output, -oIlabas na WAV file path
--language Wika (default: english). Omit upang gamitin ang katutubong diyalekto ng tagapagsalita.
--model Modelong Pagkakaiba: base o customVoice
--speaker Tinig ng tagapagsalita (requires --model customVoice)
--temperatureSampling temperature (default: 0.3)
--top-k Itaas na mga halimbawa ng parameter
--max-tokensMiximum bilang ng mga tokens upang lumikha (default: 500)
--stream Madaling dumaloy — naglalabas ng mga audio cluster sa loob ng salinlahi
--first-chunk-frames Bilang ng mga frame sa unang streets
--chunk-frames Bilang ng mga frame sa bawat kasunod na streets
--batch-filePath sa isang file ng teksto na may isang salita sa bawat linya para sa synthesis
--batch-size Bilang ng magkakatulad na mga pananalita sa paraang maramihan

Mga Halimbawa

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

Pag - aaksaya

Ang --stream flag ay nagbibigay ng splited audio output sa panahon ng henerasyon. Sa halip na hintayin ang buong salita upang makumpleto, ang audio ay inilalabas sa mga tipak habang ang mga token ay ginagawa. Gamitin ang --first-chunk-frames at --chunk-frames upang kontrolin ang sukat ng bawat kripto.

" Batch Mode "

Para sa synthesize multiple na mga kasabihan, gumamit ng --batch-file na may talaksang teksto na naglalaman ng isang linya kada salita. Ang --batch-size flag ay kumokontrol sa kung ilang mga salita ang prinoseso sa kahalintulad.

Pag - aasikaso

Sa isang M2 Max, Qwen3-TTS ay nagkamit ng RTF (tunay na-time factor) ng humigit-kumulang 0.55, na nangangahulugang ito ay lumilikha ng pagsasalita ng mas mabilis kaysa sa tunay na panahon. Sa compile() yup, ang bawat hakbang ay kumukuha ng mga 37 ms.

Hangganan sa Kaligtasan

Ang default maximum ay 500 total, na gumagawa ng humigit - kumulang 40 segundo ng audio sa 12.5 Hz. Ang pagtatakda ng mas mataas na halaga ay nagsasapanganib nang higit sa Metal GPU governmentout, na maaaring maging sanhi ng reboot ng isang sistema sa Apple Silicon mula nang ang GPU

Wika

Qwen3-TTS ay sumusuporta sa multilingguwaheng teksto-to-speech synthesis. Ang modelo ay awtomatikong nakakadetek ng input language at lumilikha ng pagsasalita alinsunod dito.

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

Mga lokal-lamang na bungkos

Gamitin fromLocal Kapag ang iyong app ay nagmamay - ari ng modelong pagkakamit at pag - iimbak. TTS modelo at speech-tokenizer directories magkahiwalay. Ang tawag ay hindi kailanman nagreresulta sa isang cache o makipag-ugnayan sa network, at basahin ang pangunahing bungkos's config.json bago ang mga MLX module.

let model = try Qwen3TTSModel.fromLocal(
    modelDirectory: ttsDirectory,
    tokenizerDirectory: speechTokenizerDirectory
)
patakaran ng memorya

fromLocal Mga hindi pagtupad sa .none, kaya't hindi nito binabago ang process-wide Metal wired-memory limit. fromPretrained panatilihin ang kaniyang .pin(fraction: 0.9) Ang parehong pretrained loaders ay tumatanggap ng hiwalay tokenizerCacheDir.

Mga Rikonosi

Qwen3-TTS ay nagpapadala ng model-based at product diagnosis sa AudioLog.modelLoading at AudioLog.inference sa halip na stdout o stderr. Ang mga konde, hugis, at mga tiyempo ay nananatiling nakikita; ang caller-produced language at speakers ay pribado, at ang input ay hindi kailanman nai-inkwenkor.

Voxtral TTS

Voxtral 4B TTS 2603 ay lokal na tumatakbo sa Apple Silicon sa pamamagitan ng Voxtral TTS module: 20 preseted voices, siyam na wika, at 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

Ang mga preset voices lamang; reference-audio cloning ay hindi makuha. Ang audio output ay dumadaloy sa SDK, CLI, WebSocket at HTTP PCM. Isumite ang kumpletong input text up front. Ang mga model weights ay gumagamit ng CC BY-NC 4.0.

Basahin ang Voxtral TTS guide