Tłumaczenie automatyczne · Oryginał angielski

Qwen3-TTS

Native Apple runtime · PockettTS

PocketTTS dodaje rodzimą syntezę mowy CoreML do speech-swift. Wszystkie etapy domyślne do wykonania tylko CPU. angielskie strumienie Alba preset 1,920- próbki w 24 kHz (80 ms per frame).

Wykorzystanie Swift i CLI

Voxtral TTS wstępnie pobrane

Voxtral TTS pobiera wagi modelu, tokenizer, config i wszystkie presety plików głosowych 20 przy pierwszym użyciu. voice_embedding/.

Wymagania dotyczące wykorzystania i łączenia Swift

Qwen3-TTS jest 12Model języka kodekowego Hz z Mimi dekoder do syntezy tekstowej o wysokiej jakości. Domyślna MLX ścieżka teraz używa 1.7B Podstawa bf16 pakunek; 8-bit pakiety pozostają dostępne dla mniejszych pobrań. int4 został wycofany z eksploatacji TTS jakość.

VoxCPM2 vs Qwen3-TTS · Pełne porównanie i metodologia klonowania głosu w pięciu językach.

Pipeline

Synteza mowy następuje po trójstopniowym rurociągu:

  1. Rozmowa - 28- warstwa transformator, który konwertuje tekst wejściowy do pierwszego tokena kodebook na 12.5 Hz
  2. Przewidywacz kodu - 5- warstwa transformator, który przewiduje pozostałe kodebook 15 z pierwszych ukrytych stanów kodebooka
  3. Dekoder kodekowy Mimi - Konwertuje wszystkie znaczniki kodowe 16 na falę audio 24 kHz

Architektura

Rozmowa

Talker jest podstawowym autoregresywnym modelem generującym żetony kodekowe z wejścia tekstowego.

ParametrWartość
Warstwy28
Ukryty wymiar1024
Głowice zagajników16
Głowice klucza / wartości8 (GQA)
MLPSWIGLU
Kodowanie pozycjiRoPE

Przewidywacz kodu

Lekki transformator 5 warstw, który pobiera ukryte stany z pierwszego kodebook i przewiduje pozostałe 15 kodebooków autoregresywnie. Dla syntezy pojedynczych elementów, stała pętla 15-grupowa działa jako jeden skompilowany wykres.

Dekoder kodekowy Mimi

Dekoder Mimi konwertuje kwantyfikowane żetony kodekowe z powrotem na dźwięk:

  1. Dekodowanie RVQ (16 książek kodowych)
  2. Pre- konvolution (512 do 1024 kanałów)
  3. Przedtransformator (1024 do 512 wąskich gardeł, 8 warstw, SwiGLU + LayerScale)
  4. Upload (2x, 2x)
  5. Dekoder SEANET (8x, 5x, 4x, 3x do góry próbki)
  6. Wyjście z formy falowej 24 kHz

Warianty modelu

WzórRozmiarHuggingFace
Podstawa Qwen3-TTS-0.6B (8- bit)1.3 GBaufklarer / Qwen3-TTS-12Hz-0.6B-Base-MLX-8bit
Podstawa Qwen3-TTS-1.7B (8- bit)2.4 GBaufklarer / Qwen3-TTS-12Hz-1.7B-Base-MLX-8bit
Qwen3-TTS-1.7B Base (bf16, domyślnie)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

Wtyczka CoreML

CoreML uruchamia sześć skompilowanych komponentów. Obliczanie miejsca zależy od wybranego pakietu.

  1. TextProjector - Projects text token embeddings to the share hidden space
  2. CodeEmbedder - Wszywki pierwszy-kodebook żetony i żetony kontrolne
  3. MultiCodeEmbedder - Zamieść żetony z książek kodowych 1- 15
  4. CodeDecode - 28- warstwa transformatora autoregresywnego z bezpaństwowym pamięci podręcznej KV (max 256 pozycje)
  5. MultiCodeDecode - 5- predykator kodów dla książek kodowych 1-15
  6. Dekoder mowy - dekoder kodekowy Mimi, konwertuje znaczniki kodowe 16 na audio 24 kHz
# 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 pamięci podręcznej

0.6B: CoreML CodeDecode używa stałego pamięci podręcznej 256- position KV. Dłuższe przejścia powinny być podzielone na zdania indywidualne. Tokeny dekodowe są automatycznie zamykane, aby zmieścić się w pozostałych szczelinach pamięci podrękowej po wypełnieniu.

Eksperymentalny wywóz 1.7B CoreML

Dekoder używa obliczeń FP32, ponieważ nie udało się zweryfikować punktu kontrolnego FP16; tensory buforowe pozostają FP16.

Konwerter sześcioskładnikowy obsługuje 1.7B Base i 1024- pozycyjny kodeDecode. Wbudowane głośniki i głośniki mają 2048 kanałów; 1024- kanałowy prognozer kodu zawiera swoją wyszkoloną projekcję wejściową.

Swift podpory 0.6B /256 oraz 1.7B /1024 wiązki; 0.6B pozostaje domyślny. Eksperymentalny 1.7B domyślne pakiety CPU i wymaga przygotowanego 2048- kanał Float32 .npy głośnik osadzany poprzez --speaker-embeddingGPU / ANE i iOS pozostają odrębne.

Podkładka zawiera pozycje typu short i audio. SpeechDecode posiada odrębną domyślną granicę 125 klatek (10 sekund); większa pamięć podręczna CodeDecode nie powiększa jej.

Źródło konwersji i poradnik walidacji

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

Zastosowanie CLI

Generuj mowę z tekstu:

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

Opcje

FlagaOpis
--engineSilnik TTS: qwen3 (MLX, domyślnie), coreml (CoreML / GPU), lub cosyvoice
--output, -oWyjście ścieżki pliku WAV
--languageJęzyk (domyślnie: angielski). Pomiń użycie rodzimego dialektu głośnika.
--modelWariant modelu: base lub customVoice
--speakerGłos głośnika (wymaga --model customVoice)
--temperatureTemperatura pobierania próbek (domyślna: 0,3)
--top-kParametr pobierania próbek Top- k
--max-tokensMaksymalna liczba żetonów do wygenerowania (domyślnie: 500)
--streamWłącz strumieniowanie - emituje fragmenty audio podczas generacji
--first-chunk-framesLiczba klatek w pierwszym strumieniowym kawałku
--chunk-framesLiczba klatek na kolejny strumieniowy kawałek
--batch-fileŚcieżka do pliku tekstowego z jednym wyrazem na linię do syntezy wsadowej
--batch-sizeLiczba równoległych wypowiedzi w trybie wsadowym

Przykłady

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

Strumieniowanie

W --stream flaga umożliwia odłamek wyjścia audio podczas generacji. Zamiast czekać na zakończenie całego wykładu, audio jest emitowane w kawałkach, jak żetony są produkowane. --first-chunk-frames oraz --chunk-frames do kontrolowania wielkości każdego kawałka.

Tryb partii

Do syntezy wielu wyrazów, użyj --batch-file z pliku tekstowego zawierającego jedną linię na wymowę. --batch-size flaga kontroluje, ile słów jest przetwarzanych równolegle.

Wydajność

Na M2 Max, Qwen3-TTS osiąga RTF (czynnik czasu rzeczywistego) w przybliżeniu 0.55, co oznacza, że generuje mowę szybciej niż w czasie rzeczywistym. compile() rozgrzewka, każdy krok zajmuje około 37 ms.

Granica bezpieczeństwa

Domyślny maksimum to 500 żetony, które produkują mniej więcej 40 sekundy dźwięku w 12.5 Hz. Ustawienie wyższych wartości ryzyka przekraczającego Metal GPU timeout watchdog, który może spowodować restart systemu Apple Silicon od czasu GPU jest dzielony z kompozytorem.

Języki

Qwen3-TTS obsługuje wielojęzyczną syntezę text- to- mowy. Model automatycznie wykrywa język wejścia i generuje odpowiednio mowę.

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

Paczki tylko lokalne

Stosowanie fromLocal kiedy aplikacja posiada nabywanie i przechowywanie modeli. Prześlij główny model TTS i przemówień oddzielnie. config.json przed przydzieleniem modułów MLX.

let model = try Qwen3TTSModel.fromLocal(
    modelDirectory: ttsDirectory,
    tokenizerDirectory: speechTokenizerDirectory
)
Polityka pamięci

fromLocal domyślne .none, więc nie zmienia limitu pamięci przewodowej Metal. fromPretrained zachowuje swoje .pin(fraction: 0.9) Domyślny. Oba wstępnie przeszkoleni ładowarki akceptują oddzielny tokenizerCacheDir.

Diagnostyka

Qwen3-TTS wysyła diagnostykę obciążenia modelami i wniosków do AudioLog.modelLoading oraz AudioLog.inference zamiast stdout lub stderr. Liczenia, kształty i czas pozostają widoczne; pod warunkiem, że język dzwoniący i głośniki są prywatne, a tekst wejściowy nigdy nie jest zalogowany.

Voxtral TTS

Voxtral 4B TTS 2603 działa lokalnie Apple Silicon przez moduł Voxtral TTS: 20 preset voices, nine languages, and 24 KHz mono mowy.

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

Wyłącznie głosy preset; klonowanie referencji audio jest niedostępne. Strumienie wyjściowe audio przez SDK, CLI, WebSocket i HTTP PCM. Dostarczają kompletny tekst wejściowy z przodu. Wagi modelu używają CC BY- NC 4.0.

Przeczytaj przewodnik Voxtral TTS