c# - visual - Voz/Voz a texto
system platformnotsupportedexception no hay ningún reconocedor instalado (6)
Necesito una API o una biblioteca (preferiblemente gratuita) que convierta la voz / voz a través de un micrófono, en texto (cadena).
Además, necesitaré una API o biblioteca que pueda hacer conversión de texto a voz.
Me gustaría usar C # y .NET, pero otros idiomas serán suficientes.
Gracias.
Aquí hay un ejemplo completo usando C # y System.Speech para convertir de voz a texto
El código se puede dividir en 2 partes principales:
configurando el objeto SpeechRecognitionEngine (y sus elementos requeridos) manejando los eventos SpeechRecognized y SpeechHypothesized.
Paso 1: Configurar el motor de reconocimiento de voz
_speechRecognitionEngine = new SpeechRecognitionEngine();
_speechRecognitionEngine.SetInputToDefaultAudioDevice();
_dictationGrammar = new DictationGrammar();
_speechRecognitionEngine.LoadGrammar(_dictationGrammar);
_speechRecognitionEngine.RecognizeAsync(RecognizeMode.Multiple);
En este punto, su objeto está listo para comenzar a transcribir audio desde el micrófono. Sin embargo, debe manejar algunos eventos para poder acceder a los resultados.
Paso 2: Manejo de los eventos de SpeechRecognitionEngine
_speechRecognitionEngine.SpeechRecognized - = new EventHandler (SpeechRecognized); _speechRecognitionEngine.SpeechHypothesized - = new EventHandler (SpeechHypothesizing);
_speechRecognitionEngine.SpeechRecognized + = new EventHandler (SpeechRecognized); _speechRecognitionEngine.SpeechHypothesized + = new EventHandler (SpeechHypothesizing);
Private void SpeechHypothesizing (objeto remitente, SpeechHypothesizedEventArgs e) {/// resultados en tiempo real de la cadena del motor realTimeResults = e.Result.Text; }
Private void SpeechRecognized (emisor de objetos, SpeechRecognizedEventArgs e) {/// respuesta final de la cadena del motor finalAnswer = e.Result.Text; }
Eso es. Si desea utilizar un archivo .wav pregrabado en lugar de un micrófono, debería utilizar
_speechRecognitionEngine.SetInputToWaveFile (pathToTargetWavFile);
en lugar de
_speechRecognitionEngine.SetInputToDefaultAudioDevice ();
Hay un montón de opciones diferentes en estas clases y vale la pena explorarlas con más detalle.
Consulte Uso de c ++ para llamar y usar el Reconocimiento de voz de Windows.
Que dice:
Microsoft proporciona motores de reconocimiento de voz para las versiones de Windows tanto del cliente como del servidor. Ambos pueden ser programados con C ++ o con lenguajes .NET. La API tradicional para la programación en C ++ se conoce como SAPI. Los espacios de nombres de .NET framework para voz de cliente y servidor son System.Speech y Microsoft.Speech.
Documentación de SAPI: http://msdn.microsoft.com/en-us/library/ms723627(VS.85).aspx
El espacio de nombres .NET para el reconocimiento del cliente es System.Speech - http://msdn.microsoft.com/en-us/library/system.speech.recognition.aspx . Windows Vista y 7 incluyen el motor de voz.
El espacio de nombres .NET para el reconocimiento del servidor es Microsoft.Speech y el SDK completo para la versión 10.2 está disponible en microsoft.com/downloads/en/… . El motor del habla es una descarga gratuita.
Muchas de las preguntas anteriores han abordado esto. Consulte Prototipo basado en el reconocimiento de voz , inicie el reconocimiento de voz y la síntesis de voz , y SAPI y Windows 7 Problem para obtener ejemplos.
Hay un DLL incorporado en cada sistema operativo Windows para Text2Speach. Encontrará la dll correspondiente en c: / Programs / Shared Folders / Microsoft Shared / Speech / sapi.dll (sAPI - speach api) - No estoy muy seguro acerca de la ruta - pero de todos modos puede buscar sapi.dll.
Después puedes usar el siguiente fragmento de código
SpVoice oVoice = new SpVoice();
oVoice.Voice = oVoice.GetVoices("","").Item(0); // 0 indicating what kind of speaker you want
oVoice.Volume = 50;
oVoice.Speak("hello world", SpeechVoiceSpeakFlags.SVSFDefault);
oVoice = null;
Para la conversión de texto a voz tienes que seguir 3 pasos:
1. Agregar referencia System.Speech.
2. Añadir encabezados:
utilizando System.Speech;
utilizando System.Speech.Synthesis;
3. Agregue el siguiente código donde textBox1 es un nombre predeterminado de Cuadro de texto.
SpeechSynthesizer speaker = new SpeechSynthesizer();
speaker.Rate = 1;
speaker.Volume = 100;
speaker.Speak(textBox1.Text);
Puede usar CMU Sphinx ya que es una solución bastante abierta y escalable y creo que puede usarse tanto en el lado del cliente como del servidor:
http://cmusphinx.sourceforge.net/
Si está buscando una solución de escritorio de Microsoft, puede usar SAPI:
http://msdn.microsoft.com/en-us/magazine/cc163663.aspx
En el lado del servidor, puede usar Microsoft Unified Communication, pero también considere las licencias:
http://www.microsoft.com/uc/en/gb/default.aspx
Actualizar:
Este hilo también tiene una buena referencia:
I''d like to use C# and .NET, but other languages will suffice.
Marque esto si está abierto a C++
Festival