2010-08-30 16 views
6

Escribí una aplicación en C# para el reconocimiento de voz utilizando System.Speech que funciona bien en Windows 7. Sin embargo, estoy después de crear la misma aplicación que funcionará en Windows 2003 (x86).Microsoft Speech Recognition Platform

Mi entorno de programación: Windows 7 x64 Pro Visual Studio 2008

Para el desarrollo de esta aplicación en mi entorno de programación He instalado:

1.Microsoft habla Plataforma - Server Runtime (versión 10.1) (x86)

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

2.Microsoft habla Plataforma - Kit de desarrollo de software (SDK) (Versión 10.1) (86)

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

3.Microsoft habla Plataforma - Server Runtime Idiomas (Versión 10,1)

(SR aquí instalada para es-ES)

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

En mi programa en vez del Sistema .Espeto que utilicé Microsoft.Speech.Recognition;

pegado el código de la documentación del 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; 
    } 
} 

también establecer destino a la plataforma x86 en las propiedades del proyecto. Code compila, pero una vez que ejecuto o depuro, el reconocimiento no funciona. ¿Alguna idea de lo que me estoy perdiendo?

+0

Al menos en Windows XP no se puede ejecutar el software de reconocimiento de voz sin necesidad de instalar componentes del SDK. ¿Estás seguro de que los componentes necesarios existen en la computadora de destino? –

+0

La idea es hacer que esto funcione primero en la máquina local y luego implementarlo en Windows 2003. Mi máquina de programación es Windows 7 x64 VS2008 que tiene Runtime, SDK y enGB SR instalados como se detalló anteriormente. Compila, se ejecuta en mi máquina pero no reconoce las opciones (nombres de colores) –

+0

Al depurar me he dado cuenta de que en sre = new SpeechRecognitionEngine(); propiedades: EndSilenceTmeout EndSilenceTmeoutAmbiguous tiro excepción: "reconocedor de no establecer el apoyo de reconocedor pero el programa continúa ejecutando –

Respuesta

5

Está creando un motor de reconocimiento de voz sin especificar un motor. Puesto que usted ha instalado el motor es-ES, es necesario especificar una cultureinfo (o una recognizerinfo):

sre = new SpeechRecognitionEngine(new CultureInfo("en-GB")); 
+0

Ahhh eso fue todo Muchas gracias :)..! –