MOSS-TTS-Nano

CoreML के साथ स्ट्रीमिंग वाक् संश्लेषण और वॉइस क्लोनिंग; 48 kHz स्टीरियो और 80 ms खंड।

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

कमांड लाइन

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

वॉइस क्लोनिंग के लिए --voice-sample दें; संदर्भ का ट्रांसक्रिप्ट आवश्यक नहीं है। मोनो संदर्भ स्टीरियो में दोहराए जाते हैं, 48 kHz पर री-सैंपल होते हैं और 80 ms सीमा तक पैड किए जाते हैं। संदर्भ को एक बार एन्कोड करके उसके कोड दोबारा उपयोग करें।

--moss-nano-modelaufklarer/MOSS-TTS-Nano-100M-CoreMLमॉडल रिपॉजिटरी या स्थानीय डायरेक्टरी
--moss-nano-compute-unitscpucpu या gpu
--moss-nano-max-frames300अधिकतम 80 ms फ्रेम; स्वाभाविक अंत आवश्यक
--moss-nano-seed0दोहराने योग्य Swift सैंपलिंग सीड

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 अनुरोध क्रम से चलाता है और हर कथन के लिए नया CoreML स्टेट बनाता है। synthesize और synthesizeStream स्टीरियो रखते हैं; SpeechGenerationModel मोनो मिक्स देता है। language: nil दें। स्ट्रीम खाली अंतिम मार्कर से समाप्त होती है।

सीमाएँ और मापन

macOS 15+ / iOS 18+ आवश्यक; चार संकलित मॉडल कुल 367.6 MB हैं। प्रॉम्प्ट, संदर्भ और माँगे गए फ्रेम 1,024 पंक्तियों का संदर्भ साझा करते हैं। सीमा पार होने या स्वाभाविक अंत से पहले maxFrames पहुँचने पर त्रुटि आती है। डिफ़ॉल्ट CPU है; gpu, CPU+GPU की अनुमति देता है। PCG64 सीड NumPy के अनुकूल हैं; बैकएंड के संख्यात्मक अंतर से आउटपुट बदल सकता है।

M5 Pro, 48 GB, macOS 26.6.2 पर Python/CoreML मापन; अलग प्रक्रियाएँ और प्रत्येक स्थिति में पाँच वार्म अनुरोध। संदर्भ 2.72 सेकंड है। पहले/वार्म समय में संदर्भ पढ़ना, एन्कोडर लोड करना और एन्कोडिंग शामिल हैं; कैश कोड पुनः उपयोग करता है। संश्लेषण मॉडल लोडिंग शामिल नहीं है। RSS में पूरा Python प्रक्रम है, PyTorch/ASR नहीं। ये Swift/iPhone या वक्ता समानता के मापन नहीं हैं।

बैकएंडअधिकतम RSSपहला टोकन: पहला / वार्म / कैशपहला ऑडियो: पहला / वार्म / कैश
CPU779 MiB542 / 203 / 52 ms563 / 216 / 65 ms
CPU+GPU731 MiB649 / 225 / 24 ms741 / 245 / 48 ms

Swift · Release

उसी M5 Pro पर मूल Swift release CLI: समान संदर्भ, पाठ और सीड के साथ हर नई प्रक्रिया में एक अनुरोध। संदर्भ तैयारी शामिल है, संश्लेषण मॉडल लोडिंग नहीं। RSS में पूरी CLI है, ASR वज़न नहीं। डैश वार्म/कैश स्थितियों के मापन न होने को दिखाते हैं। दोनों आउटपुट ने स्वतंत्र ASR में माँगा गया वाक्य बिल्कुल सही लौटाया।

बैकएंडअधिकतम RSSपहला टोकन: पहला / वार्म / कैशपहला ऑडियो: पहला / वार्म / कैश
CPU670.7 MiB537 / — / — ms560 / — / — ms
CPU+GPU602.5 MiB570 / — / — ms645 / — / — ms

MossTTSNano · OpenMOSS