Piattaforma di riconoscimento vocale Microsoft
-
25-09-2019 - |
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)
Piattaforma Speech 2.Microsoft - Software Development Kit (SDK) (versione 10.1) (86)
Piattaforma Speech 3.Microsoft - Server Runtime Lingue (versione 10.1)
(SR qui installato per la it-IT)
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?
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"));