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

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أول رمز: أول / دافئ / مخزنأول صوت: أول / دافئ / مخزن
CPU779 MiB542 / 203 / 52 ms563 / 216 / 65 ms
CPU+GPU731 MiB649 / 225 / 24 ms741 / 245 / 48 ms

Swift · Release

واجهة Swift release الأصلية على M5 Pro نفسه: طلب واحد لكل عملية جديدة بالمرجع والنص والبذرة نفسها. يشمل إعداد المرجع ويستثني تحميل نماذج التوليد. يغطي RSS كامل الواجهة دون أوزان ASR. تشير الشرطات إلى حالات دافئة أو مخزنة لم تُقَس. أعاد التعرف المستقل النص المطلوب بدقة لكلا التسجيلين.

المحركذروة RSSأول رمز: أول / دافئ / مخزنأول صوت: أول / دافئ / مخزن
CPU670.7 MiB537 / — / — ms560 / — / — ms
CPU+GPU602.5 MiB570 / — / — ms645 / — / — ms

MossTTSNano · OpenMOSS