Traduzione automatica · Originale inglese

MOSS-TTS-Nano

Streaming della sintesi vocale e clonazione vocale con CoreML, 48 kHz audio stereo e 80 ms pezzi.

Apache-2.0 · aufklarer/MOSS-TTS-Nano-100M-CoreML

CLI

speech speak "Hello world." --engine moss-nano -o hello.wav
speech speak "The weather is nice today." --engine moss-nano \
  --voice-sample reference.wav --moss-nano-seed 1 -o cloned.wav
speech speak "Hello world." --engine moss-nano --stream --play -o streamed.wav

Utilizzare --voice-sample per clonazione vocale; non è necessaria alcuna trascrizione di riferimento. I riferimenti mono sono duplicati a stereo, rivenditampleed a 48 kHz e imbottiti a un limite di 80 ms. codificare un riferimento una volta e riutilizzare i suoi codici attraverso le richieste.

--moss-nano-modelaufklarer/MOSS-TTS-Nano-100M-CoreMLRepositore di modello o directory locale
--moss-nano-compute-unitsC'e' un problema.cpu o gpu
--moss-nano-max-frames300Telaio massimo 80 ms; EOS naturale richiesto
--moss-nano-seed0Riproducibile Swift seme di campionamento

Swift API

import AudioCommon
import MossTTSNano

let model = try await MossTTSNanoModel.fromPretrained()
let reference = try await model.encodeReference(url: referenceURL)
let result = try await model.synthesize(
    text: "The weather is nice today.", reference: reference,
    options: MossTTSNanoOptions(maxFrames: 300, seed: 1))
try WAVWriter.writeStereo(left: result.left, right: result.right,
    sampleRate: 48000, to: outputURL)

MossTTSNanoModel serializza richieste e crea fresco CoreML stato per ogni pronuncia. sintetizzare e sintetizzareStream preservare stereo; SpeechGenerationModel restituisce un mono downmix. Lingua di passaggio: nil. Streams termina con un marcatore finale vuoto.

Limiti e misure

macOS 15+ / iOS 18+; quattro grafici compilati totali 367.6 MB. Prompt, riferimento e frame richiesti condividono una 1,024Il runtime rifiuta il troppopieno e solleva un errore se maxFrames viene raggiunto prima dell'estremo naturale del picco. CPU è il default; gpu permessi CPU+GPU esecuzione. PCG64 campionamento utilizza semi compatibili con NumPy; differenze numeriche backend possono ancora cambiare l'output.

Python/CoreML su un M5 Pro, 48 GB, macOS 26.6.2; processi freschi separati, cinque richieste calde per caso. Cloning utilizza un 2.72-secondo riferimento. Prima/guerra includono la lettura di riferimento, il caricamento e la codifica di encoder; i codici di riferimento di riutilizzo della cache. Il caricamento del modello di sintesi è escluso. Python lavoratore, senza PyTorch o ASR. Questi non sono Swift o misure iPhone e non misurare la somiglianza dei diffusori.

Indietropicco RSSPrimo token: primo / caldo / cachePrimo audio: primo / caldo / cache
CPU779 MiB542 / 203 / 52 ms563 / 216 / 65 ms
CPU+GPU731 MiB649 / 225 / 24 ms741 / 245 / 48 ms

Swift · Rilasciare

Nativo Swift rilascio CLI sulla stessa M5 Pro: una richiesta per processo fresco, con lo stesso riferimento, testo e seme. La preparazione di riferimento è inclusa; il caricamento del modello di sintesi è escluso. RSS copre l'intero CLI senza ASR pesi. I trattini significano casi caldi/cache non misurati. Entrambe le uscite hanno superato indipendenti ASR con l'esatta sentenza richiesta.

Indietropicco RSSPrimo token: primo / caldo / cachePrimo audio: primo / caldo / cache
CPU670.7 MiB537 / — / — m560 / — / — m
CPU+GPU602.5 MiB570 / — / — ms645 / — / — m

MossTTSNano · OpenMOSS