[اقرأ المقال] [عرض توضيحي] [يعانق الوجه]
Moshi هو نموذج أساسي لنص الكلام وإطار حوار منطوق مزدوج كامل . ويستخدم Mimi، وهو برنامج ترميز صوتي عصبي متطور. تقوم Mimi بمعالجة الصوت بتردد 24 كيلو هرتز، وصولاً إلى تمثيل 12.5 هرتز مع عرض نطاق ترددي يبلغ 1.1 كيلوبت في الثانية، بطريقة تدفق كاملة (زمن الوصول 80 مللي ثانية، حجم الإطار)، ومع ذلك تعمل بشكل أفضل من برامج الترميز الحالية غير المتدفقة، مثل SpeechTokenizer (50 هرتز) ، 4 كيلوبت في الثانية)، أو SemantiCodec (50 هرتز، 1.3 كيلوبت في الثانية).
يقوم Moshi بتصميم دفقين من الصوت : أحدهما يتوافق مع Moshi والآخر للمستخدم. عند الاستدلال، يتم أخذ الدفق من المستخدم من إدخال الصوت، ويتم أخذ عينة من موشي من إخراج النموذج. على طول هذين الدفقين الصوتيين، يتنبأ موشي برموز نصية تتوافق مع خطابه الخاص، ومونولوجه الداخلي ، مما يحسن جودة توليده بشكل كبير. يقوم محول العمق الصغير بنماذج التبعيات البينية لكتاب الشفرات لخطوة زمنية معينة، في حين يقوم المحول الزمني الكبير ذو المعلمة 7B بنمذجة التبعيات الزمنية. يحقق Moshi زمن انتقال نظري يبلغ 160 مللي ثانية (80 مللي ثانية لحجم إطار Mimi + 80 مللي ثانية من التأخير الصوتي)، مع زمن انتقال إجمالي عملي يصل إلى 200 مللي ثانية على وحدة معالجة الرسومات L4.
تحدث إلى Moshi الآن في العرض التجريبي المباشر.
يعتمد Mimi على برامج الترميز الصوتية العصبية السابقة مثل SoundStream وEnCodec، مما يضيف محولًا في كل من جهاز التشفير ووحدة فك التشفير، وتكييف الخطوات لتتناسب مع معدل الإطارات الإجمالي البالغ 12.5 هرتز. يسمح هذا لـ Mimi بالاقتراب من متوسط معدل الإطارات لرموز النص (~ 3-4 هرتز)، والحد من عدد خطوات الانحدار التلقائي في Moshi. على غرار SpeechTokenizer، يستخدم Mimi فقدان التقطير بحيث تتطابق الرموز المميزة لكتاب الرموز الأول مع تمثيل خاضع للإشراف الذاتي من WavLM، والذي يسمح بنمذجة المعلومات الدلالية والصوتية باستخدام نموذج واحد. ومن المثير للاهتمام، أنه على الرغم من أن Mimi سببي ومتدفق بالكامل، فإنه يتعلم كيفية مطابقة التمثيل غير السببي من WavLM بشكل كافٍ، دون إدخال أي تأخير. أخيرًا، وعلى غرار EBEN، يستخدم Mimi فقط خسارة التدريب التنافسي ، جنبًا إلى جنب مع مطابقة الميزات، مما يُظهر تحسينات قوية من حيث الجودة الذاتية على الرغم من معدل البت المنخفض.
هناك ثلاثة إصدارات منفصلة من مكدس استدلال moshi في هذا الريبو.
إصدار Python الذي يستخدم PyTorch موجود في دليل moshi/
.
إصدار Python الذي يستخدم MLX لأجهزة Mac من السلسلة M موجود في الدليل moshi_mlx/
.
إصدار Rust المستخدم في الإنتاج موجود في دليل rust/
. يحتوي هذا على وجه الخصوص على تطبيق Mimi في Rust، مع توفر روابط Python كـ rustymimi
.
وأخيرًا، يتم توفير رمز العرض التجريبي المباشر في دليل client/
.
نصدر ثلاثة نماذج:
برنامج ترميز الكلام الخاص بنا ميمي،
تم ضبط موشي على الصوت الاصطناعي الذكوري (موشيكو)،
قام موشي بضبط الصوت الاصطناعي الأنثوي (موشيكا).
اعتمادًا على الواجهة الخلفية، سيختلف تنسيق الملف والتكميم المتاح. فيما يلي قائمة HuggingFace repo مع كل طراز. يتم تضمين Mimi في كل من هذه العناصر، ويستخدم دائمًا نفس تنسيق نقطة التفتيش.
موشيكا لـ PyTorch (bf16): kyutai/moshika-pytorch-bf16.
موشيكو لـ PyTorch (bf16): kyutai/moshiko-pytorch-bf16.
Moshika لـ MLX (int4، int8، bf16): kyutai/moshika-mlx-q4، kyutai/moshika-mlx-q8، kyutai/moshika-mlx-bf16.
Moshiko لـ MLX (int4، int8، bf16): kyutai/moshiko-mlx-q4، kyutai/moshiko-mlx-q8، kyutai/moshiko-mlx-bf16.
موشيكا للصدأ/الشمعة (int8, bf16): كيوتاي/موشيكا-شمعة-q8, كيوتاي/موشيكا-mlx-bf16.
موشيكو للصدأ/الشمعة (int8, bf16): كيوتاي/موشيكو-شمعة-q8, كيوتاي/موشيكو-mlx-bf16.
يتم إصدار جميع الطرز بموجب ترخيص CC-BY 4.0.
ستحتاج إلى إصدار Python 3.10 على الأقل، ويوصى باستخدام الإصدار 3.12. للحصول على متطلبات محددة، يرجى التحقق من أدلة الواجهات الخلفية الفردية. يمكنك تثبيت عملاء PyTorch وMLX بما يلي:
pip install moshi # moshi PyTorch، من PyPIpip install moshi_mlx # moshi MLX، من PyPI، الأفضل مع Python 3.12.# أو الإصدارات المتطورة لـ Moshi وMoshi-MLX.pip install -e "git+https://git@github .com/kyutai-labs/moshi.git#egg=moshi&subdirectory=moshi"pip install -e "git+https://[email protected]/kyutai-labs/moshi.git#egg=moshi_mlx&subdirectory=moshi_mlx"pip install rustymimi # mimi، تنفيذ الصدأ باستخدام روابط Python من PyPI
إذا كنت لا تستخدم Python 3.12، فقد تحصل على خطأ عند تثبيت moshi_mlx
أو rustymimi
(الذي يعتمد عليه moshi_mlx
). ستحتاج بعد ذلك إلى تثبيت سلسلة أدوات Rust، أو التبديل إلى Python 3.12.
على الرغم من أننا نأمل أن تعمل قاعدة التعليمات البرمجية الحالية على نظام التشغيل Windows، إلا أننا لا نقدم دعمًا رسميًا لها. لقد اختبرنا إصدار MLX على جهاز MacBook Pro M3. في الوقت الحالي، لا ندعم التكميم لإصدار PyTorch، لذلك ستحتاج إلى وحدة معالجة رسومات بها قدر كبير من الذاكرة (24 جيجابايت).
لاستخدام الواجهة الخلفية لـ Rust، ستحتاج إلى إصدار حديث من سلسلة أدوات Rust. لتجميع دعم GPU، ستحتاج أيضًا إلى تثبيت CUDA بشكل صحيح لوحدة معالجة الرسومات الخاصة بك، خاصة مع nvcc
.
يمكن العثور على واجهة برمجة التطبيقات المستندة إلى PyTorch في دليل moshi
. وهو يوفر نسخة متدفقة من رمز الصوت (mimi) ونموذج اللغة (moshi).
من أجل التشغيل في الوضع التفاعلي، تحتاج إلى تشغيل خادم سيقوم بتشغيل النموذج، ويمكنك بعد ذلك استخدام إما واجهة مستخدم الويب أو عميل سطر الأوامر.
ابدأ الخادم بـ:
بايثون -m moshi.server [--gradio-tunnel] [--hf-repo kyutai/moshika-pytorch-bf16]
ثم قم بالوصول إلى واجهة مستخدم الويب على المضيف المحلي:8998. إذا كانت وحدة معالجة الرسومات الخاصة بك موجودة على جهاز بعيد، فلن يعمل هذا نظرًا لأنه لا يُسمح لمواقع الويب التي تستخدم http باستخدام واجهة برمجة التطبيقات الصوتية. هناك طريقتان للالتفاف حول هذا:
قم بإعادة توجيه منفذ 8998 البعيد إلى مضيفك المحلي باستخدام علامة ssh -L
. ثم يتصل بالمضيف المحلي: 8998 كما ذكرنا سابقًا.
استخدم الوسيطة --gradio-tunnel
، حيث يؤدي ذلك إلى إعداد نفق بعنوان URL يمكن الوصول إليه من أي مكان. ضع في اعتبارك أن هذا النفق يمر عبر الولايات المتحدة ويمكن أن يضيف زمن وصول كبير (يصل إلى 500 مللي ثانية من أوروبا). يمكنك استخدام --gradio-tunnel-token
لتعيين رمز سري ثابت وإعادة استخدام نفس العنوان بمرور الوقت.
يمكنك استخدام --hf-repo
لتحديد نموذج مختلف تم تدريبه مسبقًا، عن طريق تعيين مستودع Hugging Face المناسب.
قد يؤدي الوصول إلى خادم ليس مضيفًا محليًا عبر http إلى حدوث مشكلات في استخدام الميكروفون في واجهة مستخدم الويب (في بعض المتصفحات يُسمح بذلك فقط باستخدام https).
العميل المحلي متاح أيضًا، مثل
بايثون -m moshi.client [--url URL_TO_GRADIO]
ومع ذلك، لاحظ أنه، على عكس متصفح الويب، فإن هذا العميل مجرد هيكلي: فهو لا يقوم بأي إلغاء للصدى، ولا يحاول تعويض التأخر المتزايد عن طريق تخطي الإطارات.
لمزيد من المعلومات، وخاصة حول كيفية استخدام واجهة برمجة التطبيقات مباشرة، يرجى مراجعة moshi/README.md.
بمجرد تثبيت moshi_mlx
، يمكنك تشغيله
python -m moshi_mlx.local -q 4 # أوزان مكممة إلى 4 بتspython -m moshi_mlx.local -q 8 # أوزان مكممة إلى 8 بتات# وباستخدام نموذج مختلف تم تدريبه مسبقًا: python -m moshi_mlx.local -q 4 --hf- الريبو كيوتاي/moshika-mlx-q4 python -m moshi_mlx.local -q 8 --hf-repo kyutai/moshika-mlx-q8# احرص على مطابقة العلمين `-q` و`--hf-repo` دائمًا.
واجهة سطر الأوامر هذه هي أيضًا مجردة. فهو لا يقوم بأي إلغاء للصدى، ولا يحاول تعويض التأخر المتزايد عن طريق تخطي الإطارات.
بدلاً من ذلك، يمكنك تشغيل python -m moshi_mlx.local_web
لاستخدام واجهة مستخدم الويب، ويكون الاتصال عبر http وسيكون على localhost:8998.
لتشغيل خادم استدلال Rust، استخدم الأمر التالي من داخل دليل rust
:
تشغيل البضائع - ميزات cuda -bin moshi-backend -r -- --config moshi-backend/config.json مستقل
عند استخدام macOS، يمكنك استبدال --features cuda
بـ --features metal
.
وبدلاً من ذلك، يمكنك استخدام config-q8.json
بدلاً من config.json
لاستخدام نموذج q8 الكمي. يمكنك تحديد نموذج مختلف تم تدريبه مسبقًا، على سبيل المثال Moshika، عن طريق تغيير مفتاح "hf_repo"
في أي من الملفين.
بمجرد أن يقوم الخادم بطباعة "الاستماع المستقل للعاملين"، يمكنك استخدام واجهة مستخدم الويب. افتراضيًا، يستخدم خادم Rust https، لذا سيكون على المضيف المحلي:8998.
ستصلك تحذيرات بشأن كون الموقع غير آمن. عند استخدام Chrome، يمكنك تجاوز ذلك عن طريق تحديد "التفاصيل" أو "متقدم"، ثم "زيارة هذا الموقع غير الآمن" أو "المتابعة إلى المضيف المحلي (غير آمن)".
نوصي باستخدام واجهة مستخدم الويب لأنها توفر ميزة إلغاء الصدى الإضافية التي تساعد في تحسين جودة النموذج بشكل عام. لاحظ أن معظم الأوامر ستخدم واجهة المستخدم هذه مباشرةً في عنوان URL المقدم، ولا يوجد أي شيء آخر يمكنك فعله بشكل عام.
وبدلاً من ذلك، نوفر واجهات سطر الأوامر لإصدارات Rust وPython، والبروتوكول هو نفسه كما هو الحال مع واجهة مستخدم الويب، لذا لا يوجد شيء يمكن تغييره من جانب الخادم.
كمرجع، إليك قائمة عملاء Moshi.
من داخل دليل rust
، قم بتشغيل ما يلي:
تشغيل البضائع --bin moshi-cli -r -- tui --host localhost
بايثون -m moshi.client
عامل ميناء يؤلف
يتطلب مجموعة أدوات حاوية NVIDIA
يمكن إنشاء واجهة مستخدم الويب من هذا الريبو عبر الخطوات التالية (ستتطلب هذه الخطوات تثبيت npm
).
عميل القرص المضغوط تثبيت npm بناء تشغيل npm
يمكن بعد ذلك العثور على واجهة مستخدم الويب في دليل client/dist
.
إذا كنت ترغب في التثبيت من نسخة من هذا المستودع، ربما لمواصلة تطوير Moshi، يمكنك القيام بما يلي:
# من جذر نسخة تثبيت repopip -e 'moshi[dev]'pip install -e 'moshi_mlx[dev]'pre-commit install
إذا كنت ترغب في إنشاء rustymimi
محليًا (بافتراض أنك قمت بتثبيت Rust بشكل صحيح):
نقطة تثبيت ماتورين maturin dev -r -m Rust/mimi-pyo3/Cargo.toml
راجع قسم الأسئلة الشائعة قبل فتح أي مشكلة.
يتم توفير الكود الحالي بموجب ترخيص MIT لأجزاء Python، وترخيص Apache للواجهة الخلفية لـ Rust. يتم توفير رمز عميل الويب بموجب ترخيص MIT. لاحظ أن أجزاء من هذا الكود تعتمد على AudioCraft، والتي تم إصدارها بموجب ترخيص MIT.
تم إصدار أوزان النماذج بموجب ترخيص CC-BY 4.0.
إذا كنت تستخدم Mimi أو Moshi، يرجى ذكر الورقة التالية،
@techreport{kyutai2024moshi, title={Moshi: a speech-text foundation model for real-time dialogue}, author={Alexandre D'efossez and Laurent Mazar'e and Manu Orsini and Am'elie Royer and Patrick P'erez and Herv'e J'egou and Edouard Grave and Neil Zeghidour}, year={2024}, eprint={2410.00037}, archivePrefix={arXiv}, primaryClass={eess.AS}, url={https://arxiv.org/abs/2410.00037}, }