language - speech recognition python español
Comenzando con el reconocimiento de voz y python (6)
Me gustaría saber dónde se puede comenzar con el reconocimiento de voz. No con una biblioteca o algo que sea bastante "Black Box''ed" Pero en su lugar, quiero saber dónde puedo crear un sencillo script de reconocimiento de voz. He hecho algunas búsquedas y he encontrado, no mucho, pero lo que he visto es que hay diccionarios de ''sonidos'' o sílabas que se pueden juntar para formar un texto. Así que básicamente mi pregunta es ¿dónde puedo empezar con esto?
Además, como esto es un poco optimista, también estaría bien con una biblioteca (por ahora) para usar en mi programa. Vi que algunas bibliotecas y API de voz a texto emiten solo un resultado. Esto está bien, pero sería irrealizable. Mi programa actual ya verifica la gramática y todo el texto ingresado, de manera que si tuviera que decir, los diez primeros resultados del software de voz a texto, podría revisar cada uno y descartar cualquiera que no tenga sentido .
ACTUALIZACIÓN: esto ya no funciona
porque google cerró su plataforma
-
puede usar https://pypi.python.org/pypi/pygsr
$> pip install pygsr
ejemplo de uso:
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
Para aquellos que quieran profundizar en el tema del reconocimiento de voz en Python, aquí hay algunos enlaces:
- http://www.slideshare.net/mchua/sigproc-selfstudy-17323823 - procesamiento de señales en Python, incluida la señal de audio como la más interesante para jugar.
Pocketsphinx también es una buena alternativa. SWIG proporciona enlaces a Python que facilitan la integración en un script.
Por ejemplo:
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
Sé que la pregunta es vieja pero solo para personas en el futuro:
Uso el speech_recognition
-Módulo y me encanta. Lo único es que requiere Internet porque usa Google para reconocer el habla. Pero eso no debería ser un problema en la mayoría de los casos. El reconocimiento funciona casi a la perfección.
EDITAR:
El paquete speech_recognition
puede usar más que solo google para traducir, incluido CMUsphinx (que permite el reconocimiento fuera de línea), entre otros. La única diferencia es un cambio sutil en el comando de reconocimiento:
https://pypi.python.org/pypi/SpeechRecognition/
Aquí hay un pequeño ejemplo de código:
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")
Solo hay una cosa que no me funciona bien: escuchar en un bucle infinito. Después de unos minutos cuelga. (No se está estrellando, simplemente no está respondiendo).
EDITAR: Si desea usar Micrófono sin el bucle infinito, debe especificar la duración de la grabación. Código de ejemplo:
import speech_recognition as sr
r = sr.Recognizer()
with sr.Microphone() as source:
print("Speak:")
audio = r.listen(source, None, "time_to_record") # recording
Si realmente desea comprender el reconocimiento de voz desde cero, busque un buen paquete de procesamiento de señal para python y luego lea el reconocimiento de voz independientemente del software.
Pero el reconocimiento de voz es un problema extremadamente complejo (básicamente porque los sonidos interactúan de muchas formas cuando hablamos). Incluso si empiezas con la mejor biblioteca de reconocimiento de voz que puedes obtener, no te encontrarás con nada más que hacer.
Dragonfly proporciona un marco limpio para el reconocimiento de voz en Windows. Revise su Documentation por ejemplo de uso. Dado que no está buscando la gran escala de características que Dragonfly proporciona, es posible que desee echar un vistazo a la biblioteca de PySpeech ya no se mantiene.
Su código fuente parece fácil de entender y tal vez eso es lo que quieres ver al principio