سؤال

لقد كتبت تطبيقًا في C# للتعرف على الكلام باستخدام System.speesh الذي يعمل بشكل جيد على Windows 7. ومع ذلك ، فأنا بعد إنشاء نفس التطبيق الذي سيعمل على Windows 2003 (x86).

بيئة البرمجة الخاصة بي: Windows 7 X64 Pro Visual Studio 2008

من أجل تطوير هذا التطبيق في بيئة البرمجة التي قمت بتثبيتها:

1.Microsoft Clebe Platform - وقت تشغيل الخادم (الإصدار 10.1) (x86)

http://www.microsoft.com/downloads/details.aspx؟familyid=674356c4-e742-4855-b3cc-fc4d5522c449&displaylang=en&displaylang=en

2. Microsoft Ceek Platform - مجموعة تطوير البرمجيات (SDK) (الإصدار 10.1) (x86)

http://www.microsoft.com/downloads/details.aspx؟displaylang=en&familyid=4d36908b-3264-49ef-b154-f23bf7f44ef4

3. microsoft منصة الكلام - لغات وقت تشغيل الخادم (الإصدار 10.1)

(هنا تثبيت SR لـ EN-GB)

http://www.microsoft.com/downloads/details.aspx؟displaylang=en&familyid=f704cd64-1dbf-47a7-ba49-27c5843a12d5

في برنامجي بدلاً من system.speech ، استخدمت microsoft.speech.recognition ؛

لصق هذا الرمز من وثائق SDK:

using Microsoft.Speech.Recognition;

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
  public partial class Form1 : Form
  {
    public Form1()
    {
      InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
      // Create a new SpeechRecognitionEngine instance.
      sre = new SpeechRecognitionEngine();

      // Create a simple grammar that recognizes “red”, “green”, or “blue”.
      Choices colors = new Choices();
      colors.Add("red");
      colors.Add("green");
      colors.Add("blue");

      GrammarBuilder gb = new GrammarBuilder();
      gb.Append(colors);

      // Create the actual Grammar instance, and then load it into the speech recognizer.
      Grammar g = new Grammar(gb);
      sre.LoadGrammar(g);

      // Register a handler for the SpeechRecognized event.
      sre.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(sre_SpeechRecognized);
      sre.SetInputToDefaultAudioDevice();
      sre.RecognizeAsync(RecognizeMode.Multiple);
    }

    // Simple handler for the SpeechRecognized event.
    void sre_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
    {
      MessageBox.Show(e.Result.Text);
    }

    SpeechRecognitionEngine sre;
  }
}

أنا أيضا تعيين الهدف منصة على x86 في خصائص المشروع. يجمع الكود ولكن بمجرد تشغيل أو تصحيح الاعتراف بتهمة لا يعمل. أي فكرة ماذا أفتقد؟

هل كانت مفيدة؟

المحلول

أنت تقوم بإنشاء محرك التعرف على الكلام دون تحديد محرك. نظرًا لأنك قمت بتثبيت محرك EN-GB ، فأنت بحاجة إلى تحديد أ الثقافة (أو أ التعرف على):

sre = new SpeechRecognitionEngine(new CultureInfo("en-GB")); 
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top