Reconnaissance de voix en Python

Reconnaissance de voix en Python

La reconnaissance de voix en Python peut être un atout pour un programme: inutile de taper au clavier, il suffit de parler !

reconnaissance de voix en Python

Reconnaissance de voix en Python: notre objectif

Nous allons ici voir comment faire en sorte qu’un programme Python puisse transcrire en chaîne de caractères ce que nous allons dire à haute voix.

Pour cela, nous aurons besoin de deux modules:

Reconnaissance de voix en Python: installation des modules

L’installation de PyAudio peut s’avérer compliquée sous Windows pour une version de Python supérieure à 3.6.

Pour ma part, j’ai une version 3.8 et l’installation classique ne fonctionnait pas.

Je suis donc allé dans le terminal de Windows (“cmd”), et j’ai tapé:

pip install pipwin
pipwin install pyaudio

Et là, tout s’est bien passé ! J’ai ensuite installé speech_recognition:

pip install SpeechRecognition

Reconnaissance de voix en Python: un programme minimaliste

from speech_recognition import Recognizer, Microphone

recognizer = Recognizer()

# On enregistre le son

with Microphone() as source:
    print("Réglage du bruit ambiant... Patientez...")
    recognizer.adjust_for_ambient_noise(source)
    print("Vous pouvez parler...")
    recorded_audio = recognizer.listen(source)
    print("Enregistrement terminé !")
    
# Reconnaissance de l'audio

try:
    print("Reconnaissance du texte...")
    text = recognizer.recognize_google(
            recorded_audio, 
            language="fr-FR"
        )
    print("Vous avez dit : {}".format(text))

except Exception as ex:
    print(ex)

Voici en vidéo ce que donne ce petit programme :

Comme vous pouvez le constater, la reconnaissance se termine automatiquement une fois qu’aucun son n’est détecté.

Mais on peut, si on le désire, fixer une durée maximale avec l’option timeout, qui donne le temps en secondes. Par exemple,

recorded_audio = recognizer.listen(source , timeout = 10)

fixera à 10 secondes le temps de l’enregistrement.

Il y a tout de même un inconvénient : il faut être connecté·e pour que cela fonctionne.

Alors, oui, il y a une autre méthode hors-ligne avec PocketSphinx mais je ne pourrai pas vous en dire plus car je n’ai pas testé.

Enregistrement du fichier au format wav

Si on souhaite garder une trace de ce qui a été dit, on peut sauvegarder tout ça dans un fichier wav par exemple. On pourra alors écrire:

from speech_recognition import Recognizer, Microphone

recognizer = Recognizer()

# On enregistre le son

with Microphone() as source:
    print("Réglage du bruit ambiant... Patientez...")
    recognizer.adjust_for_ambient_noise(source)
    print("Vous pouvez parler...")
    audio = recognizer.listen(source)
    print("Enregistrement terminé !")
    with open('record.wav' , 'wb') as f:
        f.write( audio.get_wav_data() )
    
# Reconnaissance de l'audio

try:
    print("Reconnaissance du texte...")
    text = recognizer.recognize_google(
            audio, 
            language="fr-FR"
        )
    print("Vous avez dit : {}".format(text))

except Exception as ex:
    print(ex)

Je n’ai pas ajouté grand-chose en définitive… Juste les lignes 13 et 14.

Comment exploiter tout ça ?

On peut imaginer que la reconnaissance vocale puisse avoir une utilité dans l’un de vos projets quand il s’agit d’épargner les utilisateurs·trices pour ce qui est de la saisie manuelle. Mais il y a des limites tout de même… Comme vous pouvez l’avoir remarqué, les signes de ponctuation sont manquants, ce qui n’est pas “top méga cool”… comme disent les jeunes 🙂

Stéphane Pasquet
Stéphane Pasquet

Laissez votre message