Question

J'ai écrit une application en C # pour la reconnaissance vocale à l'aide System.Speech qui fonctionne très bien sur Windows 7. Cependant, je suis après avoir créé la même application qui fonctionne sur Windows 2003 (x86).

Mon environnement de programmation: Windows 7 x64 Pro Visual Studio 2008

Afin de développer cette application dans mon environnement de programmation que j'ai installé:

1.Microsoft Speech Platform - Runtime Server (version 10.1) (x86)

http: / /www.microsoft.com/downloads/details.aspx?FamilyID=674356C4-E742-4855-B3CC-FC4D5522C449&displaylang=en&displaylang=en

2.Microsoft Speech Platform - Kit de développement logiciel (SDK) (version 10.1) (x86)

http: // www .microsoft.com / téléchargements / Details.aspx? displaylang = fr & FamilyID = 4d36908b-3264-49ef-B154-f23bf7f44ef4

3.Microsoft Speech Platform - Server Runtime Langues (version 10.1)

(ici installé SR pour en-GB)

http: // www .microsoft.com / téléchargements / Details.aspx? displaylang = fr & FamilyID = f704cd64-1dbf-47a7-ba49-27c5843a12d5

Dans mon programme au lieu de System.Speech je Microsoft.Speech.Recognition;

Collé ce code de documentation du 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;
  }
}

Je mets également la cible de plate-forme pour x86 dans les propriétés du projet. Code compile mais une fois que je cours ou déboguer la reconnaissance ne fonctionne pas. Toute idée de ce que je suis absent?

Était-ce utile?

La solution

Vous créez un moteur de reconnaissance vocale sans spécifier un moteur. Depuis que vous avez installé le moteur en-GB, vous devez spécifier un cultureinfo (ou un recognizerinfo ):

sre = new SpeechRecognitionEngine(new CultureInfo("en-GB")); 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top