Bibliothèque pour effectuer la reconnaissance vocale, avec prise en charge de plusieurs moteurs et API, en ligne et hors ligne.
MISE À JOUR 2022-02-09 : Salut tout le monde ! Ce projet a commencé comme une démonstration technique, mais ces jours-ci, il me faut plus de temps que nécessaire pour suivre tous les PR et tous les problèmes. Par conséquent, j'aimerais lancer une invitation ouverte aux collaborateurs - contactez-moi simplement à [email protected] si vous êtes intéressé !
Prise en charge du moteur de reconnaissance vocale/API :
Démarrage rapide : pip install SpeechRecognition
. Voir la section « Installation » pour plus de détails.
Pour l'essayer rapidement, exécutez python -m speech_recognition
après l'installation.
Liens du projet :
La bibliothèque fait référence à tous les objets accessibles au public dans la bibliothèque. Ce document est également inclus sous reference/library-reference.rst
.
Voir Notes sur l'utilisation de PocketSphinx pour plus d'informations sur l'installation de langues, la compilation de PocketSphinx et la création de modules linguistiques à partir de ressources en ligne. Ce document est également inclus sous reference/pocketsphinx.rst
.
Vous devez installer les modèles Vosk pour utiliser Vosk. Voici les modèles disponibles. Vous devez les placer dans le dossier models de votre projet, comme "votre-dossier-projet/models/votre-vosk-model"
Consultez le répertoire examples/
à la racine du référentiel pour des exemples d'utilisation :
recognizer_instance.energy_threshold
pour plus de détails)Tout d'abord, assurez-vous que vous disposez de toutes les exigences répertoriées dans la section « Exigences ».
Le moyen le plus simple d'installer ceci consiste à utiliser pip install SpeechRecognition
.
Sinon, téléchargez la distribution source depuis PyPI et extrayez l'archive.
Dans le dossier, exécutez python setup.py install
.
Pour utiliser toutes les fonctionnalités de la bibliothèque, vous devez disposer de :
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
)Les exigences suivantes sont facultatives, mais peuvent améliorer ou étendre les fonctionnalités dans certaines situations :
Les sections suivantes passent en revue les détails de chaque exigence.
La première configuration logicielle requise est Python 3.9+. Ceci est nécessaire pour utiliser la bibliothèque.
PyAudio est requis si et seulement si vous souhaitez utiliser l'entrée microphone ( Microphone
). La version 0.2.11+ de PyAudio est requise, car les versions antérieures connaissaient des bugs de gestion de la mémoire lors de l'enregistrement à partir de microphones dans certaines situations.
S'il n'est pas installé, tout ce qui se trouve dans la bibliothèque fonctionnera toujours, sauf que la tentative d'instancier un objet Microphone
déclenchera une AttributeError
.
Les instructions d'installation sur le site Web de PyAudio sont assez bonnes - pour plus de commodité, elles sont résumées ci-dessous :
pip install SpeechRecognition[audio]
dans un terminal.sudo apt-get install python-pyaudio python3-pyaudio
dans un terminal.sudo apt-get install portaudio19-dev python-all-dev python3-all-dev && sudo pip install SpeechRecognition[audio]
(remplacez pip
par pip3
si en utilisant Python 3).brew install portaudio
. Ensuite, installez avec PyAudio en utilisant Pip : pip install SpeechRecognition[audio]
.portaudio19-dev
et python-all-dev
(ou python3-all-dev
si vous utilisez Python 3) (ou leurs équivalents les plus proches) à l'aide d'un gestionnaire de packages de votre choix, puis installez avec PyAudio. en utilisant Pip : pip install SpeechRecognition[audio]
(remplacez pip
par pip3
si vous utilisez Python 3). Les packages de roues PyAudio pour les versions Python 64 bits courantes sur Windows et Linux sont inclus pour plus de commodité, sous le répertoire third-party/
de la racine du référentiel. Pour installer, exécutez simplement pip install wheel
suivi de pip install ./third-party/WHEEL_FILENAME
(remplacez pip
par pip3
si vous utilisez Python 3) dans le répertoire racine du référentiel.
PocketSphinx-Python est requis si et seulement si vous souhaitez utiliser le module de reconnaissance Sphinx ( recognizer_instance.recognize_sphinx
).
Les packages de roues PocketSphinx-Python pour Python 3.4 et 3.5 64 bits sous Windows sont inclus pour plus de commodité, sous le répertoire third-party/
. Pour installer, exécutez simplement pip install wheel
suivi de pip install ./third-party/WHEEL_FILENAME
(remplacez pip
par pip3
si vous utilisez Python 3) dans le dossier SpeechRecognition.
Sous Linux et d'autres systèmes POSIX (tels que OS X), exécutez pip install SpeechRecognition[pocketsphinx]
. Suivez les instructions sous « Création de PocketSphinx-Python à partir des sources » dans Notes sur l'utilisation de PocketSphinx pour les instructions d'installation.
Notez que les versions disponibles dans la plupart des référentiels de packages sont obsolètes et ne fonctionneront pas avec les données linguistiques groupées. Il est recommandé d'utiliser les packages de roues fournis ou de créer à partir des sources.
Voir Notes sur l'utilisation de PocketSphinx pour plus d'informations sur l'installation de langues, la compilation de PocketSphinx et la création de modules linguistiques à partir de ressources en ligne. Ce document est également inclus sous reference/pocketsphinx.rst
.
L'API Vosk est requise si et seulement si vous souhaitez utiliser le module de reconnaissance Vosk ( recognizer_instance.recognize_vosk
).
Vous pouvez l'installer avec python3 -m pip install vosk
.
Vous devez également installer les modèles Vosk :
Voici les modèles disponibles en téléchargement. Vous devez les placer dans le dossier models de votre projet, comme "votre-dossier-projet/models/votre-vosk-model"
La bibliothèque Google Cloud Speech pour Python est requise si et seulement si vous souhaitez utiliser l'API Google Cloud Speech ( recognizer_instance.recognize_google_cloud
).
S'il n'est pas installé, tout ce qui se trouve dans la bibliothèque fonctionnera toujours, sauf que l'appel de recognizer_instance.recognize_google_cloud
déclenchera une RequestError
.
Selon les instructions d'installation officielles, la méthode recommandée pour l'installer consiste à utiliser Pip : exécutez pip install google-cloud-speech
(remplacez pip
par pip3
si vous utilisez Python 3).
Un encodeur FLAC est requis pour encoder les données audio à envoyer à l'API. Si vous utilisez Windows (x86 ou x86-64), OS X (Mac Intel uniquement, OS X 10.6 ou supérieur) ou Linux (x86 ou x86-64), ceci est déjà fourni avec cette bibliothèque - vous n'avez pas besoin d'installer quoi que ce soit. .
Sinon, assurez-vous de disposer de l'outil de ligne de commande flac
, qui est souvent disponible via le gestionnaire de packages système. Par exemple, ce serait généralement sudo apt-get install flac
sur les dérivés Debian, ou brew install flac
sur OS X avec Homebrew.
Whisper est requis si et seulement si vous souhaitez utiliser Whisper ( recognizer_instance.recognize_whisper
).
Vous pouvez l'installer avec python3 -m pip install SpeechRecognition[whisper-local]
.
La bibliothèque openai est requise si et seulement si vous souhaitez utiliser l'API OpenAI Whisper ( recognizer_instance.recognize_openai
).
Vous pouvez l'installer avec python3 -m pip install SpeechRecognition[openai]
.
Veuillez définir la variable d'environnement OPENAI_API_KEY
avant d'appeler recognizer_instance.recognize_openai
.
La bibliothèque groq est requise si et seulement si vous souhaitez utiliser l'API Groq Whisper ( recognizer_instance.recognize_groq
).
Vous pouvez l'installer avec python3 -m pip install SpeechRecognition[groq]
.
Veuillez définir la variable d'environnement GROQ_API_KEY
avant d'appeler recognizer_instance.recognize_groq
.
Essayez d'augmenter la propriété recognizer_instance.energy_threshold
. Il s'agit essentiellement de la sensibilité du module de reconnaissance au moment où la reconnaissance doit commencer. Des valeurs plus élevées signifient qu'il sera moins sensible, ce qui est utile si vous êtes dans une pièce bruyante.
Cette valeur dépend entièrement de votre microphone ou de vos données audio. Il n’existe pas de valeur universelle, mais les bonnes valeurs varient généralement entre 50 et 4 000.
Vérifiez également les paramètres de volume de votre microphone. S'il est trop sensible, le microphone peut capter beaucoup de bruit ambiant. S'il est trop insensible, le microphone peut rejeter la parole comme étant simplement du bruit.
La propriété recognizer_instance.energy_threshold
est probablement définie sur une valeur trop élevée pour commencer, puis ajustée automatiquement à la baisse par l'ajustement dynamique du seuil d'énergie. Avant d’atteindre un bon niveau, le seuil énergétique est si élevé que la parole n’est considérée que comme un bruit ambiant.
La solution est de diminuer ce seuil, ou d'appeler au préalable recognizer_instance.adjust_for_ambient_noise
, ce qui fixera automatiquement le seuil à une bonne valeur.
Essayez de définir la langue de reconnaissance sur votre langue/dialecte. Pour ce faire, consultez la documentation 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
et recognizer_instance.recognize_ibm
.
Par exemple, si votre langue/dialecte est l'anglais britannique, il est préférable d'utiliser "en-GB"
comme langue plutôt que "en-US"
.
recognizer_instance.listen
; plus précisément, lorsqu'il appelle Microphone.MicrophoneStream.read
.Cela se produit généralement lorsque vous utilisez une carte Raspberry Pi, qui ne dispose pas de capacités d'entrée audio en elle-même. Cela provoque le blocage du microphone par défaut utilisé par PyAudio lorsque nous essayons de le lire. Si vous utilisez un Raspberry Pi, vous aurez besoin d'une carte son USB (ou d'un microphone USB).
Une fois cela fait, remplacez toutes les instances de Microphone()
par Microphone(device_index=MICROPHONE_INDEX)
, où MICROPHONE_INDEX
est l'index spécifique au matériel du microphone.
Pour déterminer quelle devrait être la valeur de MICROPHONE_INDEX
, exécutez le code suivant :
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 ))
Cela affichera quelque chose comme ce qui suit :
Microphone portant le nom « HDA Intel HDMI : 0 (hw:0,3) » trouvé pour « Microphone(device_index=0) » Microphone portant le nom « HDA Intel HDMI : 1 (hw:0,7) » trouvé pour « Microphone(device_index=1) » Microphone portant le nom « HDA Intel HDMI : 2 (hw:0,8) » trouvé pour « Microphone(device_index=2) » Microphone portant le nom « Blue Snowball : USB Audio (hw:1,0) » trouvé pour « Microphone(device_index=3) » Microphone portant le nom "hdmi" trouvé pour `Microphone(device_index=4)` Microphone portant le nom "pulse" trouvé pour `Microphone(device_index=5)` Microphone portant le nom « par défaut » trouvé pour « Microphone(device_index=6) »
Maintenant, pour utiliser le microphone Snowball, vous devez remplacer Microphone()
par Microphone(device_index=3)
.
Microphone()
donne l’erreur IOError: No Default Input Device Available
.Comme l'indique l'erreur, le programme ne sait pas quel microphone utiliser.
Pour continuer, utilisez Microphone(device_index=MICROPHONE_INDEX, ...)
au lieu de Microphone(...)
, ou définissez un microphone par défaut dans votre système d'exploitation. Vous pouvez obtenir les valeurs possibles de MICROPHONE_INDEX
en utilisant le code dans l'entrée de dépannage juste au-dessus de celle-ci.
Depuis la version 3.0 de PyInstaller, SpeechRecognition est pris en charge dès le départ. Si vous rencontrez des problèmes étranges lors de la compilation de votre programme à l'aide de PyInstaller, mettez simplement à jour PyInstaller.
Vous pouvez facilement le faire en exécutant pip install --upgrade pyinstaller
.
L'erreur "bt_audio_service_open" signifie que vous disposez d'un périphérique audio Bluetooth, mais comme aucun périphérique physique n'est actuellement connecté, nous ne pouvons pas réellement l'utiliser - si vous n'utilisez pas de microphone Bluetooth, cela peut être ignoré en toute sécurité. Si c’est le cas et que l’audio ne fonctionne pas, vérifiez à nouveau que votre microphone est réellement connecté. Il ne semble pas exister de moyen simple de désactiver ces messages.
Pour les erreurs du type "ALSA lib [...] Unknown PCM", consultez cette réponse StackOverflow. Fondamentalement, pour vous débarrasser d'une erreur du type "Unknown PCM cards.pcm.rear", commentez simplement pcm.rear cards.pcm.rear
dans /usr/share/alsa/alsa.conf
, ~/.asoundrc
, et /etc/asound.conf
.
Pour "le serveur Jack ne fonctionne pas ou ne peut pas être démarré" ou "l'appel connect(2) à /dev/shm/jack-1000/default/jack_0 a échoué (err=Aucun fichier ou répertoire de ce type)" ou "tentative de connexion au serveur échec", ceux-ci sont causés par ALSA essayant de se connecter à JACK et peuvent être ignorés en toute sécurité. Je ne connais aucun moyen simple de désactiver ces messages pour le moment, mis à part la désactivation complète de l'impression lors du démarrage du microphone.
ChildProcessError
indiquant qu'il n'a pas pu trouver le convertisseur FLAC du système, même s'il est installé.L'installation de FLAC pour OS X directement à partir du code source ne fonctionnera pas, car elle n'ajoute pas correctement les exécutables au chemin de recherche.
L'installation de FLAC à l'aide de Homebrew garantit que le chemin de recherche est correctement mis à jour. Tout d’abord, assurez-vous d’avoir Homebrew, puis exécutez brew install flac
pour installer les fichiers nécessaires.
Pour pirater cette bibliothèque, assurez-vous d'abord d'avoir toutes les exigences répertoriées dans la section "Exigences".
speech_recognition/__init__.py
.examples/
et le script de démonstration se trouve dans speech_recognition/__main__.py
.speech_recognition/
.reference/
.third-party/
. Pour installer/réinstaller la bibliothèque localement, exécutez python -m pip install -e .[dev]
dans le répertoire racine du projet.
Avant une version, le numéro de version est remplacé dans README.rst
et speech_recognition/__init__.py
. Les balises de version sont ensuite créées à l'aide de git config gpg.program gpg2 && git config user.signingkey DB45F6C431DE7C2DCD99FF7904882258A4063489 && git tag -s VERSION_GOES_HERE -m "Version VERSION_GOES_HERE"
.
Les versions sont effectuées en exécutant make-release.sh VERSION_GOES_HERE
pour créer les packages sources Python, les signer et les télécharger sur PyPI.
Pour exécuter tous les tests :
python -m unittest discover --verbose
Pour exécuter une analyse statique :
python -m flake8 --ignore=E501,E701,W503 speech_recognition tests examples setup.py
Pour garantir que RST est bien formé :
python -m rstcheck README.rst reference/ * .rst
Les tests sont également effectués automatiquement par GitHub Actions, à chaque poussée.
L'exécutable flac-win32
inclus est le binaire Windows officiel FLAC 1.3.2 32 bits.
Les exécutables flac-linux-x86
et flac-linux-x86_64
inclus sont construits à partir du code source FLAC 1.3.2 avec Manylinux pour garantir leur compatibilité avec une grande variété de distributions.
Les exécutables FLAC construits doivent être reproductibles bit par bit. Pour les reconstruire, exécutez ce qui suit dans le répertoire du projet sur un système de type 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/
L'exécutable flac-mac
inclus est extrait de xACT 2.39, qui est une interface pour FLAC 1.3.2 qui inclut commodément des binaires pour tous ses encodeurs. Plus précisément, il s'agit d'une copie de xACT 2.39/xACT.app/Contents/Resources/flac
dans xACT2.39.zip
.
Uberi <[email protected]> (Anthony Zhang) bobsayshilol arvindch <[email protected]> (Arvind Chembarpu) kevinismith <[email protected]> (Kevin Smith) haas85 DelightRun <[email protected]> non-conformiste kamushadenes <[email protected]> (Kamus Hadenes) sbraden <[email protected]> (Sarah Braden) tb0hdan (Bohdan Turkynewych) Thynix <[email protected]> (Steve Dougherty) beeedy <[email protected]> (Broderick Carlin)
Veuillez signaler les bugs et les suggestions sur le système de suivi des problèmes !
Comment citer cette bibliothèque (style APA) :
Zhang, A. (2017). Reconnaissance vocale (Version 3.11) [Logiciel]. Disponible sur https://github.com/Uberi/speech_recognition#readme.
Comment citer cette bibliothèque (style Chicago) :
Zhang, Antoine. 2017. Reconnaissance vocale (version 3.11).
Consultez également l'API Python Baidu Yuyin, qui est basée sur une ancienne version de ce projet et ajoute la prise en charge de Baidu Yuyin. Notez que Baidu Yuyin n’est disponible qu’en Chine.
Copyright 2014-2017 Anthony Zhang (Uberi). Le code source de cette bibliothèque est disponible en ligne sur GitHub.
SpeechRecognition est disponible sous la licence BSD à 3 clauses. Voir LICENSE.txt
dans le répertoire racine du projet pour plus d'informations.
Pour plus de commodité, toutes les distributions officielles de SpeechRecognition incluent déjà une copie des avis de droits d'auteur et des licences nécessaires. Dans votre projet, vous pouvez simplement indiquer que les informations de licence pour SpeechRecognition peuvent être trouvées dans le fichier README de SpeechRecognition et vous assurer que SpeechRecognition est visible pour les utilisateurs s'ils souhaitent le voir .
SpeechRecognition distribue le code source, les binaires et les fichiers de langue de CMU Sphinx. Ces fichiers sont sous licence BSD et redistribuables tant que les mentions de droits d'auteur sont correctement conservées. Voir speech_recognition/pocketsphinx-data/*/LICENSE*.txt
et third-party/LICENSE-Sphinx.txt
pour les détails de licence pour les pièces individuelles.
SpeechRecognition distribue le code source et les binaires de PyAudio. Ces fichiers sont sous licence MIT et redistribuables tant que les mentions de droits d'auteur sont correctement conservées. Voir third-party/LICENSE-PyAudio.txt
pour les détails de la licence.
SpeechRecognition distribue les binaires de FLAC - speech_recognition/flac-win32.exe
, speech_recognition/flac-linux-x86
et speech_recognition/flac-mac
. Ces fichiers sont sous licence GPLv2 et redistribuables, tant que les termes de la GPL sont respectés. Les binaires FLAC sont un agrégat de programmes distincts, donc ces restrictions GPL ne s'appliquent pas à la bibliothèque ou à vos programmes qui utilisent la bibliothèque, mais uniquement à FLAC lui-même. Voir LICENSE-FLAC.txt
pour les détails de la licence.