openWakeWord هي مكتبة مفتوحة المصدر لاكتشاف كلمات التنبيه الشائعة مثل "alexa" و"hey mycroft" و"hey jarvis" ونماذج أخرى. Rhasspy هو مساعد صوتي مفتوح المصدر.
يقوم هذا المشروع بتشغيل openWakeWord كخدمة مستقلة، ويستقبل الصوت من Rhasspy عبر UDP، ويكتشف متى يتم نطق كلمة التنبيه، ويخطر Rhasspy باستخدام بروتوكول Hermes MQTT.
أقوم بتشغيل Rhasspy في الوضع الأساسي/القمر الصناعي. حاليًا، يلتقط كل قمر صناعي الصوت، ويقوم بالكشف عن كلمة التنبيه محليًا ويبث الصوت إلى القاعدة التي تقوم بكل شيء آخر. تدير الأقمار الصناعية Pi4 حاوية Rhasspy Docker، التي يتم إطلاقها مع الإنشاء. تعمل حاوية Base Rhasspy على معالج i7 الأكثر قوة (تقوم بتشغيل برامج التشغيل الآلي للمنزل الأخرى.)
يعمل تشغيل openWakeWord في Docker على تسهيل التوزيع والإعداد (تبعيات Python)، ويسمح لـ openWakeWord بالتطوير بوتيرة منفصلة عن Rhasspy (بدلاً من التجميع والإصدار مع Rhasspy.) مثيل واحد من openWakeWord يعمل على مركزية التكوين، ويسمح للأقمار الصناعية ذات الطاقة المنخفضة (مثل ESP32s) خيارات أكثر ثراءً لكلمة التنبيه.
أخطط في المستقبل لإضافة واجهة مستخدم ويب للتكوين: الكلمات التي يجب اكتشافها والعتبات ونماذج التحقق المخصصة وربما تحديد المتحدث. ويمكن أن يتضمن أيضًا تصورًا مباشرًا للاختبار والتشخيص.
باستخدام دوكر CLI
docker run -d --name openwakeword -p 12202:12202/udp -v /path/to/config/:/config dalehumby/openwakeword-rhasspy في docker-compose.yml (أو ملف مكدس Docker Swarm)
openwakeword :
image : dalehumby/openwakeword-rhasspy
restart : always
ports :
- " 12202:12202/udp "
volumes :
- /path/to/config:/configللاختبار والتجريب يمكنك تشغيل هذا المشروع محليا:
git clone [email protected]:dalehumby/openWakeWord-rhasspy.gitpython3 -m venv envsource env/bin/activatepip3 install -r requirements.txtpython3 detect.py config.yaml ، على سبيل المثال nano /path/to/config/config.yamlconfig.yaml.example في config.yaml للبدء يقوم Rhasspy ببث الصوت من الميكروفون الخاص به إلى openWakeWord عبر الشبكة باستخدام بروتوكول UDP. على كل جهاز Rhasspy يحتوي على ميكروفون متصل (عادةً قمر صناعي) انتقل إلى Rhasspy - الإعدادات - تسجيل الصوت وفي UDP Audio (Output) أدخل عنوان IP الخاص بالمضيف الذي يقوم بتشغيل openWakeWord، واختر رقم منفذ، يبدأ عادةً من 12202 . إذا كان لديك عدة أجهزة Rhasspy، فإن كل جهاز يحتاج إلى رقم المنفذ الخاص به، 12202 ، 12203 ، 12204 ، إلخ.

في openWakeWord config.yaml ، يحتوي udp_ports على أزواج kay:value. المفتاح هو siteId الموضح في الجزء العلوي من Rhasspy - الإعدادات. يمكن أن تكون: base ، satellite ، أو kitchen ، أو bedroom ، وما إلى ذلك. القيمة هي المنفذ المدرج ضمن Rhasspy - الإعدادات - تسجيل الصوت.
udp_ports :
base : 12202
kitchen : 12203
bedroom : 12204إذا كنت تستخدم Docker، فستحتاج إلى فتح المنافذ للسماح بحركة مرور شبكة UDP إلى الحاوية.
باستخدام دوكر CLI
docker run -d --name openwakeword -p 12202:12202/udp -p 12203:12203/udp -p 12204:12204/udp -v /path/to/config/:/config dalehumby/openwakeword-rhasspy أو في docker-compose.yml
openwakeword :
image : dalehumby/openwakeword-rhasspy
restart : always
ports :
- " 12202:12202/udp " # base
- " 12203:12203/udp " # kitchen
- " 12204:12204/udp " # bedroom
# ... etc
volumes :
- /path/to/config:/configيقوم openWakeWord بإعلام Rhasspy بأنه قد تم نطق كلمة التنبيه باستخدام بروتوكول Hermes MQTT. يجب أن يكون وسيط MQTT قابلاً للوصول بواسطة كل من Rhasspy وopenWakeWord. لا يمكن الوصول إلى وسيط MQTT الداخلي الخاص بـ Rhasspy من خارج Rhasspy، لذا ستحتاج إلى تشغيل وسيط مشترك، مثل Mosquitto.
بمجرد تشغيل الوسيط، انتقل إلى Rhasspy - الإعدادات - MQTT. اختر وسيط External ، وقم بتعيين عنوان IP الخاص Host الذي يعمل عليه الوسيط، ورقم Port ، واسم Username / Password إذا لزم الأمر، على غرار:

سيكون لدى openWakeWord config.yaml ما يلي:
mqtt :
broker : 10.0.0.10
port : 1883
username : yourusername # Delete row if not required
password : yourpassword # Delete row if not required
في كل Rhasspy، في Rhasspy - الإعدادات - Wake Word، قم بتعيين Hermes MQTT ، مثل

يستمع openWakeWord إلى كلمات التنبيه مثل "alexa" و"hey mycroft" و"hey jarvis" وغيرها. استخدم model_names لتحديد كلمات التنبيه التي سيتم الاستماع إليها. (راجع وثائق النماذج المدربة مسبقًا، وأسماء model_names التي يجب استخدامها.)
احذف أي كلمات تنبيه لا تريد تنشيطها. أو قم بإزالة قسم model_names بالكامل لاستخدام جميع النماذج المدربة مسبقًا.
oww :
model_names : # From https://github.com/dscripka/openWakeWord/blob/main/openwakeword/__init__.py
- alexa # Delete to ignore this wake-word
- hey_mycroft
- hey_jarvis
- timer
- weather
activation_samples : 3 # Number of samples in moving average
activation_threshold : 0.7 # Trigger wakeword when average above this threshold
deactivation_threshold : 0.2 # Do not trigger again until average falls below this threshold
# OWW config, see https://github.com/dscripka/openWakeWord#recommendations-for-usage
vad_threshold : 0.5
enable_speex_noise_suppression : false تضمن إعدادات oww الأخرى تنشيط Rhasspy مرة واحدة فقط لكل كلمة تنبيه، وتساعد في تقليل عمليات التنشيط الخاطئة.
في المثال أعلاه، تم حساب متوسط آخر 3 عينات صوتية تم تلقيها عبر UDP معًا، وإذا كان متوسط الثقة في نطق كلمة التنبيه أعلى من 0.7 (70%)، فسيتم إخطار Rhasspy. لن يتم إخطار Rhasspy مرة أخرى حتى ينخفض متوسط الثقة إلى أقل من 0.2 (20%)، أي تنتهي كلمة التنبيه.
يتم أيضًا توفير إعدادات اكتشاف النشاط الصوتي (VAD) وقمع الضوضاء. (راجع توصيات openWakeWord للاستخدام.)
لا تتردد في فتح قضية إذا كان لديك مشكلة، تحتاج إلى مساعدة أو لديك فكرة. العلاقات العامة نرحب دائما.