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

Existe-t-il un cadre bien connu pour C ou Java ou PHP pour faire des applications de reconnaissance vocale? Microphone entrée audio et il reconnaîtra les mots anglais. Comme 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/

enter image description here

  1. ajouter le bibliothèques

  2. copier & coller code:

    a) fichier xml placé 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");
            }
        }
      }
    }
    
24
demandé sur syb0rg 2011-05-27 15:08:46

6 réponses

10
répondu Raoul 2011-05-27 11:11:30

en regardant ces questions depuis quelques mois, j'ai vu la plupart des choix de développeurs se décomposent comme ceci:

Windows folks-utiliser le système.Fonctions de discours de .Net ou Microsoft.Discours et installer le logiciel gratuit Microsoft fournit des modules de reconnaissance. Windows 7 comprend un moteur de parole complet. D'autres sont téléchargeables gratuitement. Il existe une API C++ pour les mêmes moteurs appelés 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'informations sur les moteurs Microsoft pour Windows Quelle est la différence entre le Système.Discours.Reconnaissance et Microsoft.Discours.La reconnaissance?

les gens de Linux-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, d'autres

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

il y a 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 encore trouver un moteur de parole qui supporte cette API. Je ne pense pas que Sphinx le supporte complètement - http://cmusphinx.sourceforge.net/sphinx4/doc/Sphinx4-faq.html#support_jsapi

il y a beaucoup d'autres questions: besoin d'outils de reconnaissance de la parole et de la parole pour Linux

4
répondu Michael Levy 2017-05-23 12:25:52

Hmm. Un sujet intéressant. Je n'ai pas travaillé sur ce genre de chose depuis des années, bien que 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 sympa, mais pas aussi facile que votre pseudo-exemple de code fait son.

vous allez avoir besoin d'une bibliothèque D'API tierce partie pour cela. (Je suppose que c'est possible pour écrire votre propre, mais je ne pense pas que vous êtes comme le point où c'est possible d'idée)

il y a un certain nombre de bibliothèques API disponibles; Google a trouvé plusieurs -- voici un des résultats que j'ai eu: http://en.wikipedia.org/wiki/Microsoft_Speech_API -- mais vous aurez probablement besoin d'essayer quelques-uns jusqu'à ce que vous obtenez un qui répond à vos besoins.

il y a de fortes chances que ce soit une API commerciale, c'est-à-dire que vous devrez payer pour cela. Il peut y avoir certains open source (je ne vois pas dans mon recherche rapide sur Google, 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 d'interface avec elle, votre travail n'est pas terminé, parce que la reconnaissance de la parole est une chose notoirement délicate à travailler.

Différents accents ne sont que le début du problème. Le sexe du locuteur et la vitesse à laquelle il parle affectent également la capacité à reconnaître ce qui a été été dit. Les humains sont far mieux pour reconnaître la parole que les ordinateurs, mais même nous luttons avec certains accents inconnus.

les logiciels de reconnaissance de la Parole doivent généralement être formés pour reconnaître des mots et des phrases spécifiques. Vous n'essaieriez certainement pas de vous comparer à une chaîne comme dans votre exemple; vous lui demanderiez de repérer une des phrases spécifiques qu'il a été formé à reconnaître.

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

Voici d'autres liens qui peuvent vous aider:

3
répondu 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
répondu 2012-04-29 12:49:05

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

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

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

1
répondu Dariusz 2013-05-24 10:11:10

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

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

1
répondu Skylion 2013-09-14 23:48:58