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
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؛ وقد تؤثر الفروق العددية بين المحركات في الناتج.
القياس عبر Python/CoreML على M5 Pro، بذاكرة 48 GB وmacOS 26.6.2؛ عمليات منفصلة وخمسة طلبات دافئة لكل حالة. مدة المرجع 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
واجهة Swift release الأصلية على M5 Pro نفسه: طلب واحد لكل عملية جديدة بالمرجع والنص والبذرة نفسها. يشمل إعداد المرجع ويستثني تحميل نماذج التوليد. يغطي RSS كامل الواجهة دون أوزان ASR. تشير الشرطات إلى حالات دافئة أو مخزنة لم تُقَس. أعاد التعرف المستقل النص المطلوب بدقة لكلا التسجيلين.
| المحرك | ذروة RSS | أول رمز: أول / دافئ / مخزن | أول صوت: أول / دافئ / مخزن |
|---|---|---|---|
| CPU | 670.7 MiB | 537 / — / — ms | 560 / — / — ms |
| CPU+GPU | 602.5 MiB | 570 / — / — ms | 645 / — / — ms |