اضافة تقنية التعرف على الصوت في تطبيقك C# الخاص بك

يحوي الدروس و الملخصات التي قام أعضاء الموقع بكتابتها .

المشرف: Mohammad_807

اضافة تقنية التعرف على الصوت في تطبيقك C# الخاص بك

مشاركة غير مقروءةبواسطة wazzz » الخميس ديسمبر 02, 2010 4:40 pm

السلام عليكم ورحمة الله
لقد قدمت بيئة .net العديد من المكتبات الغنية لتوفير حاجات المبرمجين كافة . سنتكلم اليوم عن كيفية استخدام تقنية التعرف على الصوت في تطبيق C# الخاص بك .

المتطلبات لهذا الدرس :
1-نحتاج بداية الى مايكروفون
2-نظام تشغيل ويندوز فيستا ومابعد حصراً
3-visual studio
4-مكتبة دوت نت 3

الاساس النظري لتقنية التعرف على الصوت :
ان عملية التعرف على الصوت مبنية بشكل اساسي على الشبكات العصبونية فكل مالا نستطيع وضع خوارزمية محددة له نقوم ببرمجته وفق الشبكات العصبونية والتي تعمل على محاكاة الدماغ البشري .
ان مبدا الشبكات العصبية هي بصراحة مبدا تجريبي اكثر من كونه علم يعتمد على قوانين مطلقة فالى الآن مازال هذا العلم في تطور ولكنه يعاني من عدم قدرته على حل العديد من المشاكل الكبيرة
يقوم مبدا الشبكة العصبية الخاصة بالتعرف على الصوت على انشاء شبكة من العصبونات وتدريبها على صوت المستخدم والتدريب عملية هامة وحيوية
ولفهم آلية التعرف على الصوت
نعتبر ان هناك شبكة black box لها دخلين وخرج وحيد
* الدخل الاول هو الصوت الافتراضي بنطق سليم وفق العديد من اللهجات ويدعى بال target
* بينما الدخل الثاني هو دخل المستخدم ويعاني هذا الدخل من بعض الاخطاء احيانا بسبب عدم قدرة المستخدم بشكل عام على النطق بالكلمة بشكل سليم كما هي
* ويكون خرج الشبكة هو النص المكتوب وفق ما فهمته تلك الشبكة من صوت المستخدم

وصف المشكلة :
بداية للتعرف على تقنية التعرف على الصوت يمكنك مراجعة
لرابط التالي
او البحث في غوغل , الكلمة المفتاحية هي Speech Recognition


كيف يمكنني استعمال تقنية التعرف على الصوت في ويندوز فيستا و7 ؟

1-قم بالضغط على لوحة التحكم ثم Speech Recognition Options تقوم بفتح نافذة التحكم بتقنية التعرف على الصوت قم بتحديد خيارات المياكروفون ومدى فعاليته
ثم قم بتشغيل ال tutorial الخاص بتدريب المايكروفون ان عملية التدريب هي عملية مهمة كونها تقوم بتحديد نبرة الصوت وخصائصه للمستخدم وتدريب المكتبة على التعامل مع المستخدم الحالي .
ان تقنية التعرف على الصوت نظرياً يمكنها ان تقوم بالتعرف على اي كلمة ينطقها المستخدم باللغة الإنجليزية ولكن حاجة تدريب المستخدم هي ناتجة عن اختلاف اللهجات وطريقة نطق الكلمات بين شخص وآخر .
لذا نجد انه عندما تقوم بالتدريب فان برنامج التدريب يقوم بربط صوتك مع الكلمات التي تظهر على الشاشة , طبعا ان جميع هذه الكلمات مختارة بعناية

2-بعد الانتهاء من عملية التدريب يمكنك ان تتحقق من جميع الخيارات المتعلقة بالتعرف على الصوت
للمزيد من المعلومات حول كيفية استعمال التعرف على الصوت يمكنك ان تقوم بزيارة الرابط ادناه
http://www.lifehack.org/articles/technology/how-to-use-windows-vista-speech-recognition.html

كيف يمكنني ان اقوم باستعمالها ضمن تطبيق C# الخاص بي

سنقوم بالعمل على visual studio لذلك ان كنت تستعمل mono او غيره من المترجمات يمكنك ان تبحث عن كيفية ادراج تلك التقنية الى برنامجك

يمكنك مشاهدة مقاطع فيديو تشرح فيه تلك العملية
الرابط 1
الرابط 2
الرابط 3

سنقوم بشرح تلك العملية هنا ستجد ان الامور ليست معقدة :
1-قم بانشاء مشروع جديد WindowsFormsApplication واختر اللغة C# يمكنك اتباع نفس الخطوات في VB.net
2-يوجد namespace تدعى System.Speech.Recognition
يمكنك التعرف عليها ضمن الرابط هنا

3-قم بالضغط على مشروعك ثم قم ب addreference ستظهر لك نافذة فرعية
ان مهمة هذا الامر هو اتاحة استعمال مكتبات معينة مثل dll او حتى اضافة مؤشر الى مشروع آخر فان كان ال solution الخاص بك يملك مشروعين 2 projects فانه يستطيع كلا من المشروعين رؤية الآخر عندماتضيف مؤشر reference من المشروع الاول على الثاني

عندما نقوم بالضغط على addreference تظهر لنا النافذة التالية :
صورة

خيار project هو من اجل ان كنت تريد ان تستعمل مشروع آخر (سيظهر لك اسم المشروع ان كان هناك مشروع آخر بنفس solution) بينما بالحالة العامة مشروع واحد و حل واحد سيظهر كما في الصورة السابقة

الآن قم بالتوجه الى tab ذو الاسم .net ثم قم باضافة مكتبة system.speech

الآن نضغط على اظهار الكود الخاص بالواجهة البيانية ونقم بوضع الكود التالي :

CODE: تحديد الكل
public partial class Form1 : Form
{
  SpeechRecognizer rec = new SpeechRecognizer();

  public Form1()
  {
    InitializeComponent();
    rec.SpeechRecognized += rec_SpeechRecognized;
  }

  void rec_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
  {
    label1.Text = e.Result.Text;
  }

  void Form1_Load(object sender, EventArgs e)
  {
    var c = new Choices();
//add numbers
    for (var i = 0; i <= 100; i++)
      c.Add(i.ToString());

//add a word or a single char
c.Add("a");
c.Add("Move");

    var gb = new GrammarBuilder(c);
    var g = new Grammar(gb);
    rec.LoadGrammar(g);
    rec.Enabled = true;
  }


بداية نعرف غرض من الصف SpeechRecognizer والذي لا يمكنك تعريفه في حال عدم القيام باضافة مؤشر الى المكتبة system.speech
وفي حال عدم توافر المكتبة بشكل صحيح سيظهر لك الخطا التالي :

CODE: تحديد الكل
The type or namespace name 'SpeechRecognizer' could not be found (are you missing a using directive or an assembly reference?)


ثم قم بوضع بعض الاحدث الخاصة rec_SpeechRecognized
ولكن ما يهمك حقاً هو Form1_Load فيجب توليد نموذج قواعد للتعرف على الاحرف فنجد في مثالنا اننا قمنا بوضع الاحرف الابجدية وبعض الارقام ولكن يمكنك ان تضع كلمات معينة
كما قمت سابقا بانشاء لعبة شطرنج ثلاثية البعد بحيث يتم تحريك الحجارة وفقا لاوامر المستخدمين كل ما قمت به هو اضافة الكلمات للمتحول c

الآن لترى نتيجة العمل قم بوضع label وليكن ذو اسم label1
والآن ضمن الحدث rec_SpeechRecognized يمكنك وضع الكلام المتعرف عليه وفق المتحول e الى اي خرج مناسب


ارجو ان اكون قد وفقت بايصال المعلومة بشكل جيد وماحدا ينام :mrgreen:
إعداد الطالب النجيب المجد الكفو الغر المجند : محمد وسيم أبوزينة
:mrgreen:
صورة العضو الشخصية
wazzz
عضو نشيط جدا
عضو نشيط جدا
 
مشاركات: 2019
اشترك في: الثلاثاء يناير 29, 2008 9:21 pm
مكان: root/badusers/wazz
الجتس: ذكر
الشهادة الثانوية: بحاجة لإعادة تجديد
الجامعة: بحاجة لالغاء تجزئة
الكلية: بحاجة لفرمتة
المرحلة الدراسية: السنة الخامسة
الاختصاص: ذكاء صنعي

العودة إلى دروس في البرمجة

الموجودون الآن

المستخدمون المتصفحون لهذا المنتدى: لا يوجد أعضاء مسجلين متصلين و 1 زائر