Domanda

ho scritto un app in C # per il riconoscimento vocale utilizzando System.Speech che funziona bene su Windows 7. Comunque io sono dopo aver creato la stessa applicazione che funziona su Windows 2003 (x86).

Il mio ambiente di programmazione: Windows 7 x64 Pro Visual Studio 2008

Al fine di sviluppare questa applicazione nel mio ambiente di programmazione ho installato:

1.Microsoft piattaforma Speech - Server Runtime (versione 10.1) (86)

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

Piattaforma Speech 2.Microsoft - Software Development Kit (SDK) (versione 10.1) (86)

http: // www .microsoft.com / downloads / Details.aspx? displaylang = it & FamilyID = 4d36908b-3264-49ef-B154-f23bf7f44ef4

Piattaforma Speech 3.Microsoft - Server Runtime Lingue (versione 10.1)

(SR qui installato per la it-IT)

http: // www .microsoft.com / downloads / Details.aspx? displaylang = it & FamilyID = f704cd64-1dbf-47a7-ba49-27c5843a12d5

Nel mio programma, invece di System.Speech ho usato Microsoft.Speech.Recognition;

incollato questo codice dalla documentazione 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;
  }
}

Ho anche impostare bersaglio piattaforma per x86 in proprietà del progetto. compila codice ma una volta ho eseguito o di debug che il riconoscimento non funziona. Qualsiasi idea di cosa mi manca?

È stato utile?

Soluzione

Si sta creando un motore di riconoscimento vocale senza specificare un motore. Dal momento che hai installato il motore di it-IT, è necessario specificare un CultureInfo (o un recognizerinfo ):

sre = new SpeechRecognitionEngine(new CultureInfo("en-GB")); 
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top