PCD – Préparation et caractérisation des données Chapitre 9 – Attributs pour les données audio Andrei Popescu-Belis Plan 1. Introduction : des ondes sonores à l’informatique 2. Représentation numérique des signaux audio 3. Attributs audio : domaine temporel 4. Attributs audio : analyse temps-fréquence (transformation de Fourier, cepstre, coefficients MFCC) 5. Attributs audio : domaine fréquentiel 6. Exemple de librairie en Python 7. Utilisation des attributs pour la reconnaissance de la parole 2 1. Introduction : des ondes sonores à l’informatique 3 Ondes sonores • Ondes longitudinales de pression : les molécules oscillent • Produites par la vibration d’un objet, puis propagées par l’air Source : https://github.com/musikalkemist/AudioSignalProcessingForML 4 Variation de la pression de l’air dans le temps • Pression à la sortie d’une clarinette • Durée de l’enregistrement : 20 ms Source: Rburtonresearch, CC BY-SA 4.0, via Wikimedia Commons 5 Zoom sur ‘she’ Zoom sur [iy] Source : SLP3, figures 25.9, 25.13 et 25.14 6 Perception de la fréquence et de l’amplitude Fréquence plus élevée = son plus haut Remarque : la hauteur perçue (p.ex. en termes de notes de musique) varie avec le logarithme de la fréquence réelle de l’onde sonore (en Hz) Source : https://github.com/musikalkemist/AudioSignalProcessingForML Amplitude plus élevée = son plus fort Remarque : l’intensité perçue varie aussi de manière logarithmique avec l’intensité réelle et se mesure en décibels par rapport à une intensité minimale audible conventionnelle dB(I) = 10 log10(I / Imin) et Imin = 10-12 W/m2 8 Capacités humaines de traitement audio • Les ondes sonores véhiculent des informations que les humains traitent naturellement, avec facilité • Exemples : • distinguer la parole, la musique, les « bruits » • identifier un locuteur comme femme ou homme • reconnaître l’identité d’une personne • comprendre les mots et le contenu linguistique 9 Buts du traitement automatique de l’audio • Classification • parole | musique | bruit | silence • Suppression du bruit • Compression (p.ex. MP3) • Music information retrieval • Ajout d’effets sonores • Compréhension de scènes audio • localiser les locuteurs dans une pièce • détecter des pannes sur machines • activer des caméras de surveillance • Reconnaître les locuteurs, les authentifier • Détecter les tours de parole (conversation) • Reconnaissance automatique de la parole, automatic speech recognition, ASR = transcrire sous forme de texte ce qui est dit • Communiquer avec des assistants électroniques sur smartphone, domotique, central téléphonique, ou système de réservation • Remplir des formulaires quand l’usage du clavier n’est pas possible (p.ex., cabinet médical) • Commandes vocales : voiture, navigateur, avion • Augmenter l’accessibilité des enregistrements • générer des sous-titres • générer des PVs de séances • chercher par mots-clés • Monitorer les conversations dans les centres d’appel (p.ex. pour mesurer la satisfaction) 10 2. Représentation numérique des signaux audio 11 Conversion analogique-numérique • reproduit assez bien la variation de pression due à l’onde sonore • Information résultante : « suite de 0 et de 1 » • valeurs numériques codées sur plusieurs bits • Solution = 1 + 2 1. Découper le signal en des intervalles de temps réguliers espacés de T = échantillonner à une fréquence 1/T • théorème de Nyquist-Shannon : on ne peut pas capturer ainsi des signaux avec des composantes de fréquence > (1/T)/2 Source : https://github.com/musikalkemist/AudioSignalProcessingForML • Signal de départ : tension électrique sortant d’un microphone 2. Quantifier l’amplitude du signal dans chaque échantillon (sample) 12 Convertir en nombres l’amplitude d’un signal ➢ c’est le cas des CD audio • Exercice : quelle place prend une minute de son sur un CD audio ? • échantillonnage = 44'100 Hz • codage de l’amplitude = 16 bits • Réponse : … … … Source : https://github.com/musikalkemist/AudioSignalProcessingForML • Codage sur 4 bits : 16 niveaux possibles • Codage sur 16 bits : 65'536 niveaux possibles 13 Fenêtre (frame) = ensemble d’échantillons Fenêtre de 2n échantillons (8 n 13) (perceptible) Source : https://github.com/musikalkemist/AudioSignalProcessingForML Durée d’un échantillon (à 44.1 kHz) = 0.0227ms (imperceptible à l’oreille) 14 Types d’attributs audio avec des exemples 1. Attributs temporels (analyse directe du signal) • Amplitude de l’enveloppe du signal • Carré-moyen de l’énergie • Nombre de passages par zéro (ZCR) 2. Attributs temps-fréquence (après transformation de Fourier) • Spectrogramme [slide suivante] • Spectrogramme Mel • Coefficients cepstraux Mel (MFCC) 3. Attributs fréquentiels (aussi après transformation de Fourier) • Rapports d’énergies de bandes de fréquences • Moyenne ou centroïde du spectre de fréquences • Variance du spectre de fréquences 16 Signal Spectrogramme Source : https://www.researchgate.net/publication/317089729_On_the_Performance_Degradation_of_Speaker_Recognition_System_due_to_Variation_in_Speech_Characteristics_Caused_by_Physiological_Changes 17 3. Attributs audio : domaine temporel 18 Attributs temporels souvent utilisés (1/2) 1. Enveloppe du signal • c’est l’amplitude maximale des échantillons d’une fenêtre (s(k)) • représente la force du signal à un moment donné • attribut sensible aux valeurs aberrantes du signal (outliers) 2. Carré-moyen de l’énergie (RMS) ❑ Le volume peut être normalisé par le maximum sur plusieurs fenêtres ❑ Le volume dépend aussi de l’amplification lors de l’enregistrement et de la conversion analogique/digital • calculé sur les échantillons d’une fenêtre • autre indicateur de la force du signal • moins sensible aux outliers • facile à calculer et souvent utilisé • indicateur fiable du silence ❖ Utilisation : détection du début d’un segment, classification musicale par genre 19 Attributs temporels souvent utilisés (2/2) 3. Zero-crossing rate (ZCR) • nombre de fois où un signal passe par la valeur 0 dans une fenêtre • indicateur robuste de la présence ou absence de voisement • les cordes vocales vibrent pour les voyelles et certaines consonnes (‘b’, ‘v’, ‘d’, ‘z’ → ZCR faible) mais pas pour d’autres consonnes (‘p’, ‘f’, ‘t’, ‘s’ → ZCR élevé) ou si on chuchote (→ ZCR élevé) • instruments musicaux : percussions (→ ZCR élevé) vs. autres (→ ZCR faible) ➢ volume bas mais ZCR élevée parole non voisée ou percussions ➢ alternance de segments avec ZCR élevée vs. basse consonnes vs. voyelles parole 4. Hauteur du son (pitch) • fréquence fondamentale de l’onde • parole : typiquement 50 Hz 450 Hz | musique : spectre audible (20 Hz 20 kHz) • attribut de bas niveau que l’on peut extraire d’une fenêtre (frame) ➢ Comment l’obtenir ? Grâce à la transformation de Fourier ! 20 4. Attributs audio : analyse temps-fréquence 21 Analyse d’un signal audio en termes de fréquences • Beaucoup de signaux audios sont périodiques sur un court laps de temps • par exemple, sur 5 à 50 ms, donc sur une fenêtre contenant de nombreux échantillons [voir slide 14] • des sinusoïdes de différentes fréquences composent le signal dans cette fenêtre → spectre • suite des spectres quand on déplace la fenêtre avec le temps → spectrogramme • Le spectrogramme représente l’information fréquentielle du signal au cours du temps • il permet de construire des attributs audios qui caractérisent mieux les signaux que les attributs temporels • Obtenir le spectrogramme s’appuie sur la théorie des séries de Fourier • tout signal périodique f(x) de fréquence 1/T se décompose en une somme de fonctions sinusoïdales • chaque coefficient de Fourier cn(f) indique l’importance de la sinusoïde de fréquence n/T dans le signal f Source : https://fr.wikipedia.org/wiki/Série_de_Fourier 22 Illustration (1) : somme de trois sinusoïdes f = f1 + f2 + f3 f1 f2 f3 Source : https://github.com/musikalkemist/AudioSignalProcessingForML 23 Illustration (2) : un signal et ses coefficients cn Source : https://fr.wikipedia.org/wiki/Analyse_spectrale, domaine public 24 TF Source : https://github.com/musikalkemist/AudioSignalProcessingForML Illustration (3) : signaux non périodiques • Les prismes séparent spatialement la lumière en composantes, ordonnées par fréquence • Équivalent physique de la transformée de Fourier • Permettent de mesurer l’intensité de chaque fréquence (=couleur) d’un signal lumineux 25 La transformée de Fourier • En réalité, toute fonction peut s’écrire comme une somme intégrale de fonction périodiques • il s’agit de sinusoïdes à valeurs complexes notées exp(i 2x), où est la fréquence • Les coefficients de Fourier sont donnés par la transformée de Fourier de la fonction pour chaque fréquence • pour chaque fréquence , le module de la transformée de Fourier donne l’amplitude la composante sinusoïdale (complexe) dans le signal de départ, et l’argument donne la phase • une grande amplitude indique que le signal ressemble à une sinusoïde de cette fréquence • rappel : le ‘module’ d’un nombre complexe (a + ib) est (a2 + b2) et son ‘argument’ est arctan(b/a) 26 Analyse par fenêtre ( frame ) • Une fenêtre contient un grand nombre d’échantillons, p.ex. entre 512 et 8192 • Pour caractériser le signal, on applique l’analyse de Fourier à chaque fenêtre • Éviter les fenêtres disjointes faire avancer la fenêtre d’un nombre d’échantillons plus petit que sa taille (p.ex. ½ ou ¼) • Les discontinuités en marge de chaque fenêtre (en rouge) posent problème • elles génèrent des composantes de haute fréquence dans les coefficients de Fourier • solution : diminuer la valeur du signal près des marges avec la « fenêtre de Hahn » • https://en.wikipedia.org/wiki/Window_function#Hann_and_Hamming_windows Source : https://github.com/musikalkemist/AudioSignalProcessingForML 27 Signal d’origine Fenêtre de Hann Signal résultant 28 Transformée de Fourier dans une fenêtre • La version générale de la transformée de Fourier est difficile à appliquer • considère une plage de temps entre – et + • s’intéresse potentiellement à toutes les fréquences entre 0 et + • a une complexité O(N2) où N est le nombre de coefficients (fréquences) cherchés • Short-term Fourier Transform (STFT) : applicable à des données audios réelles • données pour lesquelles la fonction f est non-nulle seulement dans une fenêtre • calcule les coefficients pour un nombre fini de fréquences N • souvent égal au nombre d’échantillons N de la fenêtre • algorithme rapide (FFT) de complexité O(N log N) • Résultat = matrice spectrale : nombre de fréquences nombre de fenêtres 29 Matrice spectrale = spectrogramme • STFT: calcule l’intensité de chaque fréquence dans chaque fenêtre = le carré du module du coefficient de Fourier complexe de la fréquence • Axe horizontal = fenêtres (m) axe vertical = fréquences (k) couleur = intensité (Y) « nineteenth century » Auteur : Aquegg, Public domain, via Wikimedia Commons https://commons.wikimedia.org/wiki/File:Spectrogram-19thC.png 30 Spectrogramme sur l’échelle des « mels » • La perception des fréquences des sons par les humains est logarithmique • échelle des « mels » = faire que des différences égales soient perçues comme égales • l’humain ne perçoit pas le doublement de la fréquence d’un son (octave) comme la même variation de hauteur quelle que soit la fréquence • la valeur correspondante en mels d’une fréquence f est m = 2595 log10(1 + f/700) • les constantes 2595 et 700 ont été choisies pour que 1000 Hz = 1000 mels • Construction du « spectrogramme en mels » Exécuter la STFT Convertir l’amplitude en décibels Choisir le nombre d’intervalles de fréquences (p.ex. 40 ou 90 ou 128, etc.) Convertir les bornes des intervalles de fréquences (Hz) en mels Additionner les coefficients de Fourier dans chaque intervalle de fréquences 31 Mel-Frequency Cepstral Coefficients (1/2) • Cepstre (à prononcer ‘kepstre’) • à l’origine, concept introduit pour les signaux sismiques (1960) • attribut essentiel pour la reconnaissance de la parole (> 1980) et de la musique (> 2000) • décrit informellement comme le « spectre du spectre » ➢ Transformée de Fourier inverse du log de la transformée de Fourier Source : https://github.com/musikalkemist/AudioSignalProcessingForML 32 Illustration 33 Mel-Frequency Cepstral Coefficients (2/2) • Combien de coefficients MFCC utiliser ? • en pratique, les 13 premiers, car ce sont les plus informatifs • on peut aussi utiliser leurs variations entre fenêtres (, deltas) • on peut même utiliser les variations des variations () 39 coefficients par fenêtre • Avantages • capturent les macrostructures du spectre tout en ignorant les microstructures • efficaces pour traiter la parole (reconnaissance vocale, identification du locuteur) aussi bien que la musique (classification de morceaux, détection d’instruments) • Inconvénients • peu robustes face aux bruits • beaucoup de méta-paramètres doivent être choisis • pas directement utilisables pour la synthèse vocale 34 Autres attributs temps-fréquence • Linear Predictive Code (LPC) • basé sur un modèle physique de la parole : poumons → cordes vocales → tractus vocal → cavité nasale et buccale • plusieurs algorithmes existent pour calculer les coefficients LPC • attributs très utilisés pour le codage et la synthèse de la parole • Attributs dérivés • partial correlation (PARCOR), log area ratio (LAR), line spectrum pair (LSP), line spectrum frequency (LSF), etc. 35 5. Attributs audio : domaine fréquentiel 36 Attributs fréquentiels • Nécessitent la transformation de Fourier (SFTF) pour leur calcul, fenêtre par fenêtre • Band energy ratio (BER) • comparaison de l’énergie entre différentes bandes de fréquence ➢ trouver les fréquences dominantes dans une fenêtre ➢ séparer musique/parole, classifier le genre de musique • Spectral centroid (SC) • centre de gravité (moyenne pondérée) du spectre de fréquences ➢ indique la bande de fréquences où il y a le maximum d’intensité ➢ classification audio ou musicale • Largeur de bande (BW) ou étalement spectral • variance ou étalement autour du centroïde SC ➢ indique le timbre perçu 37 6. Exemple de librairie en Python 38 https://github.com/tyiannak/pyAudioAnalysis Extrait les attributs audios en deux étapes 1. Attributs à court terme • divise le signal en fenêtres (frames) • calcule les attributs fenêtre par fenêtre ➢ série de vecteurs d’attributs pour chaque fenêtre du signal 2. Attributs à moyen terme • extrait des statistiques sur un ensemble de fenêtres : p.ex. moyenne, écart-type, etc. • Nombre d’attributs extraits par fenêtre : 34 • extrait aussi les attributs delta si demandés, arrivant ainsi à 64 attributs 39 Attributs extraits par pyAudioAnalysis ID Feature Name Description 1 Zero Crossing Rate The rate of sign-changes of the signal during the duration of a particular frame. 2 Energy The sum of squares of the signal values, normalized by the respective frame length. 3 Entropy of Energy The entropy of sub-frames' normalized energies ( measure of abrupt changes). 4 Spectral Centroid The center of gravity of the spectrum. 5 Spectral Spread The second central moment of the spectrum. 6 Spectral Entropy Entropy of the normalized spectral energies for a set of sub-frames. 7 Spectral Flux The squared difference between the normalized magnitudes of the spectra of the two successive frames. 8 Spectral Rolloff The frequency below which 90% of the magnitude of the spectrum is concentrated. 9-21 MFCCs Mel Frequency Cepstral Coefficients form a cepstral representation where the frequency bands are not linear but distributed according to the mel-scale. 22-33 Chroma Vector A 12-element representation of the spectral energy where the bins represent the 12 equal-tempered pitch classes of western-type music (semitone spacing). 34 Chroma Deviation The standard deviation of the 12 chroma coefficients. 40 7. Utilisation des attributs pour la reconnaissance de la parole : automatic speech recognition 41 Speech recognition with HMMs ( 1990-2015) • Speech signal = piecewise stationary signal over a short time scale (e.g., 10 ms) • Input = sequence of n-dimensional real-valued vectors (n 10) every 10 ms • first n cepstral coefficients • additional attributes • vocal tract length and cepstral normalizations (to model speakers and recording conditions) • delta and delta-delta coefficients (to capture speech dynamics) • Hidden Markov Models = statistical models of sequences of symbols • state = mixture of Gaussians, different for each symbol (word or phoneme) • Decoding of the speech = Viterbi algorithm 42 Speech recognition with neural networks (> 2010) • Example: Connectionist Temporal Classification, CTC (Graves et al., 2006) • Outputs a single character for every frame of the input (encoder) • pre-final output is the same length as the input, post-processing is needed [next slide] • Inference/decoding: softmax over hidden state ht at each output step 43 CTC post-processing • A collapsing function is applied to combine sequences of identical letters → final output (words) 44 Implementation: example of Coqui STT https://github.com/coqui-ai/STT | https://stt.readthedocs.io • Simple open source speech-to-text engine • Architecture based on Deep Speech: Scaling up end-to-end speech recognition (2014) • recurrent neural network (RNN) : speech spectrograms → English text transcriptions • 5 layers of hidden units, the first 3 are not recurrent • Each utterance is divided into frames, each frame is a vector of MFCC features • Converts the input utterance into character probabilities per frame • P(c|x) for c {‘a’, ‘b’, ‘c’, . . . , ‘z’, space, apostrophe, ‘blank’} • ‘blank’ for a frame that does not generate a character by itself 46 Coqui STT 47 Coqui STT: acoustic model & language model • Two main runtime components 1. acoustic model audio input probability over characters from the alphabet 2. language model (used for hypothesis rescoring) probabilities coherent series of words in a language • e.g., “I read a book” is much more likely than “I red a book” (but they sound the same) • Training • acoustic model: RNN with TensorFlow trained on speech//transcripts • language model: n-gram model with KenLM trained on pure text 48 Examples of speech data (often commercial) • LibriSpeech: large open-source read-speech dataset (16 kHz, 1000 hours), audio books from the LibriVox project, with transcripts aligned at the sentence level (Panayotov et al., 2015) • divided into an easier (“clean”) and a more difficult portion (“other”) for evaluation • clean portion = higher recording quality & accents closer to US English • Mozilla Common Voice: publicly available dataset from volunteers, > 100 languages • English: 93k speakers, 3.5k hours, 1.67M sentences; French: 19k speakers, 1.15k hours, 1.64M sentencs • Switchboard: prompted telephone conversations between strangers, with 2430 conversations averaging 6 minutes each (8 kHz, 240 hours, 3M words) (Godfrey et al., 1992) • many auxiliary handmade annotations: parse trees, dialogue acts, phonetic and prosodic labels • CALLHOME: 120 unscripted 30-minute telephone conversations between native speakers of English, usually close friends or family (Canavan et al., 1997) 49 Sources • https://web.stanford.edu/~jurafsky/slp3/ , Chapters 25 and 26 • https://github.com/musikalkemist/AudioSignalProcessingForML • http://what-when-how.com/video-search-engines/audio-features-audio-processing-video-searchengines/ • https://en.wikipedia.org/wiki/Computer_audition • https://en.wikipedia.org/wiki/Speech_recognition • https://en.wikipedia.org/wiki/Short-time_Fourier_transform • https://github.com/tyiannak/pyAudioAnalysis • https://github.com/coqui-ai 50