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-model | aufklarer/MOSS-TTS-Nano-100M-CoreML | मॉडल रिपॉजिटरी या स्थानीय डायरेक्टरी |
--moss-nano-compute-units | cpu | cpu या gpu |
--moss-nano-max-frames | 300 | अधिकतम 80 ms फ्रेम; स्वाभाविक अंत आवश्यक |
--moss-nano-seed | 0 | दोहराने योग्य 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 | पहला टोकन: पहला / वार्म / कैश | पहला ऑडियो: पहला / वार्म / कैश |
|---|---|---|---|
| CPU | 779 MiB | 542 / 203 / 52 ms | 563 / 216 / 65 ms |
| CPU+GPU | 731 MiB | 649 / 225 / 24 ms | 741 / 245 / 48 ms |
Swift · Release
उसी M5 Pro पर मूल Swift release CLI: समान संदर्भ, पाठ और सीड के साथ हर नई प्रक्रिया में एक अनुरोध। संदर्भ तैयारी शामिल है, संश्लेषण मॉडल लोडिंग नहीं। RSS में पूरी CLI है, ASR वज़न नहीं। डैश वार्म/कैश स्थितियों के मापन न होने को दिखाते हैं। दोनों आउटपुट ने स्वतंत्र ASR में माँगा गया वाक्य बिल्कुल सही लौटाया।
| बैकएंड | अधिकतम RSS | पहला टोकन: पहला / वार्म / कैश | पहला ऑडियो: पहला / वार्म / कैश |
|---|---|---|---|
| CPU | 670.7 MiB | 537 / — / — ms | 560 / — / — ms |
| CPU+GPU | 602.5 MiB | 570 / — / — ms | 645 / — / — ms |