Maskinöversättning · Engelskt original

MOSS-TTS-Nano

Streaming talsyntes och röst kloning med CoreML, 48 kHz stereo ljud och 80 ms bitar.

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

Använd --voice-sample för röstkloning; ingen referens utskrift behövs. Mono referenser dupliceras till stereo, försvann till 48 kHz och vadderas till en 80 ms gräns. Koda en referens en gång och återanvända dess koder över förfrågningar.

--moss-nano-modelaufklarer/MOSS-TTS-Nano-100M-CoreMLModellförvar eller lokal katalog
--moss-nano-compute-unitscpucpu eller gpu
--moss-nano-max-frames300Maximalt 80 ms ramar; naturligt EOS krävs
--moss-nano-seed0Reproducerbar Swift provtagningsfrö

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 serialiserar förfrågningar och skapar färska CoreML tillstånd för varje yttrande. syntetisera och synthesizeStream bevara stereo; SpeechGenerationModel returnerar en mono downmix. Pass språk: nil. Streams slut med en tom slutmarkör.

Begränsningar och mätningar

macOS 15+ / iOS 18+4 sammanställda grafer totalt 367.6 MB. Prompt, referens och begärda ramar delar en 1,024-row kontext. Runtiden avvisar överflödet och höjer ett fel om maxFrames uppnås före naturlig slut-of-tal. CPU är standarden; gpu tillåter CPU+GPU avrättning. PCG64 provtagning använder NumPy-kompatibla frön; backend numeriska skillnader kan fortfarande ändra utgång.

Python/CoreML på en M5 Pro, 48 GB, macOS 26.6.2; separata färska processer, fem varma önskemål per fall. Cloning använder en 2.72-andra referens. Första/varma inkluderar referensläsning, kodare belastning och kodning; cachade återanvänder referenskoder. Syntesmodellbelastning är utesluten. RSS inkluderar hela Python arbetstagare, utan PyTorch eller ASRDessa är inte Swift eller iPhone-mätningar och mäter inte likheter med högtalare.

BackendPeak RSSFörsta token: första / varm / cachedFörsta ljudet: första / varm / cachad
CPU779 MiB542 / 203 / 52 ms563 / 216 / 65 ms
CPU+GPU731 MiB649 / 225 / 24 ms741 / 245 / 48 ms

Swift · Släpp

Native Swift släpper CLI på samma M5 Pro: en förfrågan per ny process, med samma referens, text och frö. Referensberedning ingår; syntes-modellbelastning utesluts. RSS täcker hela CLI utan ASR vikter. Dashes betyder obemärkt varm/cache fall. Båda utgångar passerade oberoende ASR

BackendPeak RSSFörsta token: första / varm / cachedFörsta ljudet: första / varm / cachad
CPU670.7 MiB537 / — / — ms560 / — / — ms
CPU+GPU602.5 MiB570 / — / — ms645 / — / — ms

MossTTSNano · OpenMOSS