يونيو هو chatbot صوتية محلية تجمع بين قوة Ollama (لقدرات نموذج اللغة) ، وعانق محولات الوجه (للتعرف على الكلام) ، ومجموعة أدوات Coqui TTS (لتوليف النص إلى كلام). يوفر حلًا مرنًا يركز على الخصوصية للتفاعلات بمساعدة الصوت على الجهاز المحلي الخاص بك ، مما يضمن عدم إرسال أي بيانات إلى خوادم خارجية.

apt install python3-dev لـ Debian)- فقط لـ GNU/Linuxapt install portaudio19-dev لدبيان) -فقط ل GNU/Linuxbrew install portaudio باستخدام Homebrew) - فقط لماكوسلتثبيت يونيو مباشرة من مستودع GitHub:
pip install git+https://github.com/mezbaul-h/june.git@masterبدلاً من ذلك ، يمكنك استنساخ المستودع وتثبيته محليًا:
git clone https://github.com/mezbaul-h/june.git
cd june
pip install . اسحب نموذج اللغة (الافتراضي هو llama3.1:8b-instruct-q4_0 ) مع Ollama أولاً ، إذا لم تقم بالفعل:
ollama pull llama3.1:8b-instruct-q4_0بعد ذلك ، قم بتشغيل البرنامج (مع التكوين الافتراضي):
june-va سيستخدم هذا llama3.1: 8b-instruct-q4_0 لقدرات LLM ، Openai/Whisper-small.en للتعرف على الكلام ، و tts_models/en/ljspeech/glow-tts لتوليف الصوت.
يمكنك أيضًا تخصيص سلوك البرنامج مع ملف تكوين JSON:
june-va --config path/to/config.jsonملحوظة
ملف التكوين اختياري. لمعرفة المزيد حول بنية ملف التكوين ، راجع قسم التخصيص.
يمكن تخصيص التطبيق باستخدام ملف التكوين. يجب أن يكون ملف التكوين ملف JSON. التكوين الافتراضي هو كما يلي:
{
"llm" : {
"disable_chat_history" : false ,
"model" : " llama3.1:8b-instruct-q4_0 "
},
"stt" : {
"device" : " torch device identifier (`cuda` if available; otherwise `cpu` " ,
"generation_args" : {
"batch_size" : 8
},
"model" : " openai/whisper-small.en "
},
"tts" : {
"device" : " torch device identifier (`cuda` if available; otherwise `cpu` " ,
"model" : " tts_models/en/ljspeech/glow-tts "
}
}عند استخدام ملف التكوين ، فإنه يتجاوز التكوين الافتراضي ولكنه لا يكتبه. حتى تتمكن من تعديل التكوين جزئيًا إذا كنت ترغب في ذلك. على سبيل المثال ، إذا كنت لا ترغب في استخدام التعرف على الكلام وتريد فقط تقديم مطالبات من خلال النص ، فيمكنك تعطيل ذلك باستخدام ملف التكوين مع التكوين التالي:
{
"stt" : null
}وبالمثل ، يمكنك تعطيل مزج الصوت ، أو كليهما ، لاستخدام المساعد الظاهري فقط في وضع النص.
إذا كنت ترغب فقط في تعديل الجهاز الذي تريد تحميل نوع معين من النموذج ، دون تغيير السمات الافتراضية الأخرى للنموذج ، يمكنك استخدام:
{
"tts" : {
"device" : " cpu "
}
}llm - تكوين نموذج اللغةllm.device : معرف جهاز الشعلة (على سبيل المثال ، cpu ، cuda ، mps ) الذي سيتم تخصيص خط الأنابيب.llm.disable_chat_history : منطقية تشير إلى ما إذا كان يجب تعطيل أو تمكين تاريخ الدردشة. سيؤدي تمكين سجل الدردشة إلى جعل التفاعلات أكثر ديناميكية ، حيث سيتمكن النموذج من الوصول إلى السياقات السابقة ، لكنه سيستهلك المزيد من قوة المعالجة. سيؤدي تعطيلها إلى محادثات أقل تفاعلية ولكنها ستستخدم موارد المعالجة أقل.llm.model : اسم علامة طراز توليد النص على Ollama. تأكد من أن هذه علامة نموذج صالحة موجودة على جهازك.llm.system_prompt : إعطاء موجه نظام للنموذج. إذا كان النموذج الأساسي لا يدعم موجه النظام ، فسيتم رفع خطأ. stt تكوين نموذج الكلام إلى النصtts.device : معرف جهاز الشعلة (على سبيل المثال ، cpu ، cuda ، mps ) الذي سيتم تخصيص خط الأنابيب.stt.generation_args : كائن يحتوي على وسيطات توليد مقبولة عن طريق معانقة خط أنابيب التعرف على خطاب Face.stt.model : اسم نموذج التعرف على الكلام على وجه المعانقة. تأكد من أن هذا معرف نموذج صالح موجود على معانقة الوجه. tts تكوين نموذج النص إلى كلامtts.device : معرف جهاز الشعلة (على سبيل المثال ، cpu ، cuda ، mps ) الذي سيتم تخصيص خط الأنابيب.tts.generation_args : كائن يحتوي على وسيطات توليد مقبولة من قبل API من Coqui.tts.model : اسم نموذج النص إلى الكلام الذي يدعمه مجموعة أدوات TTS الخاصة بـ Coqui. تأكد من أن هذا معرف نموذج صالح. بعد رؤية رسالة [system]> Listening for sound... يمكنك التحدث مباشرة إلى الميكروفون. على عكس المساعدين الصوتيين النموذجيين ، لا يوجد أمر مطلوب. ما عليك سوى البدء في التحدث ، وستقوم الأداة تلقائيًا باكتشاف ومعالجة إدخال الصوت الخاص بك. بمجرد الانتهاء من التحدث ، حافظ على الصمت لمدة 3 ثوان للسماح للمساعد بمعالجة مدخلات الصوت الخاصة بك.
العديد من النماذج (على سبيل المثال ، tts_models/multilingual/multi-dataset/xtts_v2 ) تدعمها استنساخ مجموعة أدوات TTS من Coqui. يمكنك استخدام ملف تعريف مكبر الصوت الخاص بك مع مقطع صوتي صغير (حوالي دقيقة واحدة لمعظم الطرز). بمجرد حصولك على المقطع ، يمكنك توجيه المساعد لاستخدامه بتكوين مخصص مثل ما يلي:
{
"tts" : {
"model" : " tts_models/multilingual/multi-dataset/xtts_v2 " ,
"generation_args" : {
"language" : " en " ,
"speaker_wav" : " /path/to/your/target/voice.wav "
}
}
}نعم ، يمكنك بسهولة دمج مثيل Ollama الذي تم استضافته عن بُعد مع يونيو بدلاً من استخدام مثيل محلي. إليك كيفية القيام بذلك:
OLLAMA_HOST على عنوان URL المناسب لمثيل Ollama عن بُعد.لاستخدام مثيل Ollama عن بعد ، يمكنك استخدام أمر مثل هذا:
OLLAMA_HOST=http://localhost:11434 june-va