PFE Sabrine & Rida Courrigé
PFE Sabrine & Rida Courrigé
كلية التكنولوجيا
Faculté de Technologie
قسم اإللكترونيـك
Département d’Électronique
Mémoire de Master
Filière Électronique
Spécialité Instrumentation
Présenté par :
BARA Sabrine
&
Nous tenons à exprimer nos sincères remerciements au Dieu tout-puissant, qui nous
a accordé la volonté, la santé et le courage nécessaires pour mener à bien ce travail.
Nous tenons également à exprimer notre gratitude envers notre encadrant Mr.
F. YKHLEF pour sa confiance en notre capacité à mener ce projet à terme, à ses
conseils éclairés, son expertise et son soutien constant ont été essentiels pour nous
guider dans la bonne direction.
Nous tenons également à exprimer notre gratitude envers les membres du jury, Mr.
KHORISSI & Mme. BOUGHRIRA qui ont accepté de nous honorer en acceptant
d'examiner, de juger et d'évaluer notre mémoire fin d’étude.
Dédicaces
Je dédie ce travail
Aux deux personnes les plus nobles, précieux et les plus chères
au Monde Ma mère, Mon père que DIEU les gardes. A mon cher
père qui n’a jamais cessé de m’encourager et de me
Donner les conseils fructueux, qui a fait de son mieux pour assurer La
continuité de mes études.
A ma très chère mère, Mère exemplaire pour mes frères et pour Moi-
A mes secoures et mes frères, pour leurs aides, disponibilités et précieux conseils,
Que la vie vous apporte toute la joie et le bonheur.
Sabrine
Dédicaces
Je dédie ce modeste travail à :
Qui ont œuvré à ma réussite, de par leur amour, leur soutien, tous les sacrifices
consentis et leurs précieux conseils, pour toute leur assistance et leur présence
dans ma vie.
Vos encouragements et votre présence partout m'ont été d'une grande aide durant
mes études. Je tiens à vous exprimer ma gratitude et à vous exprimer mes
sentiments sincères et ma gratitude éternelle. Dieu vous protège tous.
A mes enseignants qui m’ont formé tout au long de mon cursus scolaire et
universitaire.
A toute personne ayant contribué de prêt ou de loin à l’élaboration de ce travail.
A tous ceux qui me sont chers.
Mohamed-Ridha
) لتحسين دقة التعرف التلقائيCNN )يركز مشروع التخرج الخاص بنا على استخدام الشبكات العصبية التالفيفية: ملخص
. على مجموعة بيانات صوتية وحصلنا على نتائج مهمة من حيث دقة تحديد المتحدثCNN قمنا بتدريب نموذج.على السماعات
ً يفتح هذا النهج آفاقًا جديدة لتطبيقات األمان القائمة على الصوت ويوفر فر
صا بحثية لزيادة تحسين أداء أنظمة التعرف على
. CNN المتحدثين من خالل استخدام التعلم العميق وشبكات
. الخصائص الصوتية، تصنيف السماعات،CNN الشبكات العصبية البناء، التعرف على السماعات:كلمات المفاتيح
Résumé : Notre projet de fin d’étude se concentre sur l'utilisation des réseaux de neurones
convolutifs (CNN) pour améliorer la précision de la reconnaissance automatique du locuteur. Nous
avons entraîné un modèle CNN sur un ensemble de données vocales et obtenu des résultats
significatifs en termes de précision d'identification des locuteurs. Cette approche ouvre de
nouvelles perspectives pour des applications de sécurité basées sur la voix et offre des opportunités
de recherche pour améliorer encore les performances des systèmes de reconnaissance du locuteur
grâce à l'utilisation du deep Learning et des CNN.
Abstract: Our final year project focuses on the use of Convolutional Neural Networks (CNN) to
enhance the accuracy of automatic speaker recognition. We trained a CNN model on a dataset of
speech samples and achieved significant results in terms of speaker identification accuracy. This
approach opens up new possibilities for voice-based security applications and provides research
opportunities to further improve speaker recognition systems performance through the utilization
of deep learning and CNN.
TD : Text Dependent
TI : Texte Independent
ID : Identification
IA : Intelligence Artificielle
INTRODUCTION GENERALE……………………………………………………………...01
CHAPITRE 1 LA RECONNAISSANCE DE LOCUTEUR ..................................................03
1.1 INTRODUCTION ..........................................................................................................................03
1.2 La parole…………………………………………………………………………………......03
1.3 La reconnaissance…………………………………………………………………………..06
3.3.3 Matlab………………………………………………………………………………42
3.4.1 Tensorflow…………………………………………………………………………...42
3.4.2 keras………………………………………………………………………………….43
3.4.3 Numpy………………………………………………………………………………..43
3.11 Conclusion………………………………………………………………………………. 53
CONCLUSION GENERALE………………………………………………………………....54
BIBLIOGRAPHIE.
Liste des Figures
Chapitre1 :
Chapitre 2 :
Chapitre 3 :
Chapitre 2 :
Introduction générale
Introduction générale
La reconnaissance du locuteur est une discipline de la reconnaissance de forme qui vise à
identifier de manière automatique et précise l'identité d'une personne à partir de sa voix. Elle
trouve des applications dans de nombreux domaines tels que la sécurité, la biométrie, la
communication vocale et l'assistance virtuelle. Au fil des années, de nombreuses approches ont
été développées pour résoudre le problème de la reconnaissance du locuteur. Cependant,
l'émergence du deep learning a révolutionné ce domaine en permettant des avancées
significatives dans la précision et la performance des systèmes de reconnaissance du locuteur.
Le deep learning, ou apprentissage profond, est une branche de l'intelligence artificielle qui
repose sur des réseaux de neurones artificiels profonds. Ces réseaux sont capables d'apprendre
de manière autonome à partir de grandes quantités de données et de découvrir des
représentations hiérarchiques complexes. Dans le cas de la reconnaissance du locuteur, le deep
learning permet d'extraire des caractéristiques discriminantes à partir des signaux vocaux et de
construire des modèles capables d'identifier de manière fiable l'identité d'un locuteur.
L'objectif de ce mémoire est d'explorer les possibilités offertes par le deep Learning pour la
reconnaissance du locuteur. Nous chercherons à développer un système de reconnaissance du
locuteur basé sur des modèles de deep learning, en utilisant des techniques avancées telles que
les réseaux de neurones convolutionnels (CNN). Nous évaluerons également les performances
de notre système en termes de précision, de robustesse et d'évolutivité.
La présente étude se concentrera sur l'analyse des données vocales, le prétraitement des
signaux et l'apprentissage automatique supervisé pour la classification des locuteurs. Nous
utiliserons un ensemble de données de référence comprenant des enregistrements vocaux
provenant de locuteurs différents, et nous explorerons différentes architectures de réseaux
neuronaux pour extraire les caractéristiques pertinentes et effectuer la classification.
La structure de ce mémoire est la suivante : Le premier chapitre représente une vue générale
sur la reconnaissance du locuteur, commençons par aborder la production de la parole afin de
comprendre comment un individu peut être reconnu par sa voix les différentes taches de la
reconnaissance du locuteur et aussi comment fonctionne le système de reconnaissance de
locuteur.
1
CHAPITRE 1 LA RECONNAISSANCE DE LOCUTEUR
Le deuxième chapitre aborde les deux principaux domaines de l’intelligence artificielle qui
sont le machine learning et le deep learning, ceci en mettant l’accent sur les réseaux de neurones
Introduction générale
artificiels et plus précisément sur les réseaux de neurones convolutives, dans ce chapitre, nous
avons examiné leur architecture, leurs paramètres, ainsi que leurs avantages dans le domaine
de la reconnaissance de locuteur.
2
CHAPITRE 1 LA RECONNAISSANCE DE LOCUTEUR
1.1 Introduction
Reconnaitre une personne par sa voix est de plus en plus un enjeu fort en matière
d'authentification des personnes à des fins de vérification et de sécurité. Dans ce chapitre, nous
allons présenter une vue générale sur la reconnaissance du locuteur. Commençons par aborder
la production de la parole afin de comprendre comment un individu peut être reconnu par sa
voix. Ensuite, nous passerons à l'état de l'art de la reconnaissance du locuteur, en examinant son
architecture, ses différentes applications et ses principales branches, aussi la reconnaissance de
la parole et la reconnaissance du langage.
1.2 La parole
La parole est le mode de communication le plus naturel dans toute société humaine. Elle est
définie comme un signal réel, continu, d'énergie finie et non stationnaire, généré par l'appareil
vocal humain. La parole offre aux êtres humains un moyen facile d'établir une communication
claire et compréhensible [1].
Dans le domaine du traitement du signal, la parole occupe une place prépondérante en raison
de ses caractéristiques acoustiques distinctives, qui trouvent leur origine dans les mécanismes
de production spécifiques.
Chez un adulte, le tractus vocal mesure généralement environ 17 cm et fait partie des organes
impliqués dans la production de la parole, situés au-dessus des plis vocaux (Anciennement
appelés cordes vocales). Comme illustré dans la Figure 1.1, ces organes comprennent le
pharynx laryngé (Situé sous l'épiglotte), le pharynx oral (derrière la langue, entre l'épiglotte et
le voile du palais), la cavité buccale (en avant du voile du palais et délimitée par les lèvres, la
langue et le palais), le pharynx nasal (Au-dessus du voile du palais, à l'extrémité arrière des
cavités nasales) et la cavité nasale (Au-dessus du palais, s'étendant du pharynx aux narines).
Le larynx est composé des plis vocaux, de la partie supérieure du cartilage cricoïde, des
cartilages aryténoïdes et du cartilage thyroïde. La région située entre les plis vocaux est appelée
la glotte [2].
3
CHAPITRE 1 LA RECONNAISSANCE DE LOCUTEUR
Le résonateur du tractus vocal modifie le spectre acoustique à mesure qu'il traverse le tractus
vocal. Les résonances du tractus vocal sont appelées formants. Par conséquent, la forme du
tractus vocal peut être estimée à partir de la forme spectrale (Par exemple, l'emplacement des
formants et l'inclinaison spectrale) du signal vocal. Les systèmes de reconnaissance des
locuteurs utilisent généralement des caractéristiques dérivées uniquement du tractus vocal.
La production de la parole est un processus qui débute par la formulation d'un message
linguistique et se transforme en une série d'actions motrices impliquant diverses parties du corps
humain. Ce processus aboutit à la création d'un signal vocal intelligible. On peut le diviser en
trois étapes distinctes selon les travaux de Brown et Haooort (2000) ainsi que Blank et al. (2002)
[4].
4
CHAPITRE 1 LA RECONNAISSANCE DE LOCUTEUR
b) La formulation
A ce stade, la forme linguistique nécessaire pour exprimer le message désiré est élaborée.
Cela implique le choix des mots appropriés, la construction grammaticale adéquate, ainsi que
le découpage des mots en syllabes et leur encodage phonétique.
Le signal de parole est un signal continu, non stationnaire et d'énergie finie. Il présente une
grande variabilité de sons en fonction du locuteur et des conditions environnementales. Sa
structure est complexe et variable dans le temps. Il peut être représenté directement sous forme
de signal analogique.
L'analyse d'un tel signal est une tâche difficile en raison du grand nombre de paramètres
associés. Néanmoins, trois paramètres principaux se dégagent : la fréquence fondamentale, le
spectre fréquentiel et l'énergie. Ces paramètres sont appelés caractéristiques acoustiques et sont
énumérés ci-dessous [3].
a) Fréquence fondamentale
Cela correspond à la fréquence à laquelle les cordes vocales s'ouvrent et se ferment, on
l'appelle parfois la hauteur de la voix. Elle varie en fonction de la taille du larynx. Un enfant a
un larynx plus petit qu'une femme, qui a elle-même un larynx plus petit qu'un homme. C'est
pourquoi un enfant a une voix plus aiguë. Cette fréquence caractérise uniquement les sons
sonores et peut varier [5] :
5
CHAPITRE 1 LA RECONNAISSANCE DE LOCUTEUR
b) Spectre
Le spectre fréquentiel est une représentation d'un signal qui indique la répartition des
fréquences présentes dans ce signal. Il est constitué d'un ensemble de fréquences disposées de
manière arithmétique. Une caractéristique essentielle du spectre fréquentiel est le timbre, qui
permet d'identifier chaque locuteur par sa voix [3].
c) L’énergie
L'énergie sonore correspond à l'intensité du signal. Elle est généralement plus élevée pour
les segments de parole voisés que pour les segments non voisés. La Figure 2.5 présente un
exemple concret du signal de parole pour le mot "Tashghil", qui signifie "Allumer" [3].
1.3 La reconnaissance
En termes plus généraux, la reconnaissance fait référence à la capacité de reconnaître, de
comprendre ou de distinguer quelque chose. Cependant, la reconnaissance peut être utilisée
dans différents domaines et a des significations spécifiques.
6
CHAPITRE 1 LA RECONNAISSANCE DE LOCUTEUR
Signal
Extraction de Reconnaissance Text
de la
caractéristiques e
parole
Les applications de la RAP sont nombreuses et peuvent varier selon leur type, les évolutions
des techniques de RAL ont permis aux systèmes d’évoluer et d’être de plus en plus efficaces.
De plus, la majorité des systèmes RAL sont des systèmes dépendants ou indépendants de texte.
Les systèmes dépendant de texte nécessitent une phase d’apprentissage où de nombreuses
heures de parole sont généralement indispensables [8].
Cette partie décrit brièvement les quatre principaux types de systèmes de reconnaissance
vocale.
7
CHAPITRE 1 LA RECONNAISSANCE DE LOCUTEUR
a) Commandes vocales
Les systèmes de reconnaissance de parole sont utilisés dans les assistants vocaux, tels que
Siri, Alexa et Google Assistant, pour permettre aux utilisateurs de contrôler des appareils
électroniques et de rechercher des informations à l'aide de commandes vocales.
b) Applications de sécurité
La reconnaissance de parole peut être utilisée dans les systèmes de sécurité pour identifier les
voix autorisées et permettre l'accès à des zones sécurisées
d) Systèmes de compréhension
Essentiellement, ils permettent de dialoguer avec une machine. Par conséquent, l'utilisateur
prononce une série de mots-clés que le système est peu de reconnaître. Contrairement aux
systèmes à commande vocale, ce genre de système utilise aussi un dispositif de compréhension
de mots pour interpréter et réagir en conséquence [9].
Elle peut être réalisée à l'aide de différents algorithmes, tels que les réseaux de neurones, les
machines à vecteurs de support et les modèles de Markov cachés. Les performances de ces
algorithmes dépendent de nombreux facteurs, tels que la qualité de l'enregistrement audio, le
bruit de fond et la variabilité interpersonnelle. Malgré ces défis, la reconnaissance automatique
du locuteur continue de progresser et de trouver de nouvelles applications dans le monde de la
technologie.
8
CHAPITRE 1 LA RECONNAISSANCE DE LOCUTEUR
a) Dépendante du texte
En mode TD, un système de reconnaissance de locuteur peut être trompé par l'enregistrement
et la lecture de la voix prédéfinie d'un locuteur inscrit. Pour défendre un système de
reconnaissance de locuteur contre de telles attaques malveillantes, le système peut demander à
l'utilisateur de prononcer un texte aléatoire. Dans la plupart des cas, un système de
reconnaissance de locuteur en mode TD fonctionne mieux qu'un système en mode TI car des
informations supplémentaires (transcription de texte) sont fournies. Cependant, un système de
reconnaissance de locuteur en mode TD ne peut pas être utilisé lorsque la transcription
sousjacente réelle n'est pas fournie, comme dans la situation où quelqu'un parle librement au
téléphone [12].
b) Indépendante du texte
Un système de reconnaissance de locuteur en mode TI ne nécessite pas de transcription
sousjacente réelle d'une parole en entrée. Cela peut être utile pour un système de reconnaissance
de locuteur en forensique, tel que l'identification d'un locuteur dans une conversation interceptée
par fil ou dans une interface homme-robot [12].
9
CHAPITRE 1 LA RECONNAISSANCE DE LOCUTEUR
• Transaction à distance.
c) Applications commerciales
• Associer un même mot de passe pour une petite population de locuteur (membre
d’une famille, d’une société).
d) Applications judiciaires
• Recherche de suspects et de preuves.
10
CHAPITRE 1 LA RECONNAISSANCE DE LOCUTEUR
-La disponibilité de données de parole enregistrées dans les mêmes conditions que le
signal de test, permettant de référencer les locuteurs dans le système ;
-L'interdiction pour les locuteurs d'utiliser des techniques sophistiquées pour modifier ou
déguiser leur voix ;
-La coopération des locuteurs qui souhaitent être acceptés par le système et qui collaborent
avec celui-ci ;
Par conséquent, une forme ou l'autre des caractéristiques spectrales est utilisée dans la plupart
des systèmes de reconnaissance des locuteurs. Le processus final de l'étape de traitement frontal
est une forme de compensation de canal. Différents dispositifs d'entrée (par exemple différents
combinés téléphoniques) imposent différentes caractéristiques spectrales au signal de parole,
telles que la limitation de bande et la mise en forme. Par conséquent, une compensation de canal
est effectuée pour éliminer ces effets indésirables. Le plus souvent, une certaine forme de
compensation de canal linéaire, telle que la soustraction moyenne cepstrale à long et à court
terme, est appliquée aux entités.
11
CHAPITRE 1 LA RECONNAISSANCE DE LOCUTEUR
Modèles de
Entraînement référence pour
chaque
intervenant
parole Extraction de
caractéristiques
Similarité
Résultat
(Distance)
Reconnaissance
En cas de vérification du locuteur, la distance est calculée uniquement entre l'énoncé d'entrée
et le modèle de référence du locuteur revendiqué. Si la distance est inférieure au seuil
prédéterminé, le locuteur est accepté autre le locuteur est rejeté en tant qu'imposteur [2].
12
CHAPITRE 1 LA RECONNAISSANCE DE LOCUTEUR
a) Identification du locuteur
L'identification du locuteur sert à trouver l’identité d’un locuteur spécifique à l’aide de sa
voix parmi un ensemble limité de locuteurs possibles. Cette tâche peut également être de deux
types in-set et off-set. Dans le cas de in-set, le système automatisé suppose que le locuteur test
doit être parmi les locuteurs connus, tandis que dans le cas off-set, le système peut déterminer
que le locuteur test ne fait pas partie des locuteurs identifiés [5].
13
CHAPITRE 1 LA RECONNAISSANCE DE LOCUTEUR
utilisateurs et permettre l'accès à des zones sécurisées, tandis que les banques peuvent l'utiliser
pour vérifier l'identité des clients lorsqu'ils appellent le service client. Les centres d'appels
peuvent également utiliser l'identification de locuteur pour acheminer les appels vers le bon
agent en fonction de l'identité du client. Enfin, les applications de surveillance peuvent utiliser
l'identification de locuteur pour identifier les personnes qui parlent dans une pièce ou une
conversation téléphonique [4].
b) Vérification de locuteur
La vérification du locuteur est une tâche de la reconnaissance du locuteur qui vise à
déterminer si une personne est bien celle qu'elle prétend être en fonction de son échantillon
vocal. Contrairement à l'identification du locuteur. La vérification du locuteur se concentre sur
la comparaison entre l'échantillon vocal de la personne et les caractéristiques vocales
préalablement enregistrées pour cette personne dans une base de données.\
14
CHAPITRE 1 LA RECONNAISSANCE DE LOCUTEUR
La valeur de seuil peut être réinitialisée, par exemple, lorsqu'un utilisateur a reçu de
nombreux faux rejets et doit ajuster le niveau de sensibilité. Dans la partie test du locuteur, le
module de vérification du locuteur est utilisé pour identifier un utilisateur. Tout d'abord, un
utilisateur informe le système qu'il ou elle est un utilisateur. Le système indiquera alors à
l'utilisateur de prononcer les mots de vérification. Cette prononciation des mots est appelée le
discours de test. Le module procédera aux mêmes prétraitements numériques de la parole,
extraction et réduction de caractéristiques (facultatifs, utilisés si la partie apprentissage l'utilise)
que ceux utilisés dans la partie apprentissage. Les caractéristiques extraites de la parole de test
sont ensuite comparées aux livres de codes de la base de données. Sur la base de certaines
métriques de similarité, le système décidera si l'utilisateur a réussi ou échoué le test de
vérification vocale [14].
15
CHAPITRE 1 LA RECONNAISSANCE DE LOCUTEUR
16
CHAPITRE 1 LA RECONNAISSANCE DE LOCUTEUR
1.4 Conclusion
La technologie de reconnaissance automatique du locuteur (RAL) a progressé de manière
significative, atteignant un niveau de maturité qui lui permet d'être considérée comme une
solution fiable pour des applications réelles. L'authentification basée sur la voix est de plus en
plus répandue dans les systèmes de sécurité modernes.
Dans ce chapitre, nous avons examiné dans la première partie la production de la parole et
ses paramètres, puis nous avons passé à étudier l’état de l’art de système de reconnaissance
automatique du locuteur, présentons son structure de base ainsi que ses deux tâches principales,
avec ses applications, ses fonctionnements et enfin l’évolution de la RAL.
17
CHAPITRE 2
DEEP LEARNING ET LES RESEAUX DE NEURONES CONVOLUTIFS
2.1 Introduction
La croissance du Deep Learning améliore notre capacité à comprendre et à analyser des
données complexes, ouvrant ainsi de nouvelles perspectives dans divers domaines tels que la
médecine, la fabrication, le commerce, le marketing et d'autres domaines. Avec sa capacité à
extraire des connaissances et à atteindre une grande précision dans les tâches de calcul, le Deep
Learning est devenu un outil essentiel pour améliorer les systèmes intelligents et stimuler le
progrès technologique. Au cours de ce chapitre, nous allons examiner plusieurs aspects clés liés
à l'utilisation des réseaux de neurones convolutifs (CNN) dans le domaine de la reconnaissance
du locuteur.
18
CHAPITRE 2
DEEP LEARNING ET LES RESEAUX DE NEURONES CONVOLUTIFS
L'objectif de cette phase est d'obtenir les paramètres d'un modèle qui atteindront les
meilleures performances, notamment lors de l'exécution de la tâche assignée au modèle. Une
fois l'apprentissage réalisé, le modèle peut ensuite être déployé en production.
Nouvelles
données
Résultat prédit
L'apprentissage automatique se subdivise en différents types, chacun étant défini par la nature
des tâches à accomplir. Dans les prochaines sections, nous examinerons les principaux types
d’apprentissage. [16].
19
CHAPITRE 2
DEEP LEARNING ET LES RESEAUX DE NEURONES CONVOLUTIFS
avec diverses connexions entre eux. Les couches de nœuds sont liées par différents types de
connexions.
Modèle
final
Jeu de données
ƒ(X
Modèle ) Evaluation
(X,y)
ƒ
Paramètres Amélioration
initiax Nouveaux
paramètres
20
CHAPITRE 2
DEEP LEARNING ET LES RESEAUX DE NEURONES CONVOLUTIFS
a) La classification
b) Régression
Dans le contexte d'un problème de régression, la variable cible est constituée d'un ou de
plusieurs éléments ayant des valeurs continues. Un modèle d'apprentissage automatique est
entraîné à prédire une ou plusieurs valeurs réelles. La météorologie offre un bon exemple de
problème de régression, par exemple la prédiction de la température. En effet, la valeur à prédire
dans ce cas est une quantité continue. On peut également inclure d'autres éléments dans la
variable cible tels que la pression atmosphérique et le taux d'humidité, ce qui crée un vecteur de
valeurs continues [16].
21
CHAPITRE 2
DEEP LEARNING ET LES RESEAUX DE NEURONES CONVOLUTIFS
a) Regroupement
La mise en grappes est l’une des techniques algorithmiques les plus importantes et les plus
populaires pour l’apprentissage non supervisé. Cet algorithme trouve le modèle et catégorise la
collecte des données. Dans cette méthode, nous pouvons traiter les données et identifier les
groupes à partir de ces données. Dans ce type d’apprentissage non supervisé, nous pouvons
également définir le nombre de groupes que nous souhaitons trouver. Le regroupement se divise
ensuite en différents groupes : Exclusif, Agglomérat, Chevauchement et Probabiliste.
b) Réduction de dimensionnalité
Ces méthodes traitent des problèmes de classification et d’apprentissage automatique en
fonction de nombreux facteurs. Ces facteurs, appelés caractéristiques, sont des variables des
données. Plus vous alimentez l’algorithme de fonctionnalités, plus il est difficile de comprendre
l’ensemble d’apprentissage. Ces fonctionnalités sont parfois redondantes et liées. À ce stade,
l’aide de l’algorithme de réduction de la dimensionnalité est nécessaire. Cet algorithme non
supervisé réduira les variables aléatoires et obtiendra une justification de ces variables.
L’algorithme le divise en différentes extractions de caractéristiques et de sélections.
En conclusion pour les tâches d’apprentissage supervisé et non supervisé, il est nécessaire
d’avoir une représentation des données d’entrée compréhensible par un ordinateur. Ces données
sont souvent considérées comme un tableau, où chaque ligne représente un exemple de données
(instance) et chaque colonne représente une propriété ou une caractéristique qui décrit cet
exemple de données.
22
CHAPITRE 2
DEEP LEARNING ET LES RESEAUX DE NEURONES CONVOLUTIFS
Il est important de distinguer les sorties discrètes des sorties continues dans les algorithmes
d’apprentissage machine. Les sorties discrètes ont tendance à provenir d’un ensemble distinct
et fini de valeurs, tandis que les sorties continues sont généralement des valeurs appartenant à
un ensemble continu, avec un nombre potentiellement infini de valeurs [3].
La Table suivante résume les cas d’utilisation de ce type de données dans les contextes
d’apprentissage supervisé et non supervisé.
23
CHAPITRE 2
DEEP LEARNING ET LES RESEAUX DE NEURONES CONVOLUTIFS
Agent
état
et
récompense
rt
rt 1 action
et 1 at
Environnement
24
CHAPITRE 2
DEEP LEARNING ET LES RESEAUX DE NEURONES CONVOLUTIFS
2.7 Le perceptron
Le perceptron est le tout premier réseau de neurones artificiels évolutif, capable
d'apprentissage. Son objectif initial était de reconnaître des lettres de l'alphabet à l'aide de
cellules photoélectriques en tant que capteurs.
En réalité, le perceptron est une fonction mathématique. Les données d'entrée (x) sont
multipliées par des coefficients de poids (w), et le produit obtenu est une valeur numérique.
Cette valeur peut être positive ou négative. Le neurone artificiel s'active si la valeur est positive,
c'est-à-dire que le poids calculé des données d'entrée dépasse un certain seuil [18].
25
CHAPITRE 2
DEEP LEARNING ET LES RESEAUX DE NEURONES CONVOLUTIFS
dans une couche est connecté à tous les neurones de la couche précédente et de la couche
suivante. Chaque connexion entre les neurones est associée à un poids qui détermine l'influence
de l'activation d'un neurone sur l'activation des neurones de la couche suivante [19]
26
CHAPITRE 2
DEEP LEARNING ET LES RESEAUX DE NEURONES CONVOLUTIFS
Les réseaux de neurones trouvent des applications dans divers domaines. Ils sont utilisés pour
résoudre des problèmes de classification, de régression et même pour estimer la densité de
probabilité. Ils sont employés à la fois dans l'apprentissage supervisé et non supervisé, ainsi que
dans les modèles discriminatifs et génératifs. En résumé, ils constituent une famille de modèles
extrêmement flexibles et puissants qui méritent d'être explorés davantage [20].
Tout comme le cerveau humain, les réseaux de neurones artificiels ne peuvent pas être
directement programmés, mais doivent apprendre en étudiant et en analysant des exemples [21].
27
CHAPITRE 2
DEEP LEARNING ET LES RESEAUX DE NEURONES CONVOLUTIFS
28
CHAPITRE 2
DEEP LEARNING ET LES RESEAUX DE NEURONES CONVOLUTIFS
c'est leur capacité à effectuer la même tâche pour chaque élément d'une séquence, où la sortie
dépend des calculs précédents. On peut également dire que les RNN possèdent une "mémoire"
qui capture des informations sur ce qui a été calculé jusqu'à présent. En théorie, les RNN peuvent
utiliser des informations provenant de séquences de longueur arbitraire, mais en pratique ils se
limitent souvent à examiner uniquement les étapes récentes. Les RNN sont une classe de réseaux
neuronaux qui permettent aux prédictions antérieures d'être utilisées comme entrées grâce à
l'utilisation d'états cachés. La structure typique d'un RNN est représentée dans la Figure 2.12
[22].
Dans un CNN, les données sont traitées à travers des couches convolutives, des unités de
traitement non linéaires (fonctions d'activation) et des couches de sous-échantillonnage. Les
noyaux convolutifs effectuent la convolution pour extraire des caractéristiques des données
d'entrée, qui sont ensuite envoyées aux unités de traitement non linéaires. Ces unités non
29
CHAPITRE 2
DEEP LEARNING ET LES RESEAUX DE NEURONES CONVOLUTIFS
linéaires aident à apprendre des abstractions et introduisent de la non-linéarité dans l'espace des
fonctionnalités. Cette non-linéarité permet d'obtenir différentes activations pour différentes
réponses [23].
a) Couche de convolution
Couche principale du réseau CNN, elle joue un rôle vital dans l'extraction des
caractéristiques. La figure 2.9 illustre l’opération de la convolution qui prend une image qui
représente une matrice compose de pixels de 0 et 1, elle est une dimension de 7×7 pour appliquer
30
CHAPITRE 2
DEEP LEARNING ET LES RESEAUX DE NEURONES CONVOLUTIFS
un calcul à l’aide d’un noyau ou d’un filtre (3x3), pour produire une matrice les Dimensions
(5x5) ou ce que l'on appelle une carte des caractéristiques [24].
b) Couche d’activation
Après les couches convolutionnels, une fonction d'activation est appliquée à chaque carte de
caractéristiques pour introduire des non-linéarités dans le modèle. La fonction d'activation la
plus couramment utilisée est la fonction ReLU (Rectified Linear Unit), qui remplace les valeurs
négatives par des zéros et conserve les valeurs positives.
c) Couche de pooling
Dans la plupart des cas, une couche convolutive est suivie d'une couche de regroupement.
L'objectif principal de cette couche est de réduire la taille des cartes d'entités convolutives pour
réduire le coût de calcul. Ceci est réalisé en réduisant les connexions entre les couches et en
fonctionnant indépendamment sur chaque carte d'entités. Selon la méthode utilisée, il existe
différents types d'opérations de pooling [18].
Max pooling : Il sélectionne les éléments les plus importants de la fiche technique.
Les éléments importants de la carte des fonctionnalités sont stockés dans la couche
maxpooling résultante. C'est la méthode la plus populaire car elle produit les meilleurs résultats
[18].
Average pooling : Il s'agit de calculer la moyenne pour chaque région de la carte
fonctionnalité. La somme des éléments de la partie prédéfinie est calculée dans Sum pooling
[18].
31
CHAPITRE 2
DEEP LEARNING ET LES RESEAUX DE NEURONES CONVOLUTIFS
e) Couche de sortie :
La dernière couche d'un CNN est la couche de sortie, qui génère des prédictions ou des
probabilités associées à différentes classes ou catégories. Selon le problème, cette couche peut
utiliser une fonction d'activation appropriée, telle qu'une fonction softmax pour la classification
multi-classes [18].
Les fonctions d'activation d'un réseau neuronal convolutif (CNN) jouent un rôle important
dans la capacité du réseau à introduire la non-linéarité et à capturer des relations complexes
32
CHAPITRE 2
DEEP LEARNING ET LES RESEAUX DE NEURONES CONVOLUTIFS
Dans les réseaux de neurones à convolution (CNN), il est nécessaire de déterminer plusieurs
paramètres pour chaque couche, tels que le nombre de couches de convolution, de couches de
correction ReLU, de couches de pooling et de couches entièrement connectées. De plus, il est
important de spécifier les paramètres pour chaque couche de convolution et de pooling.
Pour une couche de convolution, trois paramètres sont utilisés pour la dimensionner. Le
premier est le nombre de noyaux de convolution, qui détermine combien de filtres seront
appliqués à l’entrée. Le deuxième paramètre est le pas de chevauchement, qui détermine le
décalage entre l’application des filtres. Le troisième paramètre est la marge à zéro (zéro
padding), qui ajoute des zéros autour des bords de la carte de caractéristiques afin de maintenir
sa taille identique à celle de l’image d’entrée. Cependant, il peut être souhaitable de ne pas
ajouter de zéros et de réduire ainsi la taille de la carte des caractéristiques.
33
CHAPITRE 2
DEEP LEARNING ET LES RESEAUX DE NEURONES CONVOLUTIFS
En ce qui concerne la couche de pooling, celle-ci est définie par la taille de la fenêtre de
traitement et le pas de chevauchement. En pratique, une fenêtre de (2x2) avec un pas de 1 est
souvent choisie, ce qui signifie que la fenêtre se déplace d’un pixel à la fois lors du pooling [25].
Une fois l'entraînement terminé, un ensemble de données de test est utilisé pour évaluer les
performances du CNN. Cet ensemble de données de test est composé des entrées étiquetées qui
n'ont pas été utilisées dans le processus d'entraînement. Chaque entrée du jeu de test est
introduite dans le CNN, et sa sortie est comparée à l'étiquette de classe réelle. Cela permet de
mesurer la précision et la capacité de généralisation du CNN. Il est important de noter que si un
CNN présente une précision élevée sur les données d'apprentissage mais une mauvaise précision
sur les données de test, cela peut indiquer un surapprentissage. Le surapprentissage se produit
lorsque le réseau s'est adapté de manière trop spécifique aux données d'entraînement et ne
généralise pas bien sur de nouvelles données. Cela peut se produire lorsque la taille de
l'ensemble de données est limitée [25].
34
CHAPITRE 2
DEEP LEARNING ET LES RESEAUX DE NEURONES CONVOLUTIFS
35
CHAPITRE 2
DEEP LEARNING ET LES RESEAUX DE NEURONES CONVOLUTIFS
-Utilise des algorithmes pour apprendre à -Utilise des réseaux de neurones artificiels
partir de données structurées. pour apprendre à partir de données non
structurées.
-Peut être utilisé pour résoudre une grande - Convient aux problèmes de
variété de problèmes, tels que la reconnaissance d'images, de reconnaissance
classification, la régression, la prédiction, la vocale, de traduction automatique, etc….
détection d'anomalies, etc.
-Peut être utilisé pour traiter de grandes - Requiert une puissance de calcul plus
quantités de données. élevée et des ressources matérielles
spécialisées, telles que les unités de
traitement graphique (GPU).
Pour résumer l'apprentissage profond implique des algorithmes qui peuvent apprendre
plusieurs niveaux de représentation afin de modéliser les rapports complexes entre les données.
Bien que l'apprentissage automatique fonctionne avec des fonctionnalités associées qui sont
généralement extraites manuellement des entrées, ensuite, ces fonctionnalités sont utilisées pour
créer un modèle qui exécute par exemple une tâche de classification. C'est pourquoi cette
36
CHAPITRE 2
DEEP LEARNING ET LES RESEAUX DE NEURONES CONVOLUTIFS
2.13 Conclusion
3 Dans ce chapitre Nous avons présenté le domaine de l’apprentissage profond,
commencerons par une introduction générale à l'intelligence artificielle et à l'apprentissage
automatique, soulignant l'importance de l'apprentissage profond et des CNN. Nous aborderons
ensuite les fondements des réseaux de neurones artificiels, en mettant l'accent sur les différentes
couches qui composent les CNN et leur fonction respective dans le traitement des données
d'entrée. Ensuite, nous mettrons en évidence les avantages distincts des CNN dans le domaine
de la reconnaissance du locuteur et leur capacité à extraire automatiquement des caractéristiques
pertinentes à partir de données audios. Ainsi que les architectures et les méthodes d'entraînement
spécifiques qui contribuent à l'efficacité et à la précision de ces modèles dans le domaine de la
reconnaissance du locuteur. Enfin, on à vue les distinctions entre la machine et le deep learning.
37
CHAPITRE 3 APPLICATION ET RESULTATS.
3.1 Introduction
Le deep learning, également connu sous le nom d'apprentissage profond, est une branche de
l'intelligence artificielle (IA) qui exploite les réseaux de neurones pour analyser des facteurs
variés en utilisant une structure similaire au système neuronal humain. Le deep learning joue
un rôle essentiel dans le domaine des technologies de l'information et de la communication en
raison de ses vastes applications. Dans ce chapitre on va présenter un système de reconnaissance
du locuteur à l’aide des réseaux de neurones convolutives (CNN).
Nous avons choisi d'utiliser une architecture CNN connue pour son efficacité dans le
traitement des données séquentielles telles que les signaux audio. Notre réseau neuronal
convolutif se compose de plusieurs couches convolutives et de sous-échantillonnage suivies de
couches entièrement connectées pour la classification.
Python est l'un des langages de programmation les plus couramment utilisés par les
professionnels de la donnée, il a été inventé par Guido van Rossum, la première version de
python est sortie en 1991. Ses applications ne sont pas limitées à la Data Science mais peuvent
également être utilisées pour développer des logiciels, écrire des algorithmes ou encore gérer
l'infrastructure web d'un réseau social [24].
38
CHAPITRE 3 APPLICATION ET RESULTATS.
Python est à la fois simple et puissant, il nous permet de créer des scripts très faciles à écrire
et possédant de nombreuses bibliothèques, nous pouvons nous attaquer à des projets plus
ambitieux. C'est un code de programmation qui se déroule en ligne, c'est-à-dire qu'il n'est pas
nécessaire de le compiler avant de l’exécuter. Il est polyvalent, ça veut dire qu'il operate sur
différents systèmes d'exploitation : Raspberry Pi, Mac OS X, Linux, Android, iOS et même sur
les mini-ordinateurs [24].
De plus, le codage en Python permet aux développeurs de se concentrer sur l'objectif de leurs
programmes sans avoir à déboguer constamment leur code pour corriger les erreurs de syntaxe.
Il permet de réaliser tout type de projet avec un niveau d’exigence élevé. C’est pourquoi de
grandes entreprises comme Google, la Nasa, Microsoft ou Instagram (pour n’en citer que
quelques-unes) utilisent Python [25].
39
CHAPITRE 3 APPLICATION ET RESULTATS.
Kaggle est une plateforme web fondée en 2010 par Anthony Gold bloom et Ben Hamner. Il
a ensuite été acquis par Google le 8 mars 2017 et la communauté compte plus de 536 000
membres actifs dans 194 pays. Kaggle est devenue la plus grande communauté de science des
données au monde, recevant près de 150 000 soumissions par mois. La plate-forme est devenue
un moyen extrêmement populaire pour les data scientistes de mettre en valeur leurs
compétences et d'être reconnus sur le terrain.
La plateforme a gagné la confiance de grandes entreprises de science des données telles que
Wal-Mart et Facebook. Il offre aux professionnels des données et autres développeurs la
possibilité de participer à des compétitions et des défis d'apprentissage automatique, d'écrire et
de partager du code et d'héberger des ensembles de données [25].
En outre, dans les notebooks Kaggle, nous avons la possibilité d'activer un GPU à tout
moment et nous avons l'autorisation d'utiliser activement le GPU pendant un maximum de 30
heures par semaine. Le GPU mis à disposition par Kaggle est le Nvidia Tesla P100, doté de 16
Go de mémoire. Les ensembles de données de Kaggle sont en open source, cependant, afin de
connaître les utilisations autorisées de ces ensembles de données, nous devons vérifier leur
licence respective. Il se peut que certains ensembles de données ne puissent pas être utilisés
dans des publications académiques ou à des fins commerciales [26].
40
CHAPITRE 3 APPLICATION ET RESULTATS.
3.3.3 Matlab
Matlab est un environnement de programmation orienté vers le calcul numérique. Avec son
langage de script éponyme, il offre un éditeur permettant d'exécuter des séquences de
commandes encapsulées dans des fonctions. Matlab est spécifiquement conçu pour des tâches
telles que l'analyse de données, la visualisation de graphiques, la génération de matrices, le
développement d'algorithmes et la création d'applications. Il est interopérable avec des langages
tels que Python, C/C++, Java et Fortran, et est optimisé pour le calcul en parallèle.
3.4.1 Tensorflow
41
CHAPITRE 3 APPLICATION ET RESULTATS.
3.4.2 keras
3.4.3 Numpy
Le terme NumPy est en fait un acronyme pour "Numerical Python". C'est une bibliothèque
open source pour le langage Python. NumPy fournit des fonctions puissantes pour effectuer des
opérations mathématiques et statistiques en Python, y compris des opérations sur des matrices
et des tableaux multidimensionnels. La bibliothèque est particulièrement appréciée pour sa
capacité à effectuer efficacement des opérations telles que la multiplication matricielle.
42
CHAPITRE 3 APPLICATION ET RESULTATS.
Cela permet d'avoir accès aux fonctionnalités requises pour manipuler et traiter les données.
43
CHAPITRE 3 APPLICATION ET RESULTATS.
Shuffle seed
C'est la valeur de la graine utilisée pour le mélange aléatoire des données lors de l'entraînement
est égale 43.
Sample rate
La variable ‘sample rate’ spécifie le taux d'échantillonnage des enregistrements audio de
notre base de données qui est 16000 échantillons par seconde. Cela indique la fréquence à
laquelle le signal audio a été enregistré.
Scale
La variable `scale` définie par 0.5 représente un facteur de mise à l'échelle qui peut être
appliqué aux données audios, généralement utilisé pour normaliser ou ajuster les amplitudes
des échantillons audio.
Batch size
Cette variable spécifie la taille des lots (Batches) utilisés lors de l'entraînement du modèle.
Ici, la taille du lot est de 128. Cela signifie que 128 échantillons sont traités simultanément
avant la mise à jour des poids.
Epochs
La variable `epochs` définit le nombre d'epochs (itérations complètes) pendant les quelle
nous avons entraîné le modèle. Un epoch correspond à une passe complète sur l'ensemble des
données d'entraînement. Notre l'entraînement du modèle se fera sur 15 epochs.
44
CHAPITRE 3 APPLICATION ET RESULTATS.
Ces variables sont utilisées pour contrôler divers aspects du processus d'entraînement de notre
modèle de reconnaissance de locuteurs.
Cette organisation permet de structurer les données de manière appropriée pour la suite du
traitement.
45
CHAPITRE 3 APPLICATION ET RESULTATS.
Le bruit est ajouté aux données d'entraînement en utilisant la fonction ‘add_noise’ (audio,
noises, scale). Un échantillon de bruit aléatoire est sélectionné pour chaque échantillon audio,
et la valeur maximale de l'échantillon audio est adaptée à la valeur maximale du bruit. Le
paramètre scale contrôle l'intensité du bruit ajouté.
Une couche d'entrée prenant des séquences de taille (8000, 1) (8000 échantillons avec 1
dimension). Cela correspond probablement à un signal ou une séquence unidimensionnelle.
Activation_10, activation_11
Ce sont des couches d'activation (ReLU) qui introduisent de la non-linéarité dans les sorties des
couches convolutives.
46
CHAPITRE 3 APPLICATION ET RESULTATS.
47
CHAPITRE 3 APPLICATION ET RESULTATS.
48
CHAPITRE 3 APPLICATION ET RESULTATS.
Pendant chaque époque, le modèle est entraîné sur les données d'entraînement en utilisant la
méthode fit (). On peut voir que chaque époque est composée de plusieurs étapes (Steps)
représentées par le nombre total de lot (batch) dans le jeu de données. Pour chaque étape, le
modèle calcule la perte (loss) et l'exactitude (accuracy) sur les données d'entraînement.
Et après chaque époque, le modèle est évalué sur les données de validation. On peut observer
la perte de validation (val_loss) et l'exactitude de validation (val_accuracy) pour chaque époque
(Figure 3.7). De plus, deux rappels (callbacks) sont utilisés pendant l'entrainement
earlystopping_cb et mdlcheckpoint_cb. ‘Earlystopping_cb’ permet d'arrêter l'entraînement
prématurément si la performance du modèle sur les données de validation cesse de s'améliorer.
Mdlcheckpoint_cb permet de sauvegarder le meilleur modèle obtenu pendant l'entraînement.
Après l'achèvement des époques, le modèle est évalué une dernière fois sur les données de
validation en utilisant la méthode model. Evaluate ().
On peut voir que la perte finale est de 0.0662 et l'exactitude finale est de 0.9840.
49
CHAPITRE 3 APPLICATION ET RESULTATS.
Nous divisons le jeu de données de test en lots de taille (batch size). Cela nous permet de
traiter les échantillons par lots plutôt que tous en même temps, ce qui peut être plus efficace en
termes de mémoire et de calcul. Pour augmenter la robustesse du modèle aux variations de
bruit, nous appliquons une augmentation de bruit aux échantillons audio du jeu de données de
test. Cela est réalisé en utilisant la fonction "add_noise", qui ajoute du bruit aux audios en se
basant sur un ensemble prédéfini de bruits et une échelle spécifiée.
Ensuite, nous itérons sur le jeu de données de test et effectuons les prédictions. Pour chaque lot
d'audios et d'étiquettes, nous convertissons les audios en représentations de transformée de
Fourier à l'aide de la fonction audio_to_fft. La transformée de Fourier nous permet de représenter
les signaux audios en termes de leurs composantes de fréquence. Une fois les audios convertis en
représentations de transformée de Fourier, nous utilisons le modèle préalablement entraîné pour
prédire les étiquettes des échantillons audio.
50
CHAPITRE 3 APPLICATION ET RESULTATS.
51
CHAPITRE 3 APPLICATION ET RESULTATS.
Notre modèle a été entraîné sur un ensemble de données comprenant des échantillons audios
de différentes classes. Lors de la phase d'évaluation sur les données de validation, Les résultats
de classification indiquent que le modèle atteint une précision (Accuracy) de 98% sur les
données de validation.
Cela signifie que le modèle parvient à classifier correctement 98% des échantillons de la
validation ce qui indique une performance élevée et une capacité du modèle à bien généraliser
sur de nouvelles données.
b. La perte (Loss)
La perte est une mesure de l'erreur du modèle lors de la prédiction des étiquettes. L'objectif
est de minimiser cette perte pendant l'entraînement afin d'améliorer les performances du modèle
et d'obtenir des prédictions plus précises.
Après chaque époque d'entraînement de notre modèle, la perte (Loss) est diminuée, comme
indiqué précédemment sa valeur est indiquée environ 0.0914.
52
CHAPITRE 3 APPLICATION ET RESULTATS.
Cela signifie que le modèle a réussi à minimiser l'erreur et à faire des prédictions précises.
3.11 Conclusion
Dans ce chapitre nous avons présenté notre étude sur la reconnaissance automatique des
locuteurs avec un réseau de neurones convolutifs (CNN). Nous avons commencé par prétraiter
les données audios afin de les représenter sous forme de données exploitables par le modèle
CNN. Ensuite, nous avons entraîné le modèle sur un ensemble de données comprenant
différentes voix et avons évalué ses performances sur un ensemble de test distinct.
Les résultats obtenus sont encourageants, avec une précision de 98% dans la prédiction des
locuteurs. Cela signifie que notre modèle est capable de reconnaître avec précision l'identité des
locuteurs à partir de leurs enregistrements.
53
Conclusion générale
Conclusion générale
Le travail que nous avons fait au long de cette mémoire de fin d’étude s'inscrit dans le cadre
de la reconnaissance automatique du locuteur par Deep Learning en utilisant les réseaux de
neurones convolutifs (CNN). Notre objectif était de développer un système capable d'identifier
et de reconnaître les locuteurs à partir de leurs voix, en exploitant les puissantes capacités de
traitement des réseaux de neurones convolutifs.
Les résultats obtenus ont démontré l'efficacité des réseaux de neurones convolutifs dans la
reconnaissance du locuteur. Avec une précision de 98%, notre système a atteint des
performances remarquables, ouvrant ainsi de nombreuses perspectives d'application dans des
domaines tels que la sécurité, l'authentification et la surveillance
Bibliographie
54
Bibliographie
[1] A. Amehray, « Rehaussement de bruitage perceptuel de la parole », thèse de doctorat,
école nationale supérieure des télécommunications de Bretagne, 2009.
[2] S. K. Singh, P.C.Pandey, « Featues and Technique For Speaker Recognition », Seminar
Report, page 5,6, Novembre 03.
[9] Michael F McTear, « Spoken dialogue technology: toward the conversational user
interface. Springer Science & Business Media », article, page 3, 2004.
[11] Mr. Haddab, « reconnaissance automatique du locuteur par la méthode du taux passage
par zéro », mémoire master, université Mouloud mamri de Tizi-Ouzou, 2007/2008
55
[12] Jin, Minho, and Yoo, ChangD, « SPEAKER VERIFICATION AND IDENTIFICATION
», Korê Institut Avancé des Sciences et Technologies, République de Corée, 2004.
Bibliographie
[14] Dr. Clint Slatton, « A Speaker Verification System », thèse, Université de Florida,2006.
[18] La Ryax Team, « Deep learning : comprendre les réseaux de neurones artificiels
(artificial neural networks) », article, page 3, 2020.
[20] Pr. BILAMI Azeddine, « Apprentissage Incrémental & Machines à Vecteurs Supports
», Université HADJ LAKHDAR – BATNA, 18 /12 /2013
[22] Houcine Noura & Khelifa Nadia, « classification des textures par les réseaux de
neurones convolutifs », mémoire master, université mouloud Mammri tizi-ouzou, 2018/2019.
56
[25] consulté le 18/06/2023, disponible sur : https://www.data-
bird.co/blog/langagepython#toc-que-peut-on-faire-avec-python-
57