أول مرة هنا ؟ تفحص قواعد المشاركة و معلومات أخرى عن عرب overflow!
x

Speech Recognition using C# and VS 2010 التعرف على الصوت

+1 صوت
444 مشاهدات

السلام عليكم ..

حبيت اعمل تطبيق بحيث يتعرف على مدخلات الصوت باستعمال لغة ال #C
استعملت المكتبه
System.Speech.Recognition
System.Speech.Synthesis

كان يضهر وقت التنفيد هده الرسالة " no recognizer is installed "

ثم بعد ان قمت بتحميل speech sdk 5.1

الرسالة تحولت الى مثل ماهو ضاهر عندكم بالصورة

مع العلم اني استخدم ويندوز 7 وبرنامج فيجوال ستوديو 2010 تحت بيئة تطوير NET 4.5.

الخطأ :

enter image description here

وهذا الكود المسخدم

SpeechRecognitionEngine recengine;
    public Form1()

    {
        InitializeComponent();

    }


    private void Form1_Load(object sender, EventArgs e)
    {
        try
        {
            recengine = new SpeechRecognitionEngine();
            Choices commands = new Choices();
            commands.Add(new string[] { "say hello", "print my name" });
            GrammarBuilder gbuilder = new GrammarBuilder();
            gbuilder.Append(commands);
            Grammar grammer = new Grammar(gbuilder);
            recengine.LoadGrammarAsync(grammer);
            recengine.SetInputToDefaultAudioDevice();
            recengine.SpeechRecognized += recengine_SpeechRecognized;
        }
        catch(Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

    void recengine_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
    {
        switch (e.Result.Text)
        {
            case "say hello" :
                MessageBox.Show("hello");
                break;
            case "Print my name" :
                richTextBox1.Text += "Mohammed";
                break;
        }

    }

    private void button1_Click(object sender, EventArgs e)
    {
        recengine = new SpeechRecognitionEngine();
           recengine.RecognizeAsync(RecognizeMode.Multiple);
            button2.Enabled = true;

    }

    private void button2_Click(object sender, EventArgs e)
    {
        recengine = new SpeechRecognitionEngine();
        recengine.RecognizeAsyncStop();
        button1.Enabled = true;

    }
}

}

الرجاء من صادفته هده المشكلة ويعرف حلها او اي معلومه عنها الاجابة

وشكرا مقدما ^_^

إجابة واحدة

+1 صوت

جرب تحذف new من ال button لان ملهاش لزمه وبكدا بتستدعي الداله اكتر من مره ودا مينفعش

private SpeechRecognitionEngine recengine;



  public Form1()
    {
        InitializeComponent();

        recengine = new SpeechRecognitionEngine();
        Choices commands = new Choices();
        commands.Add(new string[] { "say hello", "print my name" });
        GrammarBuilder gbuilder = new GrammarBuilder();
        gbuilder.Append(commands);
        Grammar grammer = new Grammar(gbuilder);
        recengine.LoadGrammarAsync(grammer);
        recengine.SetInputToDefaultAudioDevice();
        recengine.SpeechRecognized += recengine_SpeechRecognized;
    }
    void recengine_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
    {
        switch (e.Result.Text)
        {
            case "say hello":
                MessageBox.Show("hello");
                break;
            case "Print my name":
                richTextBox1.Text += "Mohammed";
                break;
        }

    }

    private void button4_Click(object sender, EventArgs e)
    {
        recengine.RecognizeAsync(RecognizeMode.Multiple);
    }

    private void button3_Click(object sender, EventArgs e)
    {
        recengine.RecognizeAsyncStop();
    }

تعقيب بسيط انا اخطأت سابقا في نسخ الكود حيث نسخت جزأ منه  والان عدلته وحطيت الكود الكامل مع جميع ال events

جربت اخي الذي قلت عليه ومفيش فيده :(
الرسالة هيا هيا
كان عندك مشكله بسيطه مع ال button انا عدلتها في الكود والكود شغال عندي تمام جربه كدا عندك :)
معلش ياباش مهندس تعبناك معانا
بس برضه الايرور
نتج الخطأ HRESULT E_FAIL عن استدعاء أحد مكونات COM.
عند
recengine.LoadGrammarAsync(grammer);

محلك سر حتى بعد استخدام االتعديل بتاع حضرتك

حولت المشروع من 4.5 NET الى 4 و3.5
برضه مفيش فايده

مش عارف بس عندي احساس انه الرسالة دي من الويندوز الي استعمله
لاني استعمل النسخه العربية من ويندوز 7

الف شكر ليك ولوقتك والله
ملهاش دعوه بلغة الويندوز ممكن من بيئة ال framework حصل فيها مشاكل انته ممكن تعملهم update وحاول تثبت كل حاجه ف مكانها لان تقريبا visual 2010 موش بيدعم framework 4.5 تقريبا موش متدعم غير علي visual 2013 وهوه  متدعم علي windows 8.1
ونصيحه متثبتش visual باللغه العربيه علشان تعرف الاخطاء بسهوله :D
بالتوفيق ان شاء الله
Araboverflow أهلا بكم فى عرب Overflow
المجتمع العربى للأسئلة و الأجوبة التقنية.

أحدث الشارات

100 نقطة
- محمد أحمد -
سؤال ملحوظ
- h98 -
سؤال ذائع الصيت
- Zaid -
سيرة ذاتية
- 0xzidane -
100 نقطة
- 0xzidane -
...