Automatische vertaling · Engels origineel

MOSS-TTS-Nano

Streaming spraaksynthese en stemklonen met CoreML, 48 kHz stereo audio en 80 ms brokken.

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

Gebruik --voice-sample voor voice-klonen; er is geen referentie-transcript nodig. Mono-verwijzingen worden gedupliceerd naar stereo, herclassificeerd naar 48 kHz en opgevuld tot een 80 ms grens. Codeer een referentie eenmaal en hergebruik de codes van de verzoeken.

--moss-nano-modelaufklarer/MOSS-TTS-Nano-100M-CoreMLModel repository of lokale map
--moss-nano-compute-unitscpucpu of gpu
--moss-nano-max-frames300 Maximaal 80 ms frames; natuurlijk EOS vereist
--moss-nano-seed0Herkauwbaar Swift bemonsteringszaad

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 serialiseert verzoeken en creëert nieuwe CoreML status voor elke uitdrukking. synthesizer en synthesizeStream behoudt stereo; SpeechGenerationModel geeft een mono downmix terug. Pass language: nul. Streams eindigen met een lege laatste marker.

Grenswaarden en metingen

macOS 15+ / iOS 18+; vier gecompileerde grafieken totaal 367.6 MB. Waarschuwing, referentie en gevraagde frames delen een 1.024-rij context. De runtime wijst overflow af en verhoogt een fout als maxFrames wordt bereikt voordat natuurlijke einde-van-spraak. CPU is de standaard; gpu-vergunningen CPU+GPU uitvoering. PCG64 sampling maakt gebruik van NumPy-compatibele zaden; backend numerieke verschillen kunnen nog steeds de output wijzigen.

Python/CoreML op een M5 Pro, 48 GB, macOS 26.6.2; aparte verse processen, vijf warme verzoeken per geval. Klonen maakt gebruik van een 2,72-secondereferentie. Eerste/warm zijn onder andere referentie-, codeer- en coderings-, gecached hergebruik referentiecodes. Synthesis model loading is uitgesloten. RSS omvat de volledige Python werknemer, zonder PyTorch of ASR. Deze zijn niet Swift of iPhone metingen en meten niet speaker overeenkomst.

BackendPiek RSS Eerste token: eerste / warm / gecached Eerste audio: eerste / warm / gecached
CPU779 MiB542 / 203 / 52 ms563 / 216 / 65 ms
CPU+GPU731 MiB649 / 225 / 24 ms741 / 245 / 48 ms

Swift · Release

Native Swift release CLI on the same M5 Pro: one request per vers proces, with the same reference, text and seed. Reference preparation is included; synthese-model loading is excluded. RSS covers the whole CLI without ASR weights. Dashes mean ungemeten warm/cache cases. both outputs passed onafhankelijk ASR with the exact requeste point.

BackendPiek RSS Eerste token: eerste / warm / gecached Eerste audio: eerste / warm / gecached
CPU670,7 MiB537 / . / .560 / . / .
CPU+GPU602,5 MiB570 / .. / .645 / . / . ms

MossTTSNano · OpenMOSS