2011-05-27 36 views
24

¿Existe algún marco establecido bien conocido para C o Java o PHP para hacer aplicaciones de reconocimiento de voz? Entrada de audio de micrófono y reconocerá palabras en inglés. Tales como pseudo-código:Reconocimiento de voz en C o Java o PHP?

Speech s = new Speech(); 
s.input(micStream); 
result = s.recognise("Hello"); 
if (result) { printf("Matched hello"); } else { printf("No match found"); } 

Seguimiento:

Descarga esta: sphinx4/1.0%20beta6/

enter image description here

  1. Añadir las bibliotecas

  2. Copiacódigopegar:

    a) archivo XML puso en algún lugar, que puede ser cargado desde el código:

    https://gist.github.com/2551321

    b) utilizar este:

    package edu.cmu.sphinx.demo.hellowrld; 
    import edu.cmu.sphinx.frontend.util.Microphone; 
    import edu.cmu.sphinx.recognizer.Recognizer; 
    import edu.cmu.sphinx.result.Result; 
    import edu.cmu.sphinx.util.props.ConfigurationManager; 
    import java.io.IOException; 
    import java.util.logging.Level; 
    import java.util.logging.Logger; 
    import models.Tts; 
    
    public class Speech { 
    
        public static void main(String[] args) { 
        ConfigurationManager cm; 
    
        if (args.length > 0) { 
         cm = new ConfigurationManager(args[0]); 
        } else { 
         ///tmp/helloworld.config.xml 
         cm = new ConfigurationManager(Speech.class.getResource("speech.config.xml")); 
    
        } 
        Recognizer recognizer = (Recognizer) cm.lookup("recognizer"); 
        recognizer.allocate(); 
    
        Microphone microphone = (Microphone) cm.lookup("microphone"); 
        if (!microphone.startRecording()) { 
         System.out.println("Cannot start microphone."); 
         recognizer.deallocate(); 
         System.exit(1); 
        } 
    
        System.out.println("Say: (Hello | call) (Naam | Baam | Caam | Some)"); 
    
        while (true) { 
         System.out.println("Start speaking. Press Ctrl-C to quit.\n"); 
    
         Result result = recognizer.recognize(); 
    
         if (result != null) { 
          String resultText = result.getBestFinalResultNoFiller(); 
          System.out.println("You said: " + resultText + '\n'); 
    
           Tts ts = new Tts(); 
           try { 
            ts.load(); 
            ts.say("Did you said: " + resultText); 
           } catch (IOException ex) { 
    
           } 
         } else { 
          System.out.println("I can't hear what you said.\n"); 
         } 
        } 
        } 
    } 
    
+2

¿Se ha preguntado y respondido a Java ya: http://stackoverflow.com/questions/3034925/java-speech-recognition-api –

Respuesta

3

Hmm. Un tema interesante No he trabajado en este tipo de cosas en mucho tiempo, aunque pasé bastante tiempo jugando con algunos (bastante básicos) software de reconocimiento de voz en el Amiga hace muchos años. Es muy divertido, pero no tan fácil como lo hace sonar el ejemplo de tu pseudo-código.

Necesitará una biblioteca de API de terceros para esto. (Supongo que es posible para escribir el suyo, pero no creo que sea el momento en que esa es una idea viable)

Hay una serie de bibliotecas de API disponibles; Google apareció varias veces, este es uno de los resultados que obtuve: http://en.wikipedia.org/wiki/Microsoft_Speech_API, pero probablemente deba probar algunas hasta que obtenga una que satisfaga sus necesidades.

Lo más probable es que se trate de una API comercial, es decir, tendrá que pagarla. Puede haber algunos de código abierto (no vi ninguno en mi búsqueda rápida, pero estoy seguro de que existen), pero es probable que sean mucho más difíciles de usar.

Una vez que tiene una biblioteca con la que está satisfecho y ha escrito su código para interactuar con ella, su trabajo no está hecho, porque el reconocimiento de voz es algo muy difícil de manejar.

Los diferentes acentos son solo el comienzo del problema. El género del hablante y la velocidad a la que hablan también afectan la capacidad de reconocer lo que se ha dicho. Los humanos son ahora mejor para reconocer el habla que las computadoras, pero incluso luchamos con algunos acentos desconocidos.

El software de reconocimiento de voz generalmente necesita capacitación para reconocer palabras y frases específicas. Ciertamente no intentarás hacer coincidir una cadena como en tu ejemplo; le pedirías que descubriera una de las frases específicas que había sido entrenada para reconocer.

En resumen, es un campo muy grande, en el que claramente solo estás metiendo el dedo del pie.Espero que te vaya bien, ¡pero veo mucho tiempo de investigación en tu futuro inmediato!

Éstos son algunos otros enlaces que pueden ayudarle a:

4

Desde ver a estas preguntas para unos pocos meses enésimo, he visto que la mayoría de las opciones de desarrollador se desglosan así:

Gente de Windows: use las características de System.Speech de .Net o Microsoft.Speech e instale los reconocedores gratuitos que proporciona Microsoft. Windows 7 incluye un motor de voz completo. Otros se pueden descargar gratis. Hay una API C++ para los mismos motores conocidos como SAPI. Ver en http://msdn.microsoft.com/en-us/magazine/cc163663.aspx. o http://msdn.microsoft.com/en-us/library/ms723627(v=vs.85).aspx. Más información sobre los motores de Microsoft para Windows What is the difference between System.Speech.Recognition and Microsoft.Speech.Recognition?

Linux personas - Sphinx parece tener muchos seguidores. Ver http://cmusphinx.sourceforge.net/ y http://cmusphinx.sourceforge.net/wiki/ productos

Comerciales - Nuance, Loquendo, AT & T, otros

servicio en línea - Nuance, Yapme, otros

Por supuesto, esto también puede ser útil - http://en.wikipedia.org/wiki/List_of_speech_recognition_software

Hay es una API de voz Java. Consulte javax.speech.recognition en Java Speech API http://java.sun.com/products/java-media/speech/forDevelopers/jsapi-guide/Recognition.html. Creo que todavía tiene que encontrar un motor de voz que admita esta API. No creo Sphinx apoya plenamente - http://cmusphinx.sourceforge.net/sphinx4/doc/Sphinx4-faq.html#support_jsapi

Hay un montón de otros SO quesitons: Need text to speech and speech recognition tools for Linux

1

Prueba mi biblioteca de C, libsprec, que se construye en torno motor de reconocimiento de voz de Google:

http://github.com/H2CO3/libsprec

+0

@ syb0rg Si desea hacerlo, ponerse en contacto conmigo en Twitter o por correo electrónico No sé cuáles pueden ser esos misteriosos errores que "un compilador no detectaría". La biblioteca se ha actualizado recientemente con varias correcciones de errores y mejoras de seguridad, ¿está seguro de que no está mirando una versión anterior? –

+0

@ syb0rg ¡Sensación gratuita para invitarme a chatear! –

Cuestiones relacionadas