إنشاء تطبيقات تستطيع التحدث

This article is available in English too, check it out here.

نظرة خاطفة

ستفين هوكينج Stephen Hawking، من الأكثر شهرة المستخدمي لتقنيات التحدث الرقمية
ستفين هوكينج Stephen Hawking، من الأكثر شهرة المستخدمي لتقنيات التحدث الرقمية

في هذا الدرس نتعرف على أحد الإمكانيات المتوفرة من خلال مكونات نظام التشغيل والتي تمكنك من قراءة النصوص والكلمات برمجيا وبأقل مجهود. اليوم نتعرف على مكتبة التحادث الموجودة في نظام التشغيل، ونتعرف كيفية تطبيقها برمجيا في سي شارب وفي بي دوت نت. أيضا نتعرف على أحد الإمكانيات الموجودة في تقنية لينكيو LINQ والتي يمكننا استخدامها لجعل الكود أكثر إثارة وأكثر متعة. أيضا، سنطبق نفس فكرة التخاطب ولكن….. لن أخبركم ماذا سنفعل، دعونا نبدأ!

مقدمة

هناك العديد من الطرق والمكونات لإنشاء تطبيقات تستطيع التحدث. وعندما نقول تستطيع التحدث نقصد بأن التطبيق يستطيع التخاطب مع المستخدم، أي أن يقوم بقراءة البيانات أو الرسائل ونحوها للمستخدم.

كما قلنا هناك العديد من الطرق، ولكن ربما أبسطها وأسهلها هي باستخدام مكتبة التخاطب الخاصة بالويندوز ألا وهي Microsoft Speech Object Library والممثلة من خلال المكتبة sapi.dll والموجودة في المجلد %windir%System32SpeechCommon والذي يحوي العديد من المكتبات الخاصة بتقنية التحدث Text to Speech أو TTS.

التطبيق

في المثال التالي نقوم بإنشاء برنامج بسيط يقوم بقراءة الكلمات. اتبع الخطوات التالية:

  1. قم بإنشاء مشروع جديد لموجه أوامر Console مثلا.
  2. قم بفتح شاشة إضافة مرجع Add Reference ومن تبويب COM ابحث عن المكتبة الخاصة بالتحدث وهي Microsoft Speech Object Library ثم أضفها (انظر شكل 1.)

    شكل 1 - إضافة مرجع لمكتبة التحدث SpeechLib
    شكل 1 - إضافة مرجع لمكتبة التحدث SpeechLib
  3. أخيرا، قم بكتابة الأكواد التالية وتشغيل البرنامج:
// C#

using SpeechLib;

static void Main()
{
    Console.WriteLine("Enter the text to read:");
    string txt = Console.ReadLine();
    Speak(txt);
}

static void Speak(string text)
{
    SpVoice voice = new SpVoiceClass();
    voice.Speak(text, SpeechVoiceSpeakFlags.SVSFDefault);
}
' VB.NET

Imports SpeechLib

Sub Main()
    Console.WriteLine("Enter the text to read:")
    Dim txt As String = Console.ReadLine()
    Speak(txt)
End Sub

Sub Speak(ByVal text As String)
    Dim voice As New SpVoiceClass()
    voice.Speak(text, SpeechVoiceSpeakFlags.SVSFDefault)
End Sub

إذ كنت تستخدم Visual Studio 2010 و .NET الإصدار 4.0 (أو أحدث) ولم يعمل الكود السابق فننصحك بإلغاء خاصية Embed Interop Types من خصائص المرجع SpeechLib.dll.

إنشاء نصوص تستطيع التحدث

في هذا المثال نقوم بالاستفادة من تقنية دوال الامتداد Extension Methods الموجودة في لينكيو LINQ حيث سنقوم بتعديل بسيط على الكود السابق كي نضيف دالة جديدة إلى عنصر النص System.String تقوم بقراءة هذا النص عند النداء عليها. لاحظ الكود التالي:

// C#

using SpeechLib;

static void Main()
{
    Console.WriteLine("Enter the text to read:");
    string txt = Console.ReadLine();
    txt.Speak();
}

static void Speak(this string text)
{
    SpVoice voice = new SpVoiceClass();
    voice.Speak(text, SpeechVoiceSpeakFlags.SVSFDefault);
}
' VB.NET

Imports SpeechLib
Imports System.Runtime.CompilerServices

Sub Main()
    Console.WriteLine("Enter the text to read:")
    Dim txt As String = Console.ReadLine()
    txt.Speak()
End Sub

 _
Sub Speak(ByVal text As String)
    Dim voice As New SpVoiceClass()
    voice.Speak(text, SpeechVoiceSpeakFlags.SVSFDefault)
End Sub

I Love YOU ♥

فلنجعل الموضوع أكثر إثارة وأكثر متعة. سوف نقوم بكتابة كود فيجوال بيزك سكريبت VBScript يقوم بقراءة كلمات “I Love YOU” عند تنفيذه . لتطبيق ذلك اتبع الخطوات التالية:

  1. افتح محرر النصوص Notepad.
  2. اكتب الكود التالي:
    CreateObject("SAPI.SpVoice").Speak "I love YOU!"

    لا يخفى عليك بالطبع أن SAPI هو الاسم الذي يرمز له لهذه المكتبة في سجلات النظام Windows Registry، و SpVoice هي اسم الكلاس التي تحتوي أمر القراءة. أيضا جدير بالذكر أن الدالة CreateObject() تستخدم لإنشاء عناصر موجودة في مكتبات خارجية.

  3. احفظ ما كتبته في أي مكان على الجهاز باسم love.vbs (أو أي اسم آخر بالطبع ولكنحافظ على أن يكون امتداد الملف هو vbs.)
  4. الآن اتجه إلى هذا الملف وقم بتشغيله، من يخبرك أنه يحبك؟! 😉

هناك صوتين أساسيين لنظام التشغيل: مايكروسوفت سام Microsoft Sam وهو صوت رجل وهو الاختيار الأساسي في أنظمة ويندوز إكس بي و 2000. أما الصوت الآخر فهو مايكروسوفت آن Microsoft Ann وهو صوت أنثى وهو الاختيار الأساسي في أنظمة فيستا و 7. بالطبع هناك العديد من الأصوات الأخرى، ولكن هذه هي الأساسية. اقرأ المزيد عن أصوات تقنية TTS هنا.

شكرا للزميل محمد جعفر لتوفيره كود الفيجوال بيزك سكربت اللازم.

اترك تعليقا