
يقوم هذا المستودع بتنفيذ خط أنابيب متتالي من خطاب إلى كلام يتكون من الأجزاء التالية:
يوفر خط الأنابيب نهجًا مفتوحًا ومعيارًا بالكامل ، مع التركيز على الاستفادة من النماذج المتاحة من خلال مكتبة Transformers على مركز Face Hub. تم تصميم الرمز لسهولة التعديل ، ونحن ندعم بالفعل تطبيقات المكتبة الخاصة بالجهاز والخارجية:
فاد
Stt
LLM
TTS
استنساخ المستودع:
git clone https://github.com/huggingface/speech-to-speech.git
cd speech-to-speechتثبيت التبعيات المطلوبة باستخدام UV:
uv pip install -r requirements.txt بالنسبة لمستخدمي Mac ، استخدم ملف requirements_mac.txt بدلاً من ذلك:
uv pip install -r requirements_mac.txtإذا كنت ترغب في استخدام Melo TTS ، فأنت بحاجة أيضًا إلى التشغيل:
python -m unidic downloadيمكن تشغيل خط الأنابيب بطريقتين:
قم بتشغيل خط الأنابيب على الخادم:
python s2s_pipeline.py --recv_host 0.0.0.0 --send_host 0.0.0.0قم بتشغيل العميل محليًا للتعامل مع إدخال الميكروفون واستلام الصوت الذي تم إنشاؤه:
python listen_and_play.py --host < IP address of your server >python s2s_pipeline.py --local_mac_optimal_settingsهذا الإعداد:
--device mps لاستخدام النواب لجميع النماذج.https://docs.nvidia.com/datacenter/cloud-niater/container-toolkit/latest/install-guide.html
docker compose up
استفادة من تجميع الشعلة للهمسة والطاقة tts. يسمح استخدام Parler-TTS ببث إخراج الصوت ، مما يقلل من زمن انتقال Overeall :
python s2s_pipeline.py
--lm_model_name microsoft/Phi-3-mini-4k-instruct
--stt_compile_mode reduce-overhead
--tts_compile_mode default
--recv_host 0.0.0.0
--send_host 0.0.0.0 في الوقت الحالي ، لا تتوافق أوضاع الرسوم البيانية CUDA مع Parler-TTS المتدفق ( reduce-overhead ، max-autotune ).
يدعم خط الأنابيب حاليًا اللغة الإنجليزية والفرنسية والإسبانية والصينية واليابانية والكورية.
تعتبر حالتان للاستخدام:
--language -تحديد رمز اللغة الهدف (الافتراضي هو "EN").--language إلى "Auto". في هذه الحالة ، يكتشف Whisper اللغة لكل موجه المنطوق ، ويتم مطالب LLM بـ " Please reply to my message in ... " لضمان أن يكون الرد باللغة المكتشفة.يرجى ملاحظة أنه يجب عليك استخدام نقاط التفتيش STT و LLM متوافقة مع اللغة (اللغات) المستهدفة. بالنسبة للجزء STT ، فإن Parler-TTS ليس متعدد اللغات (على الرغم من أن هذه الميزة ستظهر قريبًا!؟). في غضون ذلك ، يجب عليك استخدام Melo (الذي يدعم اللغة الإنجليزية والفرنسية والإسبانية والصينية واليابانية والكورية) أو الدردشة.
للكشف عن اللغة التلقائية:
python s2s_pipeline.py
--stt_model_name large-v3
--language auto
--mlx_lm_model_name mlx-community/Meta-Llama-3.1-8B-Instruct أو للغة على وجه الخصوص ، الصينية في هذا المثال
python s2s_pipeline.py
--stt_model_name large-v3
--language zh
--mlx_lm_model_name mlx-community/Meta-Llama-3.1-8B-Instruct للكشف عن اللغة التلقائية:
python s2s_pipeline.py
--local_mac_optimal_settings
--device mps
--stt_model_name large-v3
--language auto
--mlx_lm_model_name mlx-community/Meta-Llama-3.1-8B-Instruct-4bit أو للغة على وجه الخصوص ، الصينية في هذا المثال
python s2s_pipeline.py
--local_mac_optimal_settings
--device mps
--stt_model_name large-v3
--language zh
--mlx_lm_model_name mlx-community/Meta-Llama-3.1-8B-Instruct-4bit ملاحظة: يمكن العثور على مراجع لجميع وسائط CLI مباشرة في فئات الوسائط أو عن طريق تشغيل
python s2s_pipeline.py -h.
انظر فئة ModuleArguments. يسمح بتعيين:
--device (إذا أراد المرء أن يعمل كل جزء على نفس الجهاز)--mode local أو serverانظر فئة VadhandlerArguments. والجدير بالذكر:
--thresh : قيمة العتبة لإثارة الكشف عن النشاط الصوتي.--min_speech_ms : الحد الأدنى للمدة من النشاط الصوتي المكتشف ليتم اعتباره الكلام.--min_silence_ms : الحد الأدنى لفترات الصمت لتجزئة الكلام ، وموازنة القطع على الجملة وتقليل الكمون. يتم عرض model_name و torch_dtype device لكل تطبيق للكلام إلى النص ونموذج اللغة والنص على الكلام. حدد جزء خط الأنابيب المستهدف مع البادئة المقابلة (على سبيل المثال stt أو lm أو tts ، تحقق من فئات الوسائط للتطبيقات لمزيد من التفاصيل).
على سبيل المثال:
--lm_model_name google/gemma-2b-it يمكن تعيين معلمات الجيل الأخرى لطريقة إنشاء النموذج باستخدام بادئة الجزء + _gen_ ، على سبيل المثال ، --stt_gen_max_new_tokens 128 . يمكن إضافة هذه المعلمات إلى فئة وسيطات Pipeline Part إذا لم تكن تعرض بالفعل.
@misc { Silero VAD,
author = { Silero Team } ,
title = { Silero VAD: pre-trained enterprise-grade Voice Activity Detector (VAD), Number Detector and Language Classifier } ,
year = { 2021 } ,
publisher = { GitHub } ,
journal = { GitHub repository } ,
howpublished = { url{https://github.com/snakers4/silero-vad} } ,
commit = { insert_some_commit_here } ,
email = { hello @ silero.ai }
} @misc { gandhi2023distilwhisper ,
title = { Distil-Whisper: Robust Knowledge Distillation via Large-Scale Pseudo Labelling } ,
author = { Sanchit Gandhi and Patrick von Platen and Alexander M. Rush } ,
year = { 2023 } ,
eprint = { 2311.00430 } ,
archivePrefix = { arXiv } ,
primaryClass = { cs.CL }
} @misc { lacombe-etal-2024-parler-tts ,
author = { Yoach Lacombe and Vaibhav Srivastav and Sanchit Gandhi } ,
title = { Parler-TTS } ,
year = { 2024 } ,
publisher = { GitHub } ,
journal = { GitHub repository } ,
howpublished = { url{https://github.com/huggingface/parler-tts} }
}