Il est évident que la qualité des échantillons Morse influence directement la qualité de l'apprentissage par l'IA et donc le résultat final.
Nous rappelons que l'objectif de cette phase est de créer, pour chaque lettre de l'alphabet Morse:
- un fichier son et
- une image "spectrogramme" que nous allons soumettre à l'IA pour apprentissage de chaque lettre Morse
Voix et Morse
Nous avons enregistré le même message "Du côté de chez Swann" (Proust) avec la voix et aussi en Morse.
Voix - fichier Wav
L'aperçu de notre enregistrement (fichier wav), en utilisant la représentation temps - amplitude est le suivant:
Notre son comporte clairement une partie utile (voix) ainsi que du silence en début et fin.
Regardons maintenant de plus près la partie 0.7s - 1.8s (celle comportant l'enregistrement de la voix).
Nous extrayons maintenant le début de la phrase:
Les différentes fréquences de la voix apparaissent, nous voyons aussi que la sinusoïde n'est pas constante ni symétrique, ce qui est normal, car notre voix est composée d'une multitude de fréquences.
Nous continuons à regarder de plus près, le mot "du":
Ce mot est clairement composé de plusieurs fréquences, visibles dans l'image précédente.
Génération des sons Morse
Nous avons utilisé pour cette étape les fonctions de création de Cary Dreelan VK5CD, que nous avons rendues compatibles avec Python 3.
Nous partons du principe que les fichiers son Morse peuvent avoir les variables suivantes:
- la fréquence
- la vitesse (nombre de mots / minute, en utilisant le mot Paris comme référence)
- l'amplitude
Nous y avons ajouté également un espacement variable entre les lettres et les mots (silence) même si les règles du code morse sont strictes. Nous sommes dans l'obligation de mettre le silence en variable pour être capable dans le futur de déchiffrer un fichier son morse écrit par l'homme.
A la fin, nous avons utilisé les fonctions de génération de bruit de Tim Sainburg afin de rendre le son morse généré aussi proche que possible de la réalité.
Nous avons créé une librairie de sons sound_processing_lib.py qui regroupe des fonctions de cartographie d'amplitude / temps et de spectrogramme, avec
Amplitude / fréquence
Nous avons généré avec notre librairie son les graphiques amplitude / temps. Nous avons utilisé les fonctions de son du module scipy.io.
Regardons maintenant le même texte "Du côté de chez Swann", généré à l'aide du code Morse.
A noter la structure parfaitement régulière et symétrique du son, avec des espaces proportionnels entre les dots (point) - dahs (ligne), lettres et mots. Cette régularité est attendue quasi systématiquement chez les professionnels du Morse (militaires), avec des variations mineures de vitesse et de bruit.
Cependant, nous souhaitons à ce que notre solution puisse accepter des fichiers Morse avec des variations importantes de fréquence, amplitude et nombre de mots par minute, tout en respectant les règles du Morse:
# Règles du Code Morse
# DAH = 3 DOTs.
# L'espace entre un DOT et un DAH est égal à un DOT
# L'espace entre deux lettres est égal à un DAH
# L'espace entre deux mots est égal à DOT DAH DAH
Regardons maintenant la première lettre du message: c'est un 'd'
... et maintenant encore de plus près.
Spectrogramme
Nous avons utilisé les fonctions de création de spectrogramme Frank Zalkow.
Dans le graphique suivant, les éléments suivants apparaissent:
- la fréquence du son
- le temps
- intensité relative (couleurs). A noter qu'il ne s'agit pas de DB réellement, mais d'une échelle relative entre les différentes fréquences présentes dans le son.
_______________________________________________________________________________
Regardons de plus prés la spectrogramme du son Morse correspondant à la lettre 'a'. Le spectrogramme si dessous est celui d'un son parfait. Autrement dit, le son étudié a une seule et unique fréquence et le silence représente du vide.
Il s'agit dans ce cas d'un son généré par notre outil, avec une fréquence de 429 Hz. Les parties ' . ', pause (silence) et '-' apparaissent clairement.
Ajoutons maintenant du "bruit" à ce son.
C'est déjà mieux ! Ce son généré ressemble déjà plus a un son que l'on peu trouver dans la nature autrement dit pas parfait.
Regardons de plus prêt ce que la variation des paramètres fréquence, vitesse et amplitude changent au spectrogramme de la lettre "a".
Première conclusion:
Il apparait clairement que les spectrogrammes générés se ressemblent beaucoup pour la même lettre de l'alphabet Morse. Ça devrait être plus facile à l'IA d'apprendre ces images que de reconnaitre par exemple des images d'animaux !