Biblioteca para realizar reconocimiento de voz, con soporte para varios motores y API, online y offline.
ACTUALIZACIÓN 2022-02-09 : ¡Hola a todos! Este proyecto comenzó como una demostración técnica, pero hoy en día necesita más tiempo del que tengo para mantenerme al día con todas las relaciones públicas y los problemas. Por lo tanto, me gustaría publicar una invitación abierta para colaboradores ; ¡simplemente comuníquese con [email protected] si está interesado!
Compatibilidad con motor de reconocimiento de voz/API:
Inicio rápido: pip install SpeechRecognition
. Consulte la sección "Instalación" para obtener más detalles.
Para probarlo rápidamente, ejecute python -m speech_recognition
después de la instalación.
Enlaces del proyecto:
La referencia de la biblioteca documenta todos los objetos de acceso público de la biblioteca. Este documento también se incluye en reference/library-reference.rst
.
Consulte Notas sobre el uso de PocketSphinx para obtener información sobre cómo instalar idiomas, compilar PocketSphinx y crear paquetes de idiomas a partir de recursos en línea. Este documento también se incluye en reference/pocketsphinx.rst
.
Tienes que instalar los modelos de Vosk para usar Vosk. Aquí hay modelos disponibles. Tienes que colocarlos en la carpeta de modelos de tu proyecto, como "carpeta-de-tu-proyecto/modelos/tu-modelo-vosk"
Consulte el directorio examples/
en la raíz del repositorio para ver ejemplos de uso:
recognizer_instance.energy_threshold
para obtener más detalles)Primero, asegúrese de tener todos los requisitos enumerados en la sección "Requisitos".
La forma más sencilla de instalar esto es utilizar pip install SpeechRecognition
.
De lo contrario, descargue la distribución fuente de PyPI y extraiga el archivo.
En la carpeta, ejecute python setup.py install
.
Para utilizar todas las funciones de la biblioteca, debe tener:
Microphone
)recognizer_instance.recognize_sphinx
)recognizer_instance.recognize_google_cloud
)recognizer_instance.recognize_vosk
)recognizer_instance.recognize_whisper
)recognizer_instance.recognize_openai
)recognizer_instance.recognize_groq
)Los siguientes requisitos son opcionales, pero pueden mejorar o ampliar la funcionalidad en algunas situaciones:
Las siguientes secciones repasan los detalles de cada requisito.
El primer requisito de software es Python 3.9+. Esto es necesario para utilizar la biblioteca.
Se requiere PyAudio si y solo si desea utilizar la entrada de micrófono ( Microphone
). Se requiere la versión 0.2.11+ de PyAudio, ya que las versiones anteriores han conocido errores de administración de memoria al grabar desde micrófonos en ciertas situaciones.
Si no está instalado, todo en la biblioteca seguirá funcionando, excepto que intentar crear una instancia de un objeto Microphone
generará un AttributeError
.
Las instrucciones de instalación en el sitio web de PyAudio son bastante buenas; para mayor comodidad, se resumen a continuación:
pip install SpeechRecognition[audio]
en una terminal.sudo apt-get install python-pyaudio python3-pyaudio
en una terminal.sudo apt-get install portaudio19-dev python-all-dev python3-all-dev && sudo pip install SpeechRecognition[audio]
(reemplace pip
con pip3
si usando Python 3).brew install portaudio
. Luego, instale con PyAudio usando Pip: pip install SpeechRecognition[audio]
.portaudio19-dev
y python-all-dev
(o python3-all-dev
si usa Python 3) (o sus equivalentes más cercanos) usando un administrador de paquetes de su elección, y luego instálelo con PyAudio usando Pip: pip install SpeechRecognition[audio]
(reemplace pip
con pip3
si usa Python 3). Los paquetes de rueda de PyAudio para versiones comunes de Python de 64 bits en Windows y Linux se incluyen para mayor comodidad, en el directorio third-party/
en la raíz del repositorio. Para instalar, simplemente ejecute pip install wheel
seguido de pip install ./third-party/WHEEL_FILENAME
(reemplace pip
con pip3
si usa Python 3) en el directorio raíz del repositorio.
Se requiere PocketSphinx-Python si y solo si desea utilizar el reconocedor Sphinx ( recognizer_instance.recognize_sphinx
).
Los paquetes de rueda PocketSphinx-Python para Python 3.4 de 64 bits y 3.5 en Windows se incluyen para mayor comodidad, en el directorio third-party/
. Para instalar, simplemente ejecute pip install wheel
seguido de pip install ./third-party/WHEEL_FILENAME
(reemplace pip
con pip3
si usa Python 3) en la carpeta SpeechRecognition.
En Linux y otros sistemas POSIX (como OS X), ejecute pip install SpeechRecognition[pocketsphinx]
. Siga las instrucciones en "Construcción de PocketSphinx-Python desde el código fuente" en Notas sobre el uso de PocketSphinx para obtener instrucciones de instalación.
Tenga en cuenta que las versiones disponibles en la mayoría de los repositorios de paquetes están desactualizadas y no funcionarán con los datos de idioma incluidos. Se recomienda utilizar los paquetes de ruedas incluidos o compilar desde el código fuente.
Consulte Notas sobre el uso de PocketSphinx para obtener información sobre cómo instalar idiomas, compilar PocketSphinx y crear paquetes de idiomas a partir de recursos en línea. Este documento también se incluye en reference/pocketsphinx.rst
.
Se requiere la API de Vosk si y solo si desea utilizar el reconocedor de Vosk ( recognizer_instance.recognize_vosk
).
Puedes instalarlo con python3 -m pip install vosk
.
También tienes que instalar Vosk Models:
Aquí hay modelos disponibles para descargar. Tienes que colocarlos en la carpeta de modelos de tu proyecto, como "carpeta-de-tu-proyecto/modelos/tu-modelo-vosk"
Se requiere la biblioteca de Google Cloud Speech para Python si y solo si desea utilizar la API de Google Cloud Speech ( recognizer_instance.recognize_google_cloud
).
Si no está instalado, todo lo que hay en la biblioteca seguirá funcionando, excepto que llamar recognizer_instance.recognize_google_cloud
generará un RequestError
.
De acuerdo con las instrucciones de instalación oficiales, la forma recomendada de instalar esto es usando Pip: ejecute pip install google-cloud-speech
(reemplace pip
con pip3
si usa Python 3).
Se requiere un codificador FLAC para codificar los datos de audio y enviarlos a la API. Si usa Windows (x86 o x86-64), OS X (solo Intel Mac, OS X 10.6 o superior) o Linux (x86 o x86-64), esto ya viene incluido con esta biblioteca; no necesita instalar nada. .
De lo contrario, asegúrese de tener la herramienta de línea de comandos flac
, que suele estar disponible a través del administrador de paquetes del sistema. Por ejemplo, esto normalmente sería sudo apt-get install flac
en derivados de Debian, o brew install flac
en OS X con Homebrew.
Whisper es necesario si y sólo si desea utilizar susurro ( recognizer_instance.recognize_whisper
).
Puedes instalarlo con python3 -m pip install SpeechRecognition[whisper-local]
.
La biblioteca openai es necesaria si y solo si desea utilizar OpenAI Whisper API ( recognizer_instance.recognize_openai
).
Puedes instalarlo con python3 -m pip install SpeechRecognition[openai]
.
Configure la variable de entorno OPENAI_API_KEY
antes de llamar recognizer_instance.recognize_openai
.
La biblioteca groq es necesaria si y solo si desea utilizar Groq Whisper API ( recognizer_instance.recognize_groq
).
Puedes instalarlo con python3 -m pip install SpeechRecognition[groq]
.
Configure la variable de entorno GROQ_API_KEY
antes de llamar recognizer_instance.recognize_groq
.
Intente aumentar la propiedad recognizer_instance.energy_threshold
. Esto es básicamente cuán sensible es el reconocedor a cuándo debe comenzar el reconocimiento. Los valores más altos significan que será menos sensible, lo cual resulta útil si se encuentra en una habitación ruidosa.
Este valor depende completamente de su micrófono o datos de audio. No existe un valor único para todos, pero los buenos valores suelen oscilar entre 50 y 4000.
Además, verifique la configuración de volumen de su micrófono. Si es demasiado sensible, es posible que el micrófono esté captando mucho ruido ambiental. Si es demasiado insensible, es posible que el micrófono rechace el habla como si fuera simplemente ruido.
La propiedad recognizer_instance.energy_threshold
probablemente esté configurada en un valor demasiado alto para comenzar y luego se ajuste a un valor más bajo automáticamente mediante un ajuste dinámico del umbral de energía. Antes de alcanzar un buen nivel, el umbral de energía es tan alto que el habla se considera simplemente ruido ambiental.
La solución es disminuir este umbral o llamar a recognizer_instance.adjust_for_ambient_noise
de antemano, lo que establecerá el umbral en un buen valor automáticamente.
Intente configurar el idioma de reconocimiento en su idioma/dialecto. Para hacer esto, consulte la documentación de recognizer_instance.recognize_sphinx
, recognizer_instance.recognize_google
, recognizer_instance.recognize_wit
, recognizer_instance.recognize_bing
, recognizer_instance.recognize_api
, recognizer_instance.recognize_houndify
y recognizer_instance.recognize_ibm
.
Por ejemplo, si su idioma/dialecto es el inglés británico, es mejor utilizar "en-GB"
como idioma en lugar de "en-US"
.
recognizer_instance.listen
; específicamente, cuando llama a Microphone.MicrophoneStream.read
.Esto suele suceder cuando utilizas una placa Raspberry Pi, que por sí sola no tiene capacidades de entrada de audio. Esto hace que el micrófono predeterminado utilizado por PyAudio simplemente se bloquee cuando intentamos leerlo. Si está utilizando una Raspberry Pi, necesitará una tarjeta de sonido USB (o un micrófono USB).
Una vez que haga esto, cambie todas las instancias de Microphone()
a Microphone(device_index=MICROPHONE_INDEX)
, donde MICROPHONE_INDEX
es el índice específico del hardware del micrófono.
Para averiguar cuál debería ser el valor de MICROPHONE_INDEX
, ejecute el siguiente código:
import speech_recognition as sr
for index , name in enumerate ( sr . Microphone . list_microphone_names ()):
print ( "Microphone with name " {1} " found for `Microphone(device_index={0})`" . format ( index , name ))
Esto imprimirá algo como lo siguiente:
Micrófono con nombre "HDA Intel HDMI: 0 (hw:0,3)" encontrado para `Micrófono(device_index=0)` Micrófono con nombre "HDA Intel HDMI: 1 (hw:0,7)" encontrado para `Micrófono(device_index=1)` Micrófono con nombre "HDA Intel HDMI: 2 (hw:0,8)" encontrado para `Micrófono(device_index=2)` Micrófono con el nombre "Blue Snowball: USB Audio (hw:1,0)" encontrado para `Micrófono(device_index=3)` Micrófono con nombre "hdmi" encontrado para `Micrófono(device_index=4)` Micrófono con nombre "pulso" encontrado para `Micrófono(device_index=5)` Micrófono con nombre "predeterminado" encontrado para `Micrófono(device_index=6)`
Ahora, para usar el micrófono Snowball, cambiarías Microphone()
a Microphone(device_index=3)
.
Microphone()
aparece el error IOError: No Default Input Device Available
.Como dice el error, el programa no sabe qué micrófono usar.
Para continuar, use Microphone(device_index=MICROPHONE_INDEX, ...)
en lugar de Microphone(...)
o configure un micrófono predeterminado en su sistema operativo. Puede obtener posibles valores de MICROPHONE_INDEX
utilizando el código en la entrada de solución de problemas justo encima de este.
A partir de la versión 3.0 de PyInstaller, SpeechRecognition es compatible desde el primer momento. Si tiene problemas extraños al compilar su programa usando PyInstaller, simplemente actualice PyInstaller.
Puedes hacer esto fácilmente ejecutando pip install --upgrade pyinstaller
.
El error "bt_audio_service_open" significa que tienes un dispositivo de audio Bluetooth, pero como no hay ningún dispositivo físico conectado actualmente, no podemos usarlo; si no estás usando un micrófono Bluetooth, puedes ignorarlo de manera segura. Si es así y el audio no funciona, verifique dos veces para asegurarse de que su micrófono esté realmente conectado. No parece haber una forma sencilla de desactivar estos mensajes.
Para errores del tipo "ALSA lib [...] PCM desconocido", consulte esta respuesta de StackOverflow. Básicamente, para deshacerse de un error del tipo "Tarjetas PCM desconocidas.pcm.rear", simplemente comente pcm.rear cards.pcm.rear
en /usr/share/alsa/alsa.conf
, ~/.asoundrc
y /etc/asound.conf
.
Para "el servidor jack no se está ejecutando o no se puede iniciar" o "la llamada connect(2) a /dev/shm/jack-1000/default/jack_0 falló (err=No existe tal archivo o directorio)" o "intento de conectarse al servidor falló", estos se deben a que ALSA intenta conectarse a JACK y se pueden ignorar de forma segura. No conozco ninguna forma sencilla de desactivar esos mensajes en este momento, además de desactivar por completo la impresión al iniciar el micrófono.
ChildProcessError
que dice que no pudo encontrar el convertidor FLAC del sistema, aunque esté instalado.Instalar FLAC para OS X directamente desde el código fuente no funcionará, ya que no agrega correctamente los ejecutables a la ruta de búsqueda.
La instalación de FLAC con Homebrew garantiza que la ruta de búsqueda se actualice correctamente. Primero, asegúrese de tener Homebrew, luego ejecute brew install flac
para instalar los archivos necesarios.
Para piratear esta biblioteca, primero asegúrese de tener todos los requisitos enumerados en la sección "Requisitos".
speech_recognition/__init__.py
.examples/
y el script de demostración se encuentra en speech_recognition/__main__.py
.speech_recognition/
.reference/
directorio.third-party/
. Para instalar/reinstalar la biblioteca localmente, ejecute python -m pip install -e .[dev]
en el directorio raíz del proyecto.
Antes de un lanzamiento, el número de versión aparece en README.rst
y speech_recognition/__init__.py
. Luego, las etiquetas de versión se crean usando git config gpg.program gpg2 && git config user.signingkey DB45F6C431DE7C2DCD99FF7904882258A4063489 && git tag -s VERSION_GOES_HERE -m "Version VERSION_GOES_HERE"
.
Las versiones se realizan ejecutando make-release.sh VERSION_GOES_HERE
para compilar los paquetes fuente de Python, firmarlos y cargarlos en PyPI.
Para ejecutar todas las pruebas:
python -m unittest discover --verbose
Para ejecutar un análisis estático:
python -m flake8 --ignore=E501,E701,W503 speech_recognition tests examples setup.py
Para garantizar que RST esté bien formado:
python -m rstcheck README.rst reference/ * .rst
Las pruebas también se realizan automáticamente mediante GitHub Actions, cada vez que se presiona.
El ejecutable flac-win32
incluido es el binario oficial de Windows FLAC 1.3.2 de 32 bits.
Los ejecutables flac-linux-x86
y flac-linux-x86_64
incluidos se crean a partir del código fuente FLAC 1.3.2 con Manylinux para garantizar que sea compatible con una amplia variedad de distribuciones.
Los ejecutables FLAC creados deben ser reproducibles bit a bit. Para reconstruirlos, ejecute lo siguiente dentro del directorio del proyecto en un sistema tipo Debian:
# download and extract the FLAC source code
cd third-party
sudo apt-get install --yes docker.io
# build FLAC inside the Manylinux i686 Docker image
tar xf flac-1.3.2.tar.xz
sudo docker run --tty --interactive --rm --volume " $( pwd ) :/root " quay.io/pypa/manylinux1_i686:latest bash
cd /root/flac-1.3.2
./configure LDFLAGS=-static # compiler flags to make a static build
make
exit
cp flac-1.3.2/src/flac/flac ../speech_recognition/flac-linux-x86 && sudo rm -rf flac-1.3.2/
# build FLAC inside the Manylinux x86_64 Docker image
tar xf flac-1.3.2.tar.xz
sudo docker run --tty --interactive --rm --volume " $( pwd ) :/root " quay.io/pypa/manylinux1_x86_64:latest bash
cd /root/flac-1.3.2
./configure LDFLAGS=-static # compiler flags to make a static build
make
exit
cp flac-1.3.2/src/flac/flac ../speech_recognition/flac-linux-x86_64 && sudo rm -r flac-1.3.2/
El ejecutable flac-mac
incluido se extrae de xACT 2.39, que es una interfaz para FLAC 1.3.2 que incluye convenientemente binarios para todos sus codificadores. Específicamente, es una copia de xACT 2.39/xACT.app/Contents/Resources/flac
en xACT2.39.zip
.
Uberi <[email protected]> (Anthony Zhang) bobsayshilol arvindch <[email protected]> (Arvind Chembarpu) kevinismith <[email protected]> (Kevin Smith) haas85 DelightRun <[email protected]> maverickagm kamushadenes <[email protected]> (Kamus Hadenes) sbraden <[email protected]> (Sarah Braden) tb0hdan (Bohdan Turkynewych) Thynix <[email protected]> (Steve Dougherty) beeedy <[email protected]> (Broderick Carlin)
¡Informe errores y sugerencias en el rastreador de problemas!
Cómo citar esta biblioteca (estilo APA):
Zhang, A. (2017). Reconocimiento de voz (Versión 3.11) [Software]. Disponible en https://github.com/Uberi/speech_recognition#readme.
Cómo citar esta biblioteca (estilo Chicago):
Zhang, Antonio. 2017. Reconocimiento de voz (versión 3.11).
Consulte también la API Python Baidu Yuyin, que se basa en una versión anterior de este proyecto y agrega soporte para Baidu Yuyin. Tenga en cuenta que Baidu Yuyin sólo está disponible dentro de China.
Copyright 2014-2017 Anthony Zhang (Uberi). El código fuente de esta biblioteca está disponible en línea en GitHub.
SpeechRecognition está disponible bajo la licencia BSD de 3 cláusulas. Consulte LICENSE.txt
en el directorio raíz del proyecto para obtener más información.
Para mayor comodidad, todas las distribuciones oficiales de SpeechRecognition ya incluyen una copia de las licencias y avisos de derechos de autor necesarios. En su proyecto, puede simplemente decir que la información de licencia de SpeechRecognition se puede encontrar en el archivo README de SpeechRecognition y asegurarse de que SpeechRecognition sea visible para los usuarios si así lo desean .
SpeechRecognition distribuye código fuente, binarios y archivos de idioma de CMU Sphinx. Estos archivos tienen licencia BSD y son redistribuibles siempre que se conserven correctamente los avisos de derechos de autor. Consulte speech_recognition/pocketsphinx-data/*/LICENSE*.txt
third-party/LICENSE-Sphinx.txt
para obtener detalles de la licencia de piezas individuales.
SpeechRecognition distribuye código fuente y binarios de PyAudio. Estos archivos tienen licencia del MIT y son redistribuibles siempre que se conserven correctamente los avisos de derechos de autor. Consulte third-party/LICENSE-PyAudio.txt
para obtener detalles de la licencia.
SpeechRecognition distribuye archivos binarios de FLAC: speech_recognition/flac-win32.exe
, speech_recognition/flac-linux-x86
y speech_recognition/flac-mac
. Estos archivos tienen licencia GPLv2 y son redistribuibles, siempre que se cumplan los términos de la GPL. Los binarios de FLAC son un agregado de programas separados, por lo que estas restricciones de GPL no se aplican a la biblioteca ni a los programas que usan la biblioteca, solo al FLAC mismo. Consulte LICENSE-FLAC.txt
para obtener detalles sobre la licencia.