Reconnaissance vocale en C ou Java ou PHP? [fermé]


Existe-t-il un framework bien connu pour C ou Java ou PHP pour faire des applications de reconnaissance vocale? Entrée audio microphone et il reconnaîtra les mots anglais. Tels que le pseudo code:

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

Suivi:

Télécharger ceci: sphinx4/1.0% 20beta6 /

entrez la description de l'image ici

  1. Ajouter les bibliothèques

  2. Copier et coller le code:

    A) fichier xml mis quelque part, qui peut être chargé à partir du code:

    Https://gist.github.com/2551321

    B) utilisez ceci:

    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");
            }
        }
      }
    }
    
Author: syb0rg, 2011-05-27

6 answers

 10
Author: Raoul, 2011-05-27 11:11:30

En regardant ces questions pendant quelques mois, j'ai vu la plupart des choix de développeurs se décomposer comme ceci:

Windows folks - utilisez le système.Fonctions vocales de. Net ou Microsoft.Discours et installer les reconnaisseurs gratuits fournis par Microsoft. Windows 7 comprend un moteur vocal complet. D'autres sont téléchargeables gratuitement. Il existe une API C++ pour les mêmes moteurs connus sous le nom de SAPI. Voir à http://msdn.microsoft.com/en-us/magazine/cc163663.aspx. ou http://msdn.microsoft.com/en-us/library/ms723627 (v=vs. 85).aspx . Plus d'arrière-plan sur les moteurs Microsoft pour Windows Quelle est la différence entre le système.Discours.Reconnaissance et Microsoft.Discours.La reconnaissance?

Linux folks - Sphinx semble avoir un bon suivi. Voir http://cmusphinx.sourceforge.net/ et http://cmusphinx.sourceforge.net/wiki/

Produits commerciaux-Nuance, Loquendo, AT & T, autres

Service en ligne - Nuance, Yapme, autres

Bien sûr, cela peut aussi être utile - http://en.wikipedia.org/wiki/List_of_speech_recognition_software

Il existe une API Java speech. Voir javax.discours.reconnaissance dans l'API Java Speech http://java.sun.com/products/java-media/speech/forDevelopers/jsapi-guide/Recognition.html. Je crois que vous devez toujours trouver un moteur vocal qui prend en charge cette API. Je ne pense pas que Sphinx le supporte pleinement - http://cmusphinx.sourceforge.net/sphinx4/doc/Sphinx4-faq.html#support_jsapi

Il y a beaucoup d'autres quesitons SO: Besoin d'outils de synthèse vocale et de reconnaissance vocale pour Linux

 4
Author: Michael Levy, 2017-05-23 12:25:52

Hmm. Un sujet intéressant. Je n'ai pas fait de travail autour de ce genre de chose depuis des lustres, même si j'ai passé pas mal de temps à jouer avec un logiciel de reconnaissance vocale (assez basique) sur l'Amiga il y a de nombreuses années. C'est très amusant, mais pas aussi facile que votre exemple de pseudo-code le fait sonner.

Vous allez avoir besoin d'une bibliothèque d'API tierce pour cela. (Je suppose que c'est possible d'écrire le vôtre, mais je ne pense pas que vous soyez le point où c'est faisable idée)

Il y a un certain nombre de bibliothèques d'API disponibles; Google en a trouvé plusieurs here voici l'un des résultats que j'ai obtenus: http://en.wikipedia.org/wiki/Microsoft_Speech_API but mais vous devrez probablement en essayer quelques-uns jusqu'à en obtenir un qui répond à vos besoins.

Les chances sont que ce soit une API commerciale ie c'est-à-dire que vous devrez payer pour cela. Il peut y en avoir des open source (je n'en ai pas vu dans mon Googleing superficiel, mais je suis sûr qu'ils existent), mais ils sont susceptibles d'être beaucoup plus difficile à utiliser.

Une fois que vous avez une bibliothèque avec laquelle vous êtes satisfait et que vous avez écrit votre code pour l'interfacer, votre travail n'est pas terminé, car la reconnaissance vocale est une chose notoirement délicate à travailler.

Différents accents ne sont que le début du problème. Le sexe de l'orateur et la vitesse à laquelle il parle affectent également la capacité de reconnaître ce qui a été dit. Les humains sont beaucoup mieux à reconnaître la parole que les ordinateurs, mais même nous avons du mal avec quelques accents inconnus.

Les logiciels de reconnaissance vocale doivent généralement être formés pour reconnaître des mots et des phrases spécifiques. Vous n'essaieriez certainement pas de faire correspondre une chaîne comme dans votre exemple; vous lui demanderiez de repérer une phrase spécifique qu'il avait été formé à reconnaître.

En bref, c'est un très grand champ, dans lequel vous ne faites clairement que plonger votre orteil. J'espère qu'il va bien pour vous, mais je vois beaucoup de temps de recherche dans votre avenir immédiat!

Voici quelques autres liens qui peuvent vous aider:

 3
Author: Spudley, 2011-05-27 13:11:35

Essayez ma bibliothèque C, libsprec, qui est construite autour du moteur de reconnaissance vocale de Google:

Http://github.com/H2CO3/libsprec

 1
Author: , 2012-04-29 12:49:05

HTK est l'un des frameworks les plus populaires pour C.

Http://htk.eng.cam.ac.uk/

Il n'est pas facile à utiliser, mais il est certainement puissant.

 1
Author: Dariusz, 2013-05-24 10:11:10

L'API J. A. R. V. I. S. Java Speech est très robuste et fonctionnelle et une excellente alternative minimaliste à Sphinx.

Https://github.com/The-Shadow/java-speech-api

 1
Author: Skylion, 2013-09-14 23:48:58