Je voudrais effectuer la reconnaissance vocale sur un grand nombre de .wav
fichiers qui sont continuellement générés.problème de qualité avec la voix hors-texte en utilisant Sphinx4
Il y a un nombre croissant de services API voix-texte en ligne (par exemple Google Cloud Speech, Amazon Lex, Twilio Speech Recognition, Nexmo Voice, etc.) qui fonctionnent bien pour les applications connectées, mais ne conviennent pas pour ce cas d'utilisation en raison de coût et bande passante.
Une recherche rapide sur google suggérée CMUSphinx (CMU = Carnegie Mellon University) est populaire pour la reconnaissance vocale.
J'ai essayé l'exemple 'bonjour':
import edu.cmu.sphinx.api.Configuration;
import edu.cmu.sphinx.api.SpeechResult;
import edu.cmu.sphinx.api.StreamSpeechRecognizer;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class Main {
public static void main(String[] args) throws IOException {
Configuration configuration = new Configuration();
configuration.setAcousticModelPath("resource:/edu/cmu/sphinx/models/en-us/en-us");
configuration.setDictionaryPath("resource:/edu/cmu/sphinx/models/en-us/cmudict-en-us.dict");
configuration.setLanguageModelPath("resource:/edu/cmu/sphinx/models/en-us/en-us.lm.bin");
StreamSpeechRecognizer recognizer = new StreamSpeechRecognizer(configuration);
InputStream stream = new FileInputStream(new File("src/main/resources/test.wav"));
recognizer.startRecognition(stream);
SpeechResult result;
while ((result = recognizer.getResult()) != null) {
System.out.format("Hypothesis: %s\n", result.getHypothesis());
}
recognizer.stopRecognition();
}
}
Le résultat est un peu décevant. Le fichier 'test.wav' contient l'audio suivant:
Ceci est le premier intervalle de conversation. Après le premier instant de silencieux, c'est le deuxième intervalle de parler. Après le troisième moment de silence, c'est le troisième intervalle de conversation et le dernier un.
Ceci a été interprété comme:
c'est le premier intervalle de parler ... pour le premier moment de silence est la deuxième de tous parler ... pour le pour le moment de silence C'est la f *** ing plusieurs parlant dans le dernier
La plupart des mots ont été capturés, mais la sortie est brouillée dans la mesure où la signification est perdue. J'ai alors téléchargé une histoire de nouvelles où l'énonciation était limpide, et la transcription était le charabia complet. Il capturé autant qu'une personne très saoulait écouter une langue étrangère.
Je suis curieux de savoir si quelqu'un utilise Sphinx4 avec succès et, dans l'affirmative, quels ajustements ont été faits pour le faire fonctionner? Existe-t-il d'autres modèles acoustiques/langagiers, dictionnaires, etc. qui fonctionnent mieux? Toutes les autres suggestions open source pour la lecture hors-texte hors ligne, je devrais envisager?