SpeechRecognition : Une bibliothèque Python complète pour la reconnaissance vocale

Découvrez SpeechRecognition, une bibliothèque Python polyvalente prenant en charge plusieurs moteurs et API de reconnaissance vocale, en ligne et hors ligne, avec des exemples pratiques et des conseils de dépannage.

Introduction

La reconnaissance vocale est un composant essentiel dans de nombreuses applications modernes, des assistants virtuels et services de transcription aux outils d'accessibilité et aux flux de travail automatisés. La bibliothèque SpeechRecognition pour Python fournit une interface unifiée pour une large gamme de moteurs et d'API de reconnaissance vocale, facilitant l'intégration de capacités de synthèse vocale dans vos projets. Que vous ayez besoin d'une reconnaissance hors ligne avec CMU Sphinx ou d'une précision basée sur le cloud avec Google, Azure ou OpenAI Whisper, cette bibliothèque répond à vos besoins.

Moteurs et API pris en charge

SpeechRecognition prend en charge un ensemble diversifié de backends, vous permettant de choisir la meilleure solution pour votre cas d'utilisation :

  • Moteurs hors ligne :

    • CMU Sphinx (PocketSphinx) : Fonctionne entièrement hors ligne, idéal pour les applications sensibles à la vie privée ou à faible latence.
    • API Vosk : Une autre option hors ligne avec prise en charge de plusieurs langues.
    • Whisper (local) : Le modèle Whisper d'OpenAI peut être exécuté localement pour une transcription de haute qualité sans Internet.
    • Faster Whisper : Une version plus optimisée de Whisper pour une inférence plus rapide.
    • Détection de mot-clé Snowboy : Pour la détection de mots de réveil (hors ligne).
  • API cloud :

    • Reconnaissance vocale Google : Niveau gratuit disponible, facile à utiliser.
    • API Google Cloud Speech : Plus précise et personnalisable, nécessite une authentification.
    • Microsoft Azure Speech : Reconnaissance de niveau entreprise.
    • Wit.ai : L'API vocale de Facebook.
    • Houndify : L'API de SoundHound.
    • IBM Speech to Text : L'offre d'IBM Watson.
    • API OpenAI Whisper : Whisper basé sur le cloud avec une haute précision.
    • API Groq Whisper : Inférence rapide via le matériel Groq.
    • API Cohere Transcribe : Le service de transcription de Cohere.
  • Points de terminaison auto-hébergés :

    • Prend en charge les points de terminaison compatibles OpenAI comme vLLM et Ollama, vous offrant la flexibilité d'exécuter votre propre serveur d'inférence.

Pour commencer

L'installation est simple avec pip :

pip install SpeechRecognition

Pour tester rapidement, exécutez :

python -m speech_recognition

Cela utilisera votre microphone par défaut et tentera de reconnaître la parole à l'aide de l'API gratuite de Google.

Exemples d'utilisation de base

Reconnaître la parole à partir d'un microphone

import speech_recognition as sr

# Initialiser le reconnaisseur
r = sr.Recognizer()

# Utiliser le microphone par défaut comme source
with sr.Microphone() as source:
    print("Dites quelque chose !")
    audio = r.listen(source)

# Reconnaître la parole à l'aide de la reconnaissance vocale Google
try:
    text = r.recognize_google(audio)
    print(f"Vous avez dit : {text}")
except sr.UnknownValueError:
    print("Impossible de comprendre l'audio")
except sr.RequestError as e:
    print(f"Erreur : {e}")

Transcrire un fichier audio

import speech_recognition as sr

r = sr.Recognizer()

with sr.AudioFile("chemin/vers/audio.wav") as source:
    audio = r.record(source)

text = r.recognize_google(audio)
print(text)

Enregistrer des données audio dans un fichier

with sr.Microphone() as source:
    audio = r.listen(source)

# Enregistrer dans un fichier WAV
with open("enregistrement.wav", "wb") as f:
    f.write(audio.get_wav_data())

Calibrer pour le bruit ambiant

with sr.Microphone() as source:
    r.adjust_for_ambient_noise(source)
    print("Calibré pour le bruit ambiant. Dites quelque chose !")
    audio = r.listen(source)

Écouter en arrière-plan

def callback(recognizer, audio):
    try:
        text = recognizer.recognize_google(audio)
        print(f"Vous avez dit : {text}")
    except sr.UnknownValueError:
        print("Impossible de comprendre")

r.listen_in_background(sr.Microphone(), callback)

# Garder le programme en cours d'exécution
import time
while True:
    time.sleep(1)

Détails d'installation

PyAudio (pour l'entrée microphone)

PyAudio est requis pour utiliser la classe Microphone. Installez-le avec :

pip install SpeechRecognition[audio]

Sous Linux, vous pourriez avoir besoin de paquets système :

sudo apt-get install portaudio19-dev python3-all-dev

PocketSphinx (Sphinx hors ligne)

pip install SpeechRecognition[pocketsphinx]

Vosk (Vosk hors ligne)

pip install SpeechRecognition[vosk]

Téléchargez ensuite un modèle Vosk depuis ici et placez-le dans un répertoire model.

Whisper (local)

pip install SpeechRecognition[whisper-local]

Faster Whisper

pip install SpeechRecognition[faster-whisper]

API OpenAI Whisper

pip install SpeechRecognition[openai]

Définissez la variable d'environnement OPENAI_API_KEY avant utilisation.

API Groq Whisper

pip install SpeechRecognition[groq]

Définissez GROQ_API_KEY.

API Cohere Transcribe

pip install SpeechRecognition[cohere-api]

Définissez CO_API_KEY.

Dépannage des problèmes courants

Reconnaisseur trop sensible ou pas assez sensible

Ajustez la propriété energy_threshold. Les valeurs typiques vont de 50 à 4000. Des valeurs plus élevées signifient moins de sensibilité, utile dans les environnements bruyants.

r.energy_threshold = 3000

Le reconnaisseur se bloque lors de la première écoute

Appelez adjust_for_ambient_noise avant d'écouter pour définir un seuil approprié.

Aucun périphérique d'entrée par défaut

Listez les microphones disponibles :

import speech_recognition as sr
for index, name in enumerate(sr.Microphone.list_microphone_names()):
    print(f"Microphone avec le nom \"{name}\" trouvé pour `Microphone(device_index={index})`")

Utilisez ensuite Microphone(device_index=INDEX).

Problèmes de langue/dialecte

Définissez le paramètre de langue pour une meilleure précision. Par exemple, utilisez "en-GB" pour l'anglais britannique :

text = r.recognize_google(audio, language="en-GB")

Conclusion

SpeechRecognition est une bibliothèque puissante et flexible qui abstrait les complexités des différents backends de reconnaissance vocale. Que vous ayez besoin de capacités hors ligne pour la confidentialité ou de précision basée sur le cloud pour la production, elle fournit une API cohérente qui rend le développement rapide et maintenable. Avec la prise en charge des derniers modèles comme Whisper et Groq, elle reste un choix de premier ordre pour les développeurs Python construisant des applications activées par la voix.

Pour plus d'exemples et une documentation détaillée, visitez le dépôt GitHub.

Source

Uberi/speech_recognition : Module de reconnaissance vocale pour Python, prenant en charge plusieurs moteurs et API, en ligne et hors ligne.