2009-02-25 27 views
6

Hay una publicación aquí sobre eso ... pero no funciona para mí. He agregado un system.speech.dll que encontré en Internet pero no puedo usar System.speech porque no aparece.C# reconocimiento de voz

de error 1 El tipo o espacio de nombres 'SpeechRecognizer' no se pudo encontrar (¿falta una directiva using o una referencia de ensamblado?)

de error 2 El tipo o espacio de nombres 'SpeechRecognizedEventArgs' no se pudo encontrar (¿falta una directiva using o una referencia de ensamblado?)

He utilizado este código. Estoy utilizando Windows Vista 64

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; 
using SpeechLib; 
using System.Threading; 


namespace WindowsFormsApplication13 
{ 
    public partial class Form1 : Form 
    { 

     SpeechRecognizer rec = new SpeechRecognizer(); 

     public Form1() 
     { 
      InitializeComponent(); 
      rec.SpeechRecognized += rec_SpeechRecognized; 
     } 

     void rec_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) 
     { 
      lblLetter.Text = e.Result.Text; 
     } 


     private void Form1_Load(object sender, EventArgs e) 
     { 
      var c = new Choices(); 

      // Doens't work must use English words to add to Choices and 
      // populate grammar. 
      // 
      //for (var i = 0; i <= 100; i++) 
      // c.Add(i.ToString()); 

      c.Add("one"); 
      c.Add("two"); 
      c.Add("three"); 
      c.Add("four"); 
      c.Add("Five"); 
      c.Add("six"); 
      c.Add("seven"); 
      c.Add("eight"); 
      c.Add("nine"); 
      c.Add("ten"); 

      // etc... 

      var gb = new GrammarBuilder(c); 
      var g = new Grammar(gb); 
      rec.LoadGrammar(g); 
      rec.Enabled = true; 
     } 
    } 
} 

Respuesta

4

1) Es necesario añadir una referencia a System.Speech en su proyecto

2) No debería haber tenido que buscar 'System.Speech.dll' en Internet, que debería estar en .Net 3 (o 3.5, pero de todas formas obtener 3.5 a menos que haya una razón de peso para no)

Editar:

es posible que desee ver aquí:

http://dotnet.org.za/beta/archive/2008/01/06/system-speech-recognition.aspx

+0

Gracias pero ahora tengo otro problema cuando depurar en forma de cargar los programas no hacer nada en absoluto . y si pongo un segundo código en un botón, el programa dice que no tengo un reconocedor instalado. ¿Me pueden ayudar en esto? –

4

Estoy de acuerdo con James Ogden. También, se debe añadir un "uso" declaración:

using System.Speech.Recognition 

O, calificar totalmente los nombres de las clases.

0

Aunque no es directamente aplicable a la pregunta anterior, vale la pena señalar que Speech SDK no estará disponible en las máquinas de cada cliente. Mientras que Vista incluye un reconocedor de voz, XP no lo hace. Una posible forma de corregir esto es hacer que los usuarios de XP instalen Speech SDK, que incluye uno. El otro es agregar Office 2003 (no 2007) como una dependencia.

0

Tengo un problema con la clase SpeechRecognizer en Windows XP. a veces funciona, pero a veces no funciona, y necesita reiniciar la PC. en Windows 7 funciona bien. Creo que es un problema en el motor de voz, porque cuando ejecuto mi aplicación varias veces deja de funcionar.

Im usando este código:

usando Sistema; usando System.Collections.Generic; usando System.ComponentModel; usando System.Data; usando System.Drawing; usando System.Linq; usando System.Text; usando System.Windows.Forms; usando SpeechLib; usando el sistema.Enhebrado;

espacio de nombres WindowsFormsApplication13 { public partial class Form1: Formulario {

SpeechRecognizer rec = new SpeechRecognizer(); 

    public Form1() 
    { 
     InitializeComponent(); 
     rec.SpeechRecognized += rec_SpeechRecognized; 
    } 

    void rec_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) 
    { 
     lblLetter.Text = e.Result.Text; 
    } 


    private void Form1_Load(object sender, EventArgs e) 
    { 
     var c = new Choices(); 


     c.Add("one"); 
     c.Add("two"); 
     c.Add("three"); 
     c.Add("four"); 
     c.Add("Five"); 
     c.Add("six"); 
     c.Add("seven"); 
     c.Add("eight"); 
     c.Add("nine"); 
     c.Add("ten"); 

     // etc... 

     var gb = new GrammarBuilder(c); 
     var g = new Grammar(gb); 
     rec.LoadGrammar(g); 
     rec.Enabled = true; 
    } 
} 

}

Cuestiones relacionadas