Commencer avec la reconnaissance de la parole et python

j'aimerais savoir où commencer avec la reconnaissance de la parole. Pas avec une bibliothèque ou quelque chose qui est assez "boîte noire", mais à la place, je veux savoir où je peux réellement faire un simple script de reconnaissance de la parole. J'ai fait quelques recherches et trouvé, pas beaucoup, mais ce que j'ai vu, c'est qu'il y a des dictionnaires de " sons ou des syllabes qui peuvent être rassemblés pour former le texte. Donc en gros ma question est: où puis-je aller avec ça?

aussi, puisque ceci est un peu optimiste, je serais également très bien avec une bibliothèque (pour l'instant) pour l'utiliser dans mon programme. J'ai vu que certains discours aux bibliothèques de texte et APIs crachent seulement un résultat. Ce n'est pas grave, mais ce serait irréalisable. Mon programme actuel vérifie déjà la grammaire et tout le texte entré, de sorte que si je devais dire, les dix premiers résultats du logiciel speech to text, qu'il pourrait vérifier chacun et exclure tout ce qui n'a pas de sens.

22
demandé sur bs7280 2012-09-02 23:31:59

6 réponses

mise à jour: cela ne fonctionne plus

parce que google a fermé sa plateforme

--

vous pouvez utiliser https://pypi.python.org/pypi/pygsr

$> pip install pygsr

exemple d'utilisation:

from pygsr import Pygsr
speech = Pygsr()
# duration in seconds
speech.record(3)
# select the language
phrase, complete_response = speech.speech_to_text('en_US')

print phrase
7
répondu dr. Neox 2016-06-22 04:02:34

si vous voulez vraiment comprendre la reconnaissance de la parole à partir de la base, recherchez un bon paquet de traitement de signal pour python et lisez ensuite sur la reconnaissance de la parole indépendamment du logiciel.

mais la reconnaissance de la parole est un problème extrêmement complexe (essentiellement parce que les sons interagissent de toutes sortes de façons lorsque nous parlons). Même si vous commencez avec la meilleure bibliothèque de reconnaissance de la parole que vous pouvez obtenir vos mains sur, vous ne serez en aucun cas trouver vous-même avec rien de plus à faire.

8
répondu alexis 2012-09-02 21:38:23

Pour ceux qui veulent approfondir le sujet de la reconnaissance vocale en Python, voici quelques liens:

6
répondu anatoly techtonik 2015-12-17 09:05:03

Pocketsphinx est aussi une bonne alternative. Il y a des fixations Python fournies par SWIG qui facilitent l'intégration dans un script.

Par exemple:

from os import environ, path
from itertools import izip

from pocketsphinx import *
from sphinxbase import *

MODELDIR = "../../../model"
DATADIR = "../../../test/data"

# Create a decoder with certain model
config = Decoder.default_config()
config.set_string('-hmm', path.join(MODELDIR, 'hmm/en_US/hub4wsj_sc_8k'))
config.set_string('-lm', path.join(MODELDIR, 'lm/en_US/hub4.5000.DMP'))
config.set_string('-dict', path.join(MODELDIR, 'lm/en_US/hub4.5000.dic'))
decoder = Decoder(config)

# Decode static file.
decoder.decode_raw(open(path.join(DATADIR, 'goforward.raw'), 'rb'))

# Retrieve hypothesis.
hypothesis = decoder.hyp()
print 'Best hypothesis: ', hypothesis.best_score, hypothesis.hypstr

print 'Best hypothesis segments: ', [seg.word for seg in decoder.seg()]

# Access N best decodings.
print 'Best 10 hypothesis: '
for best, i in izip(decoder.nbest(), range(10)):
    print best.hyp().best_score, best.hyp().hypstr

# Decode streaming data.
decoder = Decoder(config)
decoder.start_utt('goforward')
stream = open(path.join(DATADIR, 'goforward.raw'), 'rb')
while True:
    buf = stream.read(1024)
    if buf:
        decoder.process_raw(buf, False, False)
    else:
        break
decoder.end_utt()
print 'Stream decoding result:', decoder.hyp().hypstr
6
répondu toine 2016-08-26 08:54:13

Libellule fournit un cadre propre pour la reconnaissance de la parole sur les fenêtres. Vérifiez leur Documentation pour un exemple d'usage. Puisque vous n'êtes pas à la recherche de la grande échelle de fonctions fournit Dragonfly vous pourriez vouloir jeter un oeil à la plus maintenu PySpeech bibliothèque.

leur code source semble facile à comprendre et peut-être que c'est ce que vous voulez regarder en premier

4
répondu tehmisvh 2012-09-02 20:04:33

je sais que la Question Est ancienne mais juste pour les gens dans le futur:

j'utilise speech_recognition-Module et je l'aime. la seule chose est, il nécessite Internet parce qu'il utilise le Google pour reconnaître le discours. Mais cela ne devrait pas être un problème dans la plupart des cas. La reconnaissance fonctionne presque parfaitement.

EDIT:

speech_recognition paquet peut utiliser plus que google pour traduire, y compris CMUsphinx (qui permet hors ligne la reconnaissance), entre autres. La seule différence, c'est un changement subtil dans la reconnaître commande:

https://pypi.python.org/pypi/SpeechRecognition/

voici un petit exemple de code:

import speech_recognition as sr

r = sr.Recognizer()
with sr.Microphone() as source:                # use the default microphone as the audio source
    audio = r.listen(source)                   # listen for the first phrase and extract it into audio data

try:
    print("You said " + r.recognize_google(audio))    # recognize speech using Google Speech Recognition - ONLINE
    print("You said " + r.recognize_sphinx(audio))    # recognize speech using CMUsphinx Speech Recognition - OFFLINE
except LookupError:                            # speech is unintelligible
    print("Could not understand audio")

il y a juste une chose qui ne fonctionne pas bien pour moi: écouter dans une boucle d'infini. Après quelques Minutes, il raccroche. (C'est de ne pas tomber, c'est juste de ne pas répondre.)

modifier: Si vous voulez utiliser le Microphone sans boucle infinity vous doit spécifier la longueur d'enregistrement. Exemple de code:

import speech_recognition as sr

r = sr.Recognizer()
with sr.Microphone() as source:
    print("Speak:")
    audio = r.listen(source, None, "time_to_record")  # recording
4
répondu Noah Krasser 2018-09-01 10:21:55