Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Traitement automatique du langage naturel avec Python
  3. Reconnaissance de la parole
Extrait - Traitement automatique du langage naturel avec Python Le NLP avec spaCy et NLTK
Extraits du livre
Traitement automatique du langage naturel avec Python Le NLP avec spaCy et NLTK Revenir à la page d'achat du livre

Reconnaissance de la parole

Introduction et définition

La reconnaissance de la parole est une thématique d’application du traitement du langage naturel (TALN) qui vise à transcrire des signaux audio en texte écrit. Cette technologie permet la conversion efficace de la parole humaine en une forme compréhensible par les machines, ouvrant ainsi la voie à une interaction plus fluide entre les utilisateurs et les systèmes informatiques.

Au cœur de la reconnaissance de la parole se trouve la capacité à interpréter et à comprendre les modèles complexes des signaux audio générés par la parole humaine. Ce processus englobe plusieurs étapes, de la capture initiale des ondes sonores à la transformation en séquences de mots compréhensibles.

On peut de manière théorique aborder la thématique avec la séquence à suivre.

Les éléments clés de la reconnaissance de la parole :

1. Prétraitement audio : avant même d’aborder la compréhension linguistique, les signaux audio bruts nécessitent un prétraitement pour éliminer le bruit indésirable et mettre en évidence les caractéristiques clés.

2. Modélisation acoustique : la modélisation acoustique analyse les caractéristiques acoustiques des signaux audio pour identifier...

Reconnaissance de la parole avec Python/NLTK

1. Contexte et outils nécessaires à l’exemple

NLTK n’inclut pas nativement de fonctionnalités de reconnaissance de la parole, mais nous pouvons utiliser d’autres bibliothèques en conjonction avec NLTK pour accomplir cette étape. Pour cet exemple, nous allons utiliser la bibliothèque SpeechRecognition.

Installons au besoin SpeechRecognition avec la commande en ligne suivante :

pip install speechrecognition 

Nous aurons également besoin d’un fichier audio à analyser. Pour le premier test, nous allons utiliser le son de la phrase récurrente de Nicolas Stoufflet dans l’introduction du jeu radiophonique, le Jeu des 1000 euros : « Chers amis, bonjour ! » (enregistrement du 6 janvier 2022).

Le son est disponible ici en ligne (il n’est pas de très bonne qualité, mais suffisant pour travailler sur cet exemple) :  https://commons.wikimedia.org/wiki/File:Chers_amis_Bonjour_!_(Jeu_des_1_000_euros_le_6_janvier_2022).wav

Nous avons également besoin de FLAC (Free Lossless Audio Codec) qui est un format de compression audio sans perte, permettant de réduire la taille des fichiers audio sans compromettre la qualité sonore. Contrairement aux formats de compression avec perte, tels que le MP3, le FLAC compresse les données audio de manière à ce qu’aucune information auditive ne soit perdue lors de la compression et de la décompression ultérieure. Pour l’installer, vous pouvez consulter la page web https://xiph.org/flac/download.html.

La séquence audio inclut le texte exact « Chers amis bonjour bonjour » (le deuxième bonjour étant celui du public).

2. Exemple en Python et NLTK

On utilise le code suivant :

import speech_recognition as sr 
from nltk.tokenize import word_tokenize 
from nltk.corpus import stopwords 
 
# Fonction de reconnaissance de la parole 
def reconnaissance_parole(fichier_audio): 
    # Initialiser le recognizer 
    recognizer = sr.Recognizer() 
 
    try: ...

Reconnaissance de la parole avec Python/spaCy

1. Introduction

spaCy est, en matière de reconnaissance de la parole, assez similaire à NLTK. Il faut recourir à une solution externe, en l’occurrence SpeechRecognition.

2. Le code adapté à spaCy

Voici le code précédent adapté pour utiliser spaCy. Là encore, spaCy se contente de gérer la tokenisation et les mots vides :

import speech_recognition as sr 
import spacy 
 
# Fonction de reconnaissance de la parole 
def reconnaissance_parole(fichier_audio): 
    recognizer = sr.Recognizer() 
 
    try: 
        with sr.AudioFile(fichier_audio) as source: 
            recognizer.adjust_for_ambient_noise(source) 
            audio = recognizer.record(source) 
            texte_transcrit = recognizer.recognize_google(audio, 
language="fr-FR") 
            return texte_transcrit 
 
    except sr.UnknownValueError: 
        print("La reconnaissance de la parole a échoué.") 
        return...