Strojový překlad · Anglický originál

Magpie- TTS Multilingual

NVIDIA Magpie- TTS Vícejazyčné 357M v Swift na Apple Silicon - autoregresivní multi-codebook text- to- - model řeči nad NeMo je 22.05 kHz Nano-kodek. Devět jazyků (anglicky, španělsky, německy, francouzsky, italsky, vietnamsky, hindsky, mandarínsky čínsky, japonsky) s pěti pečených reproduktorů identity. INT4 (~ 247 MB) nebo INT8 (~411 MB). Streaming- ready, ~120 Slečna první-paket latency.

Kdy se dostat na Straku

Straka je ten správný výběr, když potřebujete jeden malý svazek, který mluví devět jazyků s konzistentním hlasem. Pět pečených reproduktorů zůstat identity- stabilní napříč jazyky - užitečné pro vícejazyčné asistenty, vzdělávací aplikace, nebo audiokniha vypravěče s code- přepínání. Pro nulo-shot hlas klonování použití CosyVoice3, Qwen3-TTS základnanebo VoxCPM2 místo toho.

Architektura

Straka je 4-Svazek MLX ropovod: textový kodér → cross- attent dekodér → LokalTransformer codebook head → Příčinný HiFi-GAN audio kodek. Svazky sdílet dekodér hmotnosti mezi předplňte a krok vstupních bodů, aby odpovídaly proti proudu FluidInference je CoreML Rozvržení.

FázeModulPodrobnosti
1. TokenizaceMagpieTokenizerPer- jazyk G2P (NPP dict / byT5 bytes / pinyin / katakana), sdílený 2360-tox vocab s per- tokenizerem ofsety, vždy připojený EOS
2. Textový kodérMagpieTextEnkoder6 kauzálních vrstev transformátoru, d = 768, k = 3 conv FFN
3. Předplňte dekodérMagpieDecoder12 kauzálních vrstev s křížovou pozorností. Do kapsy KV naseje 110rámečku pečený reproduktor + BOS.
4. LocalTransformerMagpieLocalTransformer1vrstvý kód AR hlava, d = 256. Ukázky 8 kódů na rám postupně vzhledem k dekodéru skryté.
5. Dekodér krokMagpieDecoderJeden krok AR na rám až do EOS nebo 500- rám uzávěrem (~ 23 s).
6. NanokodekMagpieNanokokFSQ inverzní → kauzální HiFi-GAN → 22.05 kHz mono waveform.

Jazyky a G2P

Všech devět jazyků kruhový-výlet Qwen3-ASR v SDK testMultilingualRoundTrip. Každý dostane na míru potrubí:

JazykKódPlynovod G2P
EnglishenCMU NPP dict (125 k zápisy, sdružené)
ŠpanělštinaesŠpanělské nařízení NPP (sdružené)
NěmčinadeNěmecký dekret NPP (spolčený)
FrancouzštinafrbyT5 UTF-8 byte encoder
ItalštinaitbyT5 UTF-8 byte encoder
VietnamštinavibyT5 UTF-8 byte encoder
HindštinahiDevanagari kódové vyhledání + poslední -wins sub-vocab
čínština mandarínskázhNLTokenizer(.simplifiedChinese) word seg + Apple .mandarinToLatin + svázaný pinyin → NPP dict + #N znaménka tónu
japonskyjaCFStringTokenizer kanji čtení + NFC- konzervované dakuten + heiban markery hřiště + částice / pozdrav overrides

Sdílený vstup 2360-Vocab ztotožňuje každý jazyk sub- tokeniser end- to- end s per- language ofsetem (zaznamenán v MagpieSubVocab). Text- Embedding přidává dva další řádky za vocab pro BOS / EOS; eos_id = 2361 je připojeno ke každé vstupní sekvenci.

Pečené reproduktory

Kontrolní bod zahrnuje pět formátů reproduktorů (110 snímků × 768 dim každý), které se používají jako předvolba každé AR dekódování. Reproduktor identity je konzistentní ve všech devíti jazycích.

IndexNázev CLIIdentita
0sofiaSofia (výchozí hodnota)
1ariaArio.
2jasonJasone.
3leoLeo.
4johnJohn Van Stan

Vzor Variantů

VariantaDiskRAM (zatížení + dekódování)HuggingFace
INT4 (přednastaveno)~ 247 MB~ 1.3 GBaufklarer / Magpie-TTS-Multilingual-357M-MLX-4bit
INT8~ 411 MB~ 1.6 GBaufklarer / Magpie-TTS-Multilingual-357M-MLX-8bit

Obě svazky používají MLX ploché afinové quantizace (mlx_affine_flat, group size 64) a dequantise to FP32 at load time - runtime aktivace je plná přesnost. INT4 je pro tento model zvukově nerozlišitelný od INT8; vyberte INT4, pokud nemáte skladovací rezervu.

Použití CLI

# English, greedy decoding
speech speak "Hello, world." --engine magpie --magpie-speaker aria \
    --magpie-temperature 0 -o out.wav

# Spanish (any of the 9 languages — pick with --language)
speech speak "Hola, mundo." --engine magpie --language es \
    --magpie-speaker aria -o out.wav

# Japanese — needs stochastic decoding (greedy gets stuck on first phrase)
speech speak "こんにちは世界、これは音声合成システムです。" \
    --engine magpie --language ja --magpie-temperature 0.6 \
    --magpie-top-k 80 --seed 42 -o out.wav

# Streaming synthesis with playback
speech speak "Streaming test" --engine magpie --stream --play

# List the 5 baked speakers
speech speak --engine magpie --list-speakers

# Pre-phonemised IPA bypasses the per-language G2P
speech speak "həˈloʊ" --engine magpie --magpie-prephonemized -o out.wav

Možnosti

MožnostVýchozíPopis
--magpie-variantint4Varianta kvantifikace: int4 nebo int8
--magpie-speakersofiaPečený reproduktor: sofia, aria, jason, leo, john
--magpie-temperature0.6Teplota odběru vzorků (0 = chamtivost)
--magpie-top-k80Filtr Top-k pro odběr vzorků
--magpie-max-frames500Tvrdé víčko na rámech kodeku (~ 23 s)
--magpie-min-frames4Minimální rámy před povolením EOS
--magpie-prephonemizedvypnutoZacházení s vstupy jako NPP / foneme stream; přeskočit per- jazyk G2P
--languageenglishVybere per- language tokeniser ropovod
--streamvypnutoEmit AsyncStream<AudioChunk> místo jediného WAV
--seed—Reprodukovatelný vzorek Gumbel
Japonský tip pro odběr vzorků

Japonské vstupy delší než jedno slovo potřebují stochastické dekódování (--magpie-temperature 0.6 --magpie-top-k 80 --seed 42 Reference test NeMo). Greedy se zasekne na první frázi, protože heuristický heurismus heuristického heady se odchyluje od per- slova pravdy.

Hlasové klonování - nepodporováno

Straka nemá v modelu žádnou nulovou úpravu reproduktoru; pouze 5 pečená identita loď v svazku. CLI odmítá sdílené --voice-sample, --speaker, a --instruct Vlajky s napadnutelnou chybou ukazující uživatele na --magpie-speaker vlajka nebo motory, které podporují klonování (Qwen3-TTS základna, CosyVoice3, VoxCPM2).

Výkonnost (M4 Pro)

NastaveníAudioStěnaRTF
Č. šarže, INT4, hamižná, krátká výzva2.80.880.32
Č. š., INT4, hamižný, rozsudek5.81.350.23
Šarže, INT4, vzorkovaný, výstup 2323 s5.60.24
Streaming, INT4, odebrané23 s21.60.93

Latence prvních paketů v streamingu je po zatížení modelu 120 ms. Streaming RTF je vyšší, protože kodek je re- volán na full code buffer při každém vypouštění kuku (budoucí revize může cache kodek stavu).

Swift API

import MagpieTTS

let model = try await MagpieTTS.fromPretrained(variant: .int4)

// Batch synthesis (en/es/de/fr/it/vi/hi/zh — greedy works)
let audio = try model.synthesize(
    text: "Hello, world.",
    speaker: .aria,
    language: .english,
    params: MagpieTTSParams(temperature: 0, topK: 1, maxSteps: 500))

// Japanese — use stochastic sampling
let audioJA = try model.synthesize(
    text: "こんにちは世界、これは音声合成システムです。",
    speaker: .aria,
    language: .japanese,
    params: MagpieTTSParams(temperature: 0.6, topK: 80,
                              maxSteps: 300, seed: 42))

// Streaming (AsyncStream<AudioChunk>)
let stream = model.synthesizeStream(
    text: "Streaming text",
    speaker: .aria,
    language: .english,
    firstChunkFrames: 8,
    framesPerChunk: 25)
for try await chunk in stream {
    // chunk.samples is 22.05 kHz mono Float32
}

CoreML backend (--engine magpie-coreml)

Vedle svazku MLX, Magpie lodě CoreML svazek (aufklarer / Magpie-TTS-Multilingual-357M-CoreML-8bit, ~ 342 MB INT8). .mlmodelc balíčky - text_encoder, decoder_prefill, decoder_step, nanocodec_decoder - spuštěn na ANE / GPU; Swift- side FSQ inverzní přemění vybrané kódy na 32-dim latents kodek consumes.

# 8 languages (no Japanese), 5 baked speakers
speech speak "Hello world." --engine magpie-coreml --magpie-speaker aria -o hi.wav
speech speak "Hola mundo." --engine magpie-coreml --language es --magpie-speaker leo -o es.wav

# --language ja auto-routes to the MLX backend (stderr note)
speech speak "こんにちは" --engine magpie-coreml --language ja -o ja.wav

Caveats vs --engine magpie:

Reproduktor objednávání odpovídá CoreML svazku speaker_info.json (0=John, 1=Sofia, 2=Aria, 3=Jason, 4=Leo - odlišná od MLX) a reproduktor interně mapuje, takže názvy CLI fungují pro oba motory.

Prováděcí poznámky

Tři chyby stojí za to vědět o tom, zda jste portování NeMo-styl vícejazyčné TTS:

Všechny tři opravy jsou zdokumentovány inline v Př Swift modul.

Zdroj

Licence