Konekäännös · Englanninkielinen alkuperäinen
Magpie-TTS Monikielinen
NVIDIA Magpie-TTS Monikielinen 357M Swift:ssä Apple Silicon . Autoregressiivinen moninumeroinen teksti-puhe-malli NeMo's 22.05 kHz Nano-koodi. Yhdeksän kieltä (englanti, espanja, saksa, ranska, italia, vietnamilainen, hindi, mandariinikiina, japanilainen) ja viisi paistettua kaiutinidentiteettiä. INT4 (~247 MB) tai INT8 (~411 MB). Virtausvalmis, ~120 - Neiti First-packet Latency.
Magpie on oikea valinta, kun tarvitset yhden pienen paketin, joka puhuu yhdeksää kieltä, joilla on yhtenäinen ääni. Viisi leivottua puhujaa pysyvät identiteettitallella kaikilla kielillä . Hyödyllisiä monikielisille avustajille, opetussovelluksille tai äänikirjan kertomukselle, jossa on koodinvaihto. Nollaääni-ääni-kloonaamisen käyttö CosyVoice3, Qwen3-TTS Base tai VoxCPM2 sen sijaan.
Arkkitehtuuri
Magpie on 4-bundle MLX putkisto: tekstin koodaaja → ristikoodaus dekooderi → LocalTransformer codebook head → Causal HiFi-Gan audio codec. Nippujen jakaa dekooderit painot esitäyttö- ja askeltulopisteet vastaamaan virtaussuuntaan FluidInference CoreML asettelu.
| Vaihe | Moduuli | Yksityiskohdat |
|---|---|---|
| 1. Tokenointi | MagpieTokenizer | Per-language G2P (IPA dict / byT5 tavut / pinyin / katakana), jaettu 2360-takeinen vocab per-tokenizer-offsettien kanssa, aina lisätyt EOS |
| 2. Tekstinkoodaaja | MagpieText-koodain | 6 kausal Transformer-kerrosta, d=768, k=3 conv FFN |
| 3. Purkaja esitäyttö | MagpieDecoder | 12 syy-kerrosta ristihuomion kera. Siemenet 110-kertainen paistettu kaiutin konteksti + BOS KV välimuistiin. |
| 4. LocalTransformer | MagpieLocalTransformer | 1-kerroksen koodikirja AR head, d=256. Näytä 8 koodikirjat per runko peräkkäin ottaen dekooderi piilotettu. |
| 5. Purkaja vaihe | MagpieDecoder | Yksi AR askel per runko, kunnes EOS tai 500- frame cap (~23 s). |
| 6. NanoCodec | MagpieNanoCodec | FSQ käänteisesti → syy-yhteys HiFi-GAN → 22,05 kHz monoaaltomuoto. |
Kielet ja G2P
Kaikilla yhdeksällä kielellä käydään läpi Qwen3-ASR SDK's testMultilingualRoundTrip.
| Kieli | Koodi | G2P putkijohto |
|---|---|---|
| Finnish | en | CMU IPA dict (125 k:n merkinnät, niputettu) |
| espanja | es | Espanjalainen IPA-dikt (nidottu) |
| Saksa | de | Saksalainen IPA-diktaatti (nippuutettu) |
| ranska | fr | byT5 UTF-8 tavukoodain |
| italia | it | byT5 UTF-8 tavukoodain |
| Vietnam | vi | byT5 UTF-8 tavukoodain |
| Hindi | hi | Devanagarin koodipistehaku + viime voittajien alivocab |
| mandariinikiina | zh | NLTokenizer(.simplifiedChinese) sana seg + Apple .mandarinToLatin + niputettu pinyiini → IPA:n dict + #N sävyn markkereita |
| japani | ja | CFStringTokenizer kanji reading + NFC-säilötty dakuten + heibaani piki markkereita + partikkeleita/hiilettely ohitus |
Jaettu 2360-entry-vocab yhdistää kunkin kielen ala-tokeenisaattorin pää-päästä-päähän-objektin (merkittynä MagpieSubVocab). Tekstinsyöttö lisää kaksi lisäriviä BOS/EOS-äänen ohi; eos_id = 2361 liitetään jokaiseen syöttösarjaan.
Kypsennetyt puhujat
Tarkastuspisteessä on viisi kaiutinta (110 ruutua × 768 himmennä kutakin), joita käytetään jokaisen AR-dekoodauksen etuliitteenä. Kaiuttimen henkilöllisyys on yhdenmukainen kaikilla yhdeksällä kielellä.
| Hakemisto | CLI-nimi | Henkilöllisyys |
|---|---|---|
| 0 | sofia | Sofia (oletus) |
| 1 | aria | AriaCity in Alberta Canada |
| 2 | jason | Jason. |
| 3 | leo | Leo |
| 4 | john | John Van Stan |
Mallivaihtoehdot
| Variantti | Levy | RAM (kuorma + purkukoodi) | HuggingFace |
|---|---|---|---|
| INT4 (oletusarvo) | ~247 Mt | ~1,3 GB | aufklarer/Magpie-TTS-Multilingual-357M-MLX-4bit |
| INT8 | ~411 Mt | ~1,6 GB | aufklarer/Magpie-TTS-Multilingual-357M-MLX-8bit |
Molemmat niput käyttävät MLX litteä affinointi (mlx_affine_flat, ryhmäkoko 64) ja dekvantitoidaan FP32 kuormitushetkellä . INT4 on kuultavissa ja voidaan erottaa INT8 tästä mallista. Valitse INT4 ellei sinulla ole varastointia varalla.
CLI-käyttö
# 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
Valinnat
| Vaihtoehto | Oletus | Tavaran kuvaus |
|---|---|---|
--magpie-variant | int4 | Kvantitaation variantti: int4 tai int8 |
--magpie-speaker | sofia | Paistettu kaiutin: sofia, aria, jason, leo, john |
--magpie-temperature | 0.6 | Näytteenottolämpötila (0 = ahne) |
--magpie-top-k | 80 | Näytteenottoon tarkoitettu huippuk-suodatin |
--magpie-max-frames | 500 | Kova korkki koodekkikehyksillä (~23 s) |
--magpie-min-frames | 4 | Vähimmäiskehykset ennen EOS-järjestelmän sallimista |
--magpie-prephonemized | pois | Käsitelkää tuloa IPA:na / puhelinvirtana; hypätkää kielittäin G2P |
--language | english | Valitsee per kieli - footiser putki |
--stream | pois | Emit AsyncStream<AudioChunk> yhden WAV |
--seed | — | Uusittavissa oleva Gumbelin näytteenotto |
Japanin syötteet pidempi kuin yksi sana tarvitsee stokastinen dekoodaus (--magpie-temperature 0.6 --magpie-top-k 80 --seed 42 peilaa NeMo's reference test). Ahneus juuttuu ensimmäiseen lauseeseen, koska heibaanien heuristinen heuristinen poikkeamat per-sana totuus.
Äänen kloonausta ei tueta
Magpie ei ole nolla-shot kaiutin ilmastointi mallissa; vain 5 paistettu identiteettialus nippu. --voice-sample, --speaker, --instruct liput, joissa on toimiva virhe osoittaa käyttäjät --magpie-speaker lippu tai moottorit, jotka tukevat kloonausta (Qwen3-TTS-tukikohta, CosyVoice3, VoxCPM2).
Suorituskyky (M4 Pro)
| Asetukset | Ääni | Seinä | RTF |
|---|---|---|---|
| Erä: INT4, ahne, lyhytkestoinen | 2.8 s | 0,88 s | 0.32 |
| Erä, INT4, ahne, lause | 5,8 s | 1,35 s | 0.23 |
| Erä, INT4, näyte, 23 s tuotos | 23 s | 5.6 s | 0.24 |
| Virtaus, INT4, näyte | 23 s | 21,6 s | 0.93 |
First-packet latency in streaming mode on .120 ms mallin kuormituksen jälkeen. Virtaus RTF on suurempi, koska koodekki on uudelleen kytkettynä täyteen koodipuskuriin jokaisella palalla päästöä (tuleva versio voi välimuistin koodekkitila).
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)
Lisäksi MLX Bundle, Magpie alukset a CoreML nippu (aufklarer/Magpie-TTS-Multilingual-357M-CoreML-8bit~342 MB INT8). Neljä .mlmodelc Pakkausten sisältö text_encoder, decoder_prefill, decoder_step, nanocodec_decoder ANE-ajo / GPU; Swift-side FSQ käänteisenä muuttaa otokseen otetut koodit 32- Dim lataa koodekin.
# 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
Vs --engine magpie:
- Hybridiputki tänään. • 1- LocalTransformer-kerros (koodebook-näytteenottopää NeMo-junat) ja 8 ääni upotuspöydät eivät lähetä sisällä CoreML nippu. Ensimmäinen synteesi CoreML moottori lazy-loads MLX INT4 nippu ajaa molempia paloja. ASR Pyörrematka on bit-for-bittinen samanlainen kuin MLX backend; ero on, että tämä moottori vetää sisään MLX Puhdaskin. CoreML polku vain ANE:lle iOS käyttöönotto tarvitsee nippu laivata
local_transformer/*.npy+audio_embedding_*.npyja Swift-kiihdytys LT (seurannan seuranta). - Ei streaming.
nanocodec_decoder.mlmodelcjäljitetään kiinteässä 64-ruudun ikkunassa. Me leikkaamme sisäisesti pidempiä sekvenssejä, mutta ensimmäisen paketin latenssi olisi ~3 s, jos päästämme jyvän raja-alueilla.--streamhylätään toimintakelpoisella virheellä. - Ei japanilaista tomaattista. CoreML bundle ei toimita JA tomaattisia JSONeja vielä.
--language jatällä moottorilla automaattisesti kaatuu takaisin MLX takaosaan.
Kaiutintilaus täsmää CoreML-paketin speaker_info.json (0=John, 1=Sofia, 2=Aria, 3=Jason, 4=Leo . Toisin kuin MLX), ja kaiutin enum kartoittaa sisäisesti, joten CLI nimet toimivat molemmille moottoreille.
Täytäntöönpanotiedot
Kolme vikaa, jotka kannattaa tietää, jos viet neMo-tyylistä monikielistä TTS:
- FSQ:n lattiajaosto ...
/on todellinen jako (mlx_divide); NeMo's FSQ inverse käyttää Python//.MLX.floorDivide(...)tai jokainen FSQ-paikka dekoodaa murto-osuuksiksi ja koodekki tahraa äänen. - Sub-vocab offsets ... NeMo's
AggregatedTTSTokenizerconcatenes per-language vocabs with offsetations. Naiivi maailmanlaajuinen ensiesiintymiskartta laskeutuu aina Englannin alueelle ja tuottaa hölynpölyä muille kielille. - Hindi viimewins dedup ...
HindiCharsTokenizerlähettää Devanagari-merkinnän kaksoiskappaleet (CHARSET on päällekkäinen PUNCT_LIST:n kanssa). Python's{l: i for i, l in enumerate(tokens)}dkt-comp pitää viimeisen tehtävän; peili, joka ei ole ensimmäinen.
Kaikki kolme korjausta on dokumentoitu inline Swift-moduuli.
Lähde
- Etupainot: nvidia/magpie_tts_multilingual_357m (NVIDIA Open Model License)
- Koodekki: nvidia/nemo-nano-codec-22khz-1.89kbps-21.5fps
- Paperi: NanoCodec: Kohti korkealaatuista ultranopeaa puhetta LLM Päätelmä (2025)
- Viite CoreML portti: Hälytys/mobius
- Swift -moduulit: Magpietts (MLX) + MagvieTTSCoreML (CoreML)
- CoreML nippu: aufklarer/Magpie-TTS-Multilingual-357M-CoreML-8bit
Lisenssi
- Mallin painot: NVIDIA Open Model License (kaupallinen käyttö sallittu; ks. linkitetty PDF HuggingFace -sivulla)
- Swift portti + niputettu IPA / pinyin sanakirjat: sama kuin ylävirtaan NeMo (Apache 2.0 sanakirjoissa, NVIDIA Mallin OML)