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.

Milloin tavoita Magpie

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.

VaiheModuuli Yksityiskohdat
1. TokenointiMagpieTokenizerPer-language G2P (IPA dict / byT5 tavut / pinyin / katakana), jaettu 2360-takeinen vocab per-tokenizer-offsettien kanssa, aina lisätyt EOS
2. TekstinkoodaajaMagpieText-koodain6 kausal Transformer-kerrosta, d=768, k=3 conv FFN
3. Purkaja esitäyttöMagpieDecoder12 syy-kerrosta ristihuomion kera. Siemenet 110-kertainen paistettu kaiutin konteksti + BOS KV välimuistiin.
4. LocalTransformerMagpieLocalTransformer1-kerroksen koodikirja AR head, d=256. Näytä 8 koodikirjat per runko peräkkäin ottaen dekooderi piilotettu.
5. Purkaja vaiheMagpieDecoder Yksi AR askel per runko, kunnes EOS tai 500- frame cap (~23 s).
6. NanoCodecMagpieNanoCodecFSQ 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 KoodiG2P putkijohto
FinnishenCMU IPA dict (125 k:n merkinnät, niputettu)
espanjaes Espanjalainen IPA-dikt (nidottu)
Saksade Saksalainen IPA-diktaatti (nippuutettu)
ranskafrbyT5 UTF-8 tavukoodain
italiaitbyT5 UTF-8 tavukoodain
VietnamvibyT5 UTF-8 tavukoodain
HindihiDevanagarin koodipistehaku + viime voittajien alivocab
mandariinikiinazhNLTokenizer(.simplifiedChinese) sana seg + Apple .mandarinToLatin + niputettu pinyiini → IPA:n dict + #N sävyn markkereita
japanijaCFStringTokenizer 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ä.

HakemistoCLI-nimi Henkilöllisyys
0sofiaSofia (oletus)
1ariaAriaCity in Alberta Canada
2jasonJason.
3leoLeo
4john John Van Stan

Mallivaihtoehdot

Variantti LevyRAM (kuorma + purkukoodi)HuggingFace
INT4 (oletusarvo)~247 Mt~1,3 GBaufklarer/Magpie-TTS-Multilingual-357M-MLX-4bit
INT8~411 Mt~1,6 GBaufklarer/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

VaihtoehtoOletus Tavaran kuvaus
--magpie-variantint4Kvantitaation variantti: int4 tai int8
--magpie-speakersofiaPaistettu kaiutin: sofia, aria, jason, leo, john
--magpie-temperature0.6 Näytteenottolämpötila (0 = ahne)
--magpie-top-k80 Näytteenottoon tarkoitettu huippuk-suodatin
--magpie-max-frames500Kova korkki koodekkikehyksillä (~23 s)
--magpie-min-frames4 Vähimmäiskehykset ennen EOS-järjestelmän sallimista
--magpie-prephonemized pois Käsitelkää tuloa IPA:na / puhelinvirtana; hypätkää kielittäin G2P
--languageenglish Valitsee per kieli - footiser putki
--stream poisEmit AsyncStream<AudioChunk> yhden WAV
--seed— Uusittavissa oleva Gumbelin näytteenotto
Japanilainen näytteenottokärki

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 ÄäniSeinäRTF
Erä: INT4, ahne, lyhytkestoinen2.8 s 0,88 s0.32
Erä, INT4, ahne, lause5,8 s1,35 s0.23
Erä, INT4, näyte, 23 s tuotos23 s5.6 s0.24
Virtaus, INT4, näyte23 s21,6 s0.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:

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:

Kaikki kolme korjausta on dokumentoitu inline Swift-moduuli.

Lähde

Lisenssi