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).
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/.
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:
- Rozmowa - 28- warstwa transformator, który konwertuje tekst wejściowy do pierwszego tokena kodebook na 12.5 Hz
- Przewidywacz kodu - 5- warstwa transformator, który przewiduje pozostałe kodebook 15 z pierwszych ukrytych stanów kodebooka
- 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.
| Parametr | Wartość |
|---|---|
| Warstwy | 28 |
| Ukryty wymiar | 1024 |
| Głowice zagajników | 16 |
| Głowice klucza / wartości | 8 (GQA) |
| MLP | SWIGLU |
| Kodowanie pozycji | RoPE |
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:
- Dekodowanie RVQ (16 książek kodowych)
- Pre- konvolution (512 do 1024 kanałów)
- Przedtransformator (1024 do 512 wąskich gardeł, 8 warstw, SwiGLU + LayerScale)
- Upload (2x, 2x)
- Dekoder SEANET (8x, 5x, 4x, 3x do góry próbki)
- Wyjście z formy falowej 24 kHz
Warianty modelu
| Wzór | Rozmiar | HuggingFace |
|---|---|---|
| Podstawa Qwen3-TTS-0.6B (8- bit) | 1.3 GB | aufklarer / Qwen3-TTS-12Hz-0.6B-Base-MLX-8bit |
| Podstawa Qwen3-TTS-1.7B (8- bit) | 2.4 GB | aufklarer / Qwen3-TTS-12Hz-1.7B-Base-MLX-8bit |
| Qwen3-TTS-1.7B Base (bf16, domyślnie) | 3.9 GB | aufklarer / Qwen3-TTS-12Hz-1.7B-Base-MLX-bf16 |
| Qwen3-TTS-0.6B CustomVoice (bf16) | 1.8 GB | aufklarer / Qwen3-TTS-12Hz-0.6B-CustomVoice-MLX-bf16 |
| Qwen3-TTS CoreML (FP16) | 2.1 GB | aufklarer / Qwen3-TTS-CoreML |
Wtyczka CoreML
CoreML uruchamia sześć skompilowanych komponentów. Obliczanie miejsca zależy od wybranego pakietu.
- TextProjector - Projects text token embeddings to the share hidden space
- CodeEmbedder - Wszywki pierwszy-kodebook żetony i żetony kontrolne
- MultiCodeEmbedder - Zamieść żetony z książek kodowych 1- 15
- CodeDecode - 28- warstwa transformatora autoregresywnego z bezpaństwowym pamięci podręcznej KV (max 256 pozycje)
- MultiCodeDecode - 5- predykator kodów dla książek kodowych 1-15
- 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
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
| Flaga | Opis |
|---|---|
--engine | Silnik TTS: qwen3 (MLX, domyślnie), coreml (CoreML / GPU), lub cosyvoice |
--output, -o | Wyjście ścieżki pliku WAV |
--language | Język (domyślnie: angielski). Pomiń użycie rodzimego dialektu głośnika. |
--model | Wariant modelu: base lub customVoice |
--speaker | Głos głośnika (wymaga --model customVoice) |
--temperature | Temperatura pobierania próbek (domyślna: 0,3) |
--top-k | Parametr pobierania próbek Top- k |
--max-tokens | Maksymalna liczba żetonów do wygenerowania (domyślnie: 500) |
--stream | Włącz strumieniowanie - emituje fragmenty audio podczas generacji |
--first-chunk-frames | Liczba klatek w pierwszym strumieniowym kawałku |
--chunk-frames | Liczba klatek na kolejny strumieniowy kawałek |
--batch-file | Ścieżka do pliku tekstowego z jednym wyrazem na linię do syntezy wsadowej |
--batch-size | Liczba 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.
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
)
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.wavWyłą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.