محمد فيّاض داغر
مقدمة:
عالم التقنية والتكنولوجيا من أعظم ما قدمه العصر الحديث للبشرية مقارنةً مع عصور التاريخ القديمة، والذي أصبحت فيه الآلات الإلكترونية والميكانيكية تقوم بالأمور التي يصعب تحقيقها بتلك الدقة من البشر، وبسبب تزايد حاجات الإنسان مع الوقت أصبح يطمح إلى إدخال تلك التقنيات في كل جانب ممكن ليختصر عليه الجهد والوقت مهما كانت تلك المهمة التي يرغب في إنجازها.
فما كنا نراه في أفلام الخيال العلمي التي تصور لك قدرة الآلات على تسهيل المهام اليومية لبطل الفيلم وقدرتها على الوقوف بجانبه وإنقاذ حياته إن أمكن ما عاد بعيداً.
هذه الصور النمطية في تلك الأفلام عن وجود تقنيات عالية الدقة وقدراتها اللامحدودة ما هو إلا طموح يرغب الإنسان في الوصول إليه بطريقة أو أخرى، فظهر في عصرنا الإنترنت والذكاء الاصطناعي وأجهزة إلكترونية محمولة كالهاتف النقال (mobile phone) أو الحواسيب المحمولة (laptops) أو الساعات الذكية (smart witches) أو الأجهزة اللاسلكية أو ….. إلخ، وفي متناول كل الأفراد،
إضافة إلى ما سبق أهم تقنية مميزة ظهرت هي قدرة الآلة على فهم كلام واتخاذ القرار من تلقاء نفسها تبعاً للأوامر الموجهة إليها وتوظيف تلك التقنية في ما يسمى بالمساعدات الصوتية (voice assistants).
المساعدات الصوتية:
نبذة عن المساعدات:
المساعد الصوتي هو برمجية تتضمن التعرف على الكلام (voice recognition) وتوليد مقاطع صوتية (speech synthesis) لترد على المستخدم ومعالجة اللغة الطبيعية (NLP – Natural Language Processing) المحكية أو المكتوبة من قبله.
فتقوم بتبسيط إنجاز المهام سواءً المهام اليومية منها كإرسال الرسائل النصية أو رسائل البريد الإلكتروني (email) و وقراءتها وإجراء مكالمات وضبط المنبهات وجدولة المهام في التقويم وقراءة حالة الطقس والإجابة عن الأسئلة و … إلخ، أو المهام الغير اعتيادية كحجز التذاكر والشراء الإلكتروني وترجمة النصوص وتتبع وتحديد المواقع والتحويل بين الواحدات والمزامنة بين الأجهزة …إلخ، إضافة إلى ذلك التحكم بالنظام – الموجودة فيه – عموماً، وقد أصبح لدينا اليوم الكثير من المساعدات الصوتية والتي تتنافس الشركات الكبرى في تطويرها كـ Google assistant وSiri و AlexaوCortana وغيرها.
تصب جميع خدمات المساعدات الصوتية في إطار تعزيز التجربة الخالية من اليدين (hand-free experience)
والتي تتلخص في منح المستخدم القدرة على إنجاز المهام باستخدام صوته فقط بدون استخدام اليدين.
اختلاف المساعدات:
بما أن المساعدات الصوتية أصبحت مصدر تنافس وذات شأنٍ كبير لدى الشركات ،ما جعل المساعدات الصوتية تتشارك في قسم من الميزات والتي أصبح من المتوقع تواجدها في أي مساعد صوتي –كالتي ذُكرت سابقاً- لكن القسم المتبقي من الميزات مرتبط بشكل أساسي بالبنية والبيئة ونظام التشغيل الموجودة فيه هذه المساعدات، فمثلاً من المستحيل استخدام Siri على هاتف من شركة Samsung بنظام التشغيل Android أو على حاسب محمول من شركة HP بنظام تشغيل Windows وأيضاً استخدام Google assistant على أجهزة Apple بنظام التشغيل IOS محدود جداً ويستحيل استخدام Cortana خارج نظام Windows و … إلخ، فإذا قمت بأي بتغيير بين نظام التشغيل والمساعد الصوتي سينتهي بك المطاف لتصبح محدوداً أو عاجزاً تماماً عن الاستخدام، وهذه أولى المشاكل من وجود كل هذه المساعدات مشكلة المحدودية في العمل.
الآن لنفترض أنك تريد من مساعدتك الصوتية أن تساعدك في التحكم بتطبيق ليقوم بمهمة ما داخله مثلاً إجراء مكالمة فيديو،
هل بمقدور المساعد الصوتي القيام بذلك؟
الإجابة، نعم و لكن بشرطين:
الأول :أن يكون لدى التطبيق تصريحات واضحة برمجياً ومخصصة بالمساعد الصوتي ليستطيع استخدامها ففي مثال المكالمة الفيديو ،حيث يجب على التطبيق أن يعرّف طرق (functions) وأساليب خاصة تعرّف المساعد الصوتي ما الذي سيفعله في التطبيق في حال ورود أمر صوتي مماثل ،وتوظيف تلك الطرق التي تتطلب من المطوّر المزيد من التطوير خلال بناء التطبيق.
الثاني :أن يكون المساعد الصوتي في الأصل يعطي صلاحية لمطوري تلك للتطبيقات في إنشاء مثل تلك الطرق ليستخدمها مثلاً لو كان المساعد الصوتي لا يتيح للمطورين وضع مثل تلك الطرق في تطبيقاتهم ،فإنه سيجعل التطبيق عاجزاً تماماً عن التعاون مع المساعد الصوتي بالتالي المستخدم لن يكون قادراً على التحكم في التطبيق، وهذا ما ينقلنا للمشكلة الثانية مشكلة محدودية التحكم في التطبيقات.
إذاً هناك مشكلتان أساسيتان في المساعدات الصوتية في وقتنا الحالي … فما الحل؟
المساعدة الصوتية Joy:
JOY قدمت حلاً:
المشكلتان التي تحدثنا عنهما يمكن تجاوزهما بأن:
– تكون المساعدة الصوتية تعمل على جميع الأجهزة وأنظمة التشغيل.
– تكون لها قدرة على قراءة محتوى التطبيقات، والتحكم بكامل ميزاتها من تلقاء نفسها من دون أي تصريحات مسبقة داخل التطبيق.
إلا أنه على أرض الواقع كل جهاز وكل نظام تشغيل وكل تطبيق له كيانه الخاص وطريقة تعامل خاصة مرتبطة بالكيان الصلب (hardware) الموجودة عليه مما يصعّب المهمة بعض الشيء …
لكن لنفكر قليلاً ما التقنية الموجودة حالياً؟ ،و هل لها توافق كامل مع جميع الأجهزة والأنظمة ؟، ألا تهتم تلك التقنية بنوع الجهاز أو بكيانه الصلب، أهي ذات بروتوكولات صارمة جداً لتكون عامة ؟…
الإجابة :الإنترنت والذي هو عالم بحد ذاته لا تستطيع المساعدات الصوتية الولوج إليه بتلك البساطة لوجود العديد من الصعوبات -والتي سنذكرها لاحقاً-، وعندما نتحدث عن الإنترنت فإنك تحتاج تطبيق واحد فقط لا أكثر لدخول الإنترنت ألا وهو المتصفح.
عبرJOY فعلنا كل ذلك … !!! وتقدمت بخطوتين!!
ما هي JOY:
joy :هي مساعدة صوتية تم بناؤها لتكون إضافة (extension) لمتصفحات الويب، هدفها مشابه للمساعدات الصوتية الموجودة في تعزيز تجربة المستخدم الخالية من اليدين (hand-free experience) ،إلا أن هدفها الأساسي نقل المستخدم وتلك التجربة والمساعدة الصوتية إلى عالم الإنترنت لإتاحة إمكانية تصفح الإنترنت والمواقع الإلكترونية والتحكم بالتصفح صوتياً.
Joy متقدمة بخطوتين:
كون أن Joy هي مساعدة صوتية فلابد لها أن تتضمن الميزات المتعارف عليها من سماع الصوت وتحليل الكلام وقراءة المحتوى والرد على الأسئلة إلا أنه بتقديمها حل لتلك المشكلتين تقدمت بخطوتين عن المساعدات الصوتية:
الخطوة الأولى : التحكم بمتصفح وتجاوز حدود نظام التشغيل
لدى Joy القدرة على التحكم بالعديد من ميزات المتصفح سواءً الموجودة فيه أساساً كالتحكم بالنوافذ والتبديل بينها وفتح نافذة تصفح متخفي (Incognito mode) والتحكم في التبويبات والتنقل بينها والتنقل بتاريخ التصفح للتبويبة (forward and backward) وتغيير ترتيب التبويبات وحفظ الإشارات المرجعية والتحكم بسجل التصفح كاملاً (history) لحذف سجل التصفح مثلاً وإجراء عمليات البحث .. إلخ، أو الميزات التي تمت إضافتها للمتصفح بالاعتماد على المتصفح كإظهار الإشعارات وفتح أشهر المواقع الإلكترونية مباشرة وضبط المنبهات ومعرفة حالة البطارية.. إلخ، وبما أغلب المتصفحات لها أكثر من إصدار لكل بيئة ولكل نظام بتالي Joy تجاوزت مشكلة التوافقية بين المساعد الصوتي والنظام والبيئة.
الخطوة الثانية : التحكم بمحتوى صفحات الإنترنت
الغاية الأساسية من وجود متصفح هو دخول عالم الإنترنت بسهولة، لكن Joy تجعل التصفح أكثر سهولة، إذ أن Joy قادرة على تحليل محتوى صفحة الإنترنت ومعرفة محتوياتها وما تتضمنه من روابط ونصوص وأزرار وحقول إدخال و… إلخ، لتتيح للمستخدم التفاعل مع هذا المحتوى صوتياً بإعطاء Joy الأوامر، وستتكفل بالباقي فمثلاً يكفي أن يطلب المستخدم منها أن تنتقل إلى حقل الإدخال المرئي له ،وأن تبدأ بالاستماع لما يقوله لتقوم بكتابته أو أن يطلب أن تبدأ بقراءة النص أو الانتقال بين العناصر أو بتغيير موضع الصفحة (scroll) أو … إلخ، بالإضافة إلى الكثير من الأوامر الأخرى التي تتيح للمستخدم تصفح محتويات الصفحة بسهولة وبالتكامل مع أوامر التحكم بالمتصفح.
أوامر وميزات JOY:
- التحكم بالنوافذ:
تتضمن جميع الأوامر المتعلقة بالتحكم بالنوافذ وهي:
|
|
- التحكم بالتبويبات
تتضمن جميع الأوامر المتعلقة بالتبويبات والتي تتضمن:
التحكم بالتبويبات:
|
|
تغيير ترتيب التبويبات:
|
|
التنقل بين التبويبات:
|
|
حفظ وإزالة الإشارات المرجعية للتبويبة الحالية:
|
|
- فتح أشهر المواقع الإلكترونية وصفحات المتصفح الأكثر استخداماً:
|
|
- إجراء عمليات البحث (search)
- ضبط المنبهات
|
|
- التحكم بسجل البحث واستعادة الجلسة السابقة
|
|
- التحكم بصفحات الإنترنت
-
- التحكم بالتصفح وتنقل بين عناصر الموقع:
|
|
- التفاعل مع الأزرار والروابط
|
|
- التفاعل مع حقول الإدخال والإدخال الصوتي
|
|
- قراءة المحتوى والنصوص المحددة
|
|
- إعطاء إشعارات
Joy تقوم بإعطاء إشعارات في عدة حالات ويكون الإشعار عبارة عن مربع حوار يحوي التفاصيل المراد إعلام المستخدم بها. - خدمات إضافية
-
- قراءة التاريخ والوقت وحالة البطارية
|
|
- الإجابة على بعض الأسئلة
- تغيير إعدادات Joy
إن Joy تدعم ال NLP مما يتيح للمستخدم عدم التقيد بحرفية الأوامر المذكور حتى يتم تنفيذ الأمر ومنحه حرية تشكيل أي جملة قريبة من الجمل المذكورة، إضافة إلى أنها تتطلب اتصالاً بالإنترنت بأدنى حد لسرعة تبادل البيانات فلا يشترط أن تتجاوز سرعة الرفع (upload) أو التنزيل (download) ال 25kb/s، وJoy دائماً تكون في حالة الاستعداد (standby) طالما أن المتصفح يعمل فهي ستستجيب للأوامر حتى لو كنت لا تستخدم المتصفح وتستخدم برنامجاً آخر.
الصعوبات التقنية واجهت تطوير Joy:
في بادئ الأمر كان تحديد أدوات التطوير والميزات المحتم توافرها في Joy سهلاً ،لأنه طالما ستتعامل مع متصفح ومحتوى صفحات إنترنت ستحتاج ل JavaScript في العموم – واستخدمنا Vue.js في تشكيل الواجهات لتسريع العملية قليلاً- أما بالنسبة للميزات فما يجب توافره في أي مساعد صوتي يحب توافره في Joy وألا وهو القدرة على السماع والرد والتنفيذ إضافة إلى تحليل محتوى صفحات الإنترنت كونها مساعدة ضمن متصفح، لكن تنفيذ ذلك كان الأصعب حقاً، خصوصاً في ظل غياب طرق الدفع الإلكتروني في بلدي.
إن عملية السماع والرد في المساعدة الصوتية لابد أن تضمن تنفيذ المراحل التالية بالتسلسل:
أولاً: تشغيل الميكروفون والتأكد من أنه يعمل والبدء باستقبال الصوت من خلاله.
ثانياً: إرسال هذه الأصوات مشفرةً إلى مكتبة برمجية أو واجهة برمجة تطبيق (API)، ليقوم بمعالجة الصوت وتشكيل سلسلة نصية متوافقة مع الصوت.
ثالثاً: معالجة تلك السلسلة النصية وتحديد الرد المناسب وما الواجب تنفيذه ؟.
ربعاً: تشكيل سلسلة نصية لتكون الرد وإرسالها إلى مكتبة برمجية أو واجهة برمجة تطبيق (API)، ليقوم بتشكيل مقطع صوتي ثم تشغيل المقطع الصوتي.
نبدأ بمنح Joy القدرة على:
- السماع:
عملية السماع والرد تتطلب استقبال صوت المستخدم عبر الميكروفون في الحاسب باستمرار دون انقطاع إلى أن يتوقف المستخدم أو يخفض الصوت ،هذا في حالة وجود ضوضاء في الخلفية، ومن ثم إرساله إلى مكتبة برمجية أوAPI ليقوم بمعالجة الصوت بشكل لحظي وتشكيل سلاسل نصية آنياً، وإعادة السلسلة النصية الأكثر تتطابقاً مع الصوت المُعالج لتتم معالجتها لاحقاً. - معالجة السلسلة النصية:
بعد أن تم الحصول على كلام المستخدم كنص يجيب أن يتم تحليله لمعرفة ما الأمر أو الطلب الواجب تنفيذه أو تشكيل رد مناسب له، وطالما أننا نريد منح المستخدم حرية تشكيل الأمر صوتي فلابد من وجود معالجة اللغة الطبيعية (Natural language processing – NLP) والتي تتضمن معالجة النصوص وكلام المستخدم باللغة المحكيّة واستنتاج الغاية أو الهدف من النص والكلام، وذلك بالمطابقة مع مجموعة بيانات (data set) معرّفة مسبقاً وإيجاد أفضل تطابق بالاعتماد على طرق الإحصاء الرياضي، ليمثل هذا التطابق أمراً وجب تنفيذه أو سؤال يجب الرد عليه.
في Joy تم تشكيل (data set) تضمن كل من الأوامر الخاصة بها والأسئلة القادرة على الإجابة عليها. - الحديث والرد على الأسئلة:
لدى Joy بعض الإجابات المعدّة مسبقاً بعدة أشكال لعدد محدد من الأسئلة لدى التعرف على إحدى تلك الأسئلة، حيث يتم تشكيل السلسلة النصية ليتم سردها. تم منح Joy القدرة تحويل النصوص إلى صوت بلكنة وتردد ونوع صوت محدد عبر speech synthesis في JavaScript ، فعند وجود رد على أمر يتم تمرير السلسلة النصية التي تمثل الرد إلى قسم محدد من الكود (الرمز ) يتعامل مع speech synthesis بشكل مباشرة ليحدد سرعة الحديث ونمط الصوت والنص الذي يتم نطقه تبعاً لتفضيلات المستخدم في إعدادات Joy. - تنفيذ الأوامر:
كبينة داخلية ل Joy يوجد نوعان فقط من الأوامر: الأول أوامر للتحكم بالمتصفح، والثاني أوامر للتحكم بمحتوى صفحات الويب
النوع الأول:
تحقيقه يرتبط بالصلاحيات التي يتيحها المتصفح للإضافات (extensions) في ما الذي يمكن للإضافة فعله في المتصفح،
فمثلاً فتح تويبة جديدة يتطلب أن يكون هناك صلاحية للإضافة في فتح التبويبة ،وأن يكون لدى المتصفح طرق توصيف واضحة لآلية فعل ذلك ضمن المتصفح، وهذا الأمر سهل ممتنع لأن متصفح مثل chrome لديه توثيق كامل لآلية استخدام الإضافات للميزات الموجودة في chrome، لكن طريقة العمل الفعلية تتطلب الاختبار والتجريب حتى تحصل على النتيجة المرغوبة، فلا يوجد أمثلة تنفيذ واضحة وذلك لأن الاستخدام مرتبط بحاجة الاستخدام والتي تتغير من إضافة إلى أخرى، إضافةً إلى أن مجتمع مطوري الإضافات صغير نسبياً، إلا أنه في النهاية تم تحقيق هذا النوع بعد القليل من الجهد وبسهولة أكبر من النوع الثاني من الأوامر.النوع الثاني:
هو النوع الأصعب تحقيقاً لأنه يعتمد على تحليل محتويات الصفحة ومعرفة مكان العناصر وفيما إذا كان هذا العنصر يحوي عناصر أيضاً داخله أم لا، حيث أن بناء واجهات مواقع الإنترنت في الأساس يعتمد على التداخل بين العناصر وكتابة tags متداخلة في HTML، وبناء الواجهات يعتمد خبرة المطور الذي نفّذها، فقد تكون التداخلات كثيرة جداً واستخدام tags خاطئة بسبب قلّة خبرة المطور، والذي يزيد الأمر صعوبة أن أغلب مواقع الإنترنت هي تطبيقات ويب (web apps) والتي تكون (Single Page App – SPA)، والتي يمكن لمطور بخبرة منخفضة أن يزيد تعقيد تلك التداخلات، إضافةً إلى أنه من غير المنطقي التفاعل مع عنصر غير مرئي، سواءً كان غير مرئي على شاشة المستخدم بعد أو أن العنصر مخفي من الواجهة لكنه موجود في الكود (الرمز ) ولا يظهر إلى في حالة معنية، وهو ما أنت مقبل على قراءته طالما تريد تحليل الصفحة، فمن المزعج وغير المقبول مثلاً أن تقرأ نصاً أو أن تضغط زراً غير ظاهر على الشاشة.
لكن تم تجاوز هذه المعضلة بصعوبة شديدة بالاعتماد على قراءة كود ال html بشكل تسلسلي واستخدام الكثير والكثير من الشروط والتوابع داخل Joy.
لكن لا تشغل بالك بكل ذلك، JOY تجعل عالم الإنترنت متناغماً مع صوتك.