Traitement Audio : Analyse et Techniques
Traitement Audio : Analyse et Techniques
Résumé
Contents
2 MP3 4
2.1 Principe général . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2 Analyse d’erreur par bande de fréquence . . . . . . . . . . . . . . . . . . . . . . . 4
2.3 Encodage perceptuel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3 Watermarking 7
3.1 Principe général . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.2 Spread spectrum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.3 Minimiser l’erreur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.4 Modèle sycho-acoustique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4 Dictation machine 10
4.1 Principe général . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.2 Approche statique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.3 Approche séquentielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2 Analyse musicale 13
2.1 Reconnaissance locale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.1.1 Timbre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.1.2 Harmonie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.1.3 Rythme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.1.4 En bref . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.2 Débuts de segment (onset) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.2.1 Variation d’énergie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2.2 Variations spectrales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1
Anthony Rouneau MAB2 Sciences Informatiques
3 Identification de musique 22
3.1 Analyse par frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2 Analyse par repères (landmarks) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2 Question 2 31
2.1 Question . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.2 Éléments de réponse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3 Question 3 32
3.1 Question . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.2 Éléments de réponse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4 Question 4 33
4.1 Question . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.2 Éléments de réponse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5 Question 5 34
5.1 Question . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5.2 Éléments de réponse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2
Anthony Rouneau MAB2 Sciences Informatiques
6 Question 6 35
6.1 Question . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
6.2 Éléments de réponse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
7 Question 7 36
7.1 Question . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
7.2 Éléments de réponse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3
Anthony Rouneau MAB2 Sciences Informatiques
Partie I
Dutoit – Analyse bas niveau
1 Cell phone
1.1 Analyse du fichier audio
Spectrogramme
On utilise une fenêtre de pondération pour afficher un spectrogramme. Au plus la taille de
cette fenêtre est élevée, au plus on a de détails. Inversement, si on prend une petite fenêtre, on
aura une vision globale, plus générale. Les différentes tailles ont chacune leurs avantages et in-
convénients. Un spectrogramme met en évidence les formants, qui peuvent être lu et reconnus
par des spécialistes. Les fréquences sont sur l’axe vertical, le temps sur l’axe horizontal, et
l’intensité en couleur. Exemple de spectrogramme détaillé (plus précis sur les couleurs) :
On affiche souvent un spectrogramme sur le fichier audio complet, ou en tout cas sur plusieurs
mots.
Périodogramme
Donne la densité spectrale de puissance. L’axe horizontal affiche les fréquences (souvent
normalisée pour représenter les fréquences entre 0 et Fe/2), tandis que l’axe vertical donne
l’amplitude. Le périodogramme s’applique généralement sur une lettre (voyelle) afin d’en
identifier les formants. Dans l’exemple suivant, Fe = 8kHz. On a donc 1 = 4kHz. On iden-
tifie la fondamentale à 125Hz (premier pic), et ses formants (pics de plus haute amplitude) en
300, 1400 et 2700Hz.
4
Anthony Rouneau MAB2 Sciences Informatiques
5
Anthony Rouneau MAB2 Sciences Informatiques
correctement liées. De plus, on doit faire attention à ce que les excitations (impulsions de Dirac)
se rejoignent correctement (décalage nécessaire dans le cas ou le nombre de segment choisi n’est
pas un multiple de la fréquence d’échantillonnage).
Pitch adaptatif
Pour chaque frame, on va analyser le pitch et générer une excitation qui y correspondra.
On doit faire attention au décalage qui est nécessaire pour lier les différentes excitation tout en
gardant des fenêtres de 10ms.
LPC10 (2400bits/s)
Le même principe, mais avec des fenêtres plus grandes : 22.5ms.
2 MP3
2.1 Principe général
Le principe général de la compression MP3 est d’ajuster la quantization du son en fonction
de ce qui est audible ou pas. En effet, on peut augmenter le ratio signal sur bruit (S/N) en aug-
mentant le bit rate, mais ce n’est pas nécessaire de le faire sur toutes les bandes de fréquence de
la même façon. C’est pourquoi on va utiliser un modèle de perception qui va nous guider pour
savoir quelles bandes de fréquence améliorer et quelles bandes de fréquence il faut ’laisser à
l’abandon’.
6
Anthony Rouneau MAB2 Sciences Informatiques
7
Anthony Rouneau MAB2 Sciences Informatiques
On va alors faire en sorte que les filtres g0 et g1 produisent des recouvrements spectraux qui
s’annulent réciproquement (Esteban & Galland). Il y a plusieurs méthodes pour générer ces
filtres. MP3 est un mélange de PQMF et de MDCF. En particulier, le MP3 effectue 32 fois moins
de calcul que le MDCF car il calcule les cas particuliers seulement.
8
Anthony Rouneau MAB2 Sciences Informatiques
Le principe du MP3 est d’appliquer un tel encodage pondéré, en utilisant un modèle per-
ceptuel calculé selon l’oreille humaine. On va donc accentuer la précision sur les zones où
l’oreille humaine est sensible et diminuer la précision dans les zones que l’oreille humaine
n’entend pas. On dit donc que le signal sur bruit (SNR) doit rester au dessus du SMR (seuil
défini par le modèle auditif).
3 Watermarking
3.1 Principe général
Le principe du watermarking va être d’utiliser une encodage en spread spectrum classique,
comme celui de l’ADSL sur le signal téléphonique, afin de cacher une information ou un mes-
sage dans un signal audio. Pour ce faire, on va considérer le signal audio comme étant le bruit,
et la watermark comme étant le signal d’origine.
9
Anthony Rouneau MAB2 Sciences Informatiques
Fs
le spread signal est calculé grâce à debit ). Pour démoduler, il faut alors multiplier les frames
(autant de fois qu’il y a de bits dans le message) du son watermarké par le spread signal.
10
Anthony Rouneau MAB2 Sciences Informatiques
L’idée est donc de réduire le débit autant que possible, en poussant le gain un minimum.
En particulier, on peut augmenter le gain "juste ce qu’il faut" pour ne pas avoir d’erreur de
détection. Mais de cette manière, on risque très probablement d’entendre la watermark au
dessus de l’audio...
11
Anthony Rouneau MAB2 Sciences Informatiques
4 Dictation machine
4.1 Principe général
Le principe ici est de calculer les probabilités d’obtenir des séquences de lettres. Formalisé,
ça donne ceci :
On peut alors essayer de retrouver la lettre en fonction des fréquences détectées (et donc par
leurs formants) et éventuellement en fonction des lettres précédentes. On fonctionne générale-
ment avec le logarithme des probabilités afin d’avoir des nombres plus grands et plus compa-
rables
On peut estimer un tel modèle grâce à un clustering (il faut prendre des valeurs réelles,
12
Anthony Rouneau MAB2 Sciences Informatiques
où proche de celles-ci pour initialiser k-means). Le problème est que k-means n’a qu’un sens
géométrique. On va faire appel à l’algorithme d’Estimation-Maximisation (E-M) avec les valeurs
obtenues par k-means comme valeurs initiales. Estimation = On calcule les probabilité pour une
donnée d’appartenir à un modèle (cluster). Maximisation = On recalcule les moyennes/variances
pour maximiser la séparation entre les classes.
N-grams
On va utiliser des probabilités que deux mots puissent se suivre. Par exemple, pour séparer
’hear’ (/ir) et ’here’ (/ir), qui ont la même prononciation, on peut dire que le bigram (’we’,
’here’) est très peu probable. On peut calculer ces probabilités sur de grandes bases de données
de phrases.
13
Anthony Rouneau MAB2 Sciences Informatiques
Partie II
Dupont – Reconnaissance automatique
1 Introduction
1.1 Analyse / Reconnaissance
Il y a deux étapes dans la reconnaissance automatique de sons :
• Analyse – Extraction d’attributs (features) et d’information haut-niveau depuis un signal
brut.
• Reconnaissance – Utilisation des attributs extraits par l’analyse pour reconnaître/classer
un son, une musique.
Depuis l’arrivée des réseaux de neurones profonds, ces étapes tendent à se confondre (à
cause des CNNs qui analysent et classent). Si on regarde la musique comme un signal temporel
uniquement, c’est un signal très désordonné et est un peu un fouillis. Le but de l’analyse/reconnaissance
c’est d’arriver à analyser les sons et les musiques comme le cerveau humain le ferait : isoler des
instruments, isoler le rythme et le tempo, imaginer une partition musicale permettant de jouer
la musique écoutée, ...
14
Anthony Rouneau MAB2 Sciences Informatiques
Ces trois dimensions seulement ne suffisent pas pour décrire les musiques les plus complexes.
2 Analyse musicale
2.1 Reconnaissance locale
2.1.1 Timbre
Le timbre représente tout ce qui rend le son particulier. Par exemple la différence entre une
note de piano et la même note jouée à la guitare est le timbre du son. On parle aussi de timbre
pour des combinaisons d’effets différents. On utilise des Mel-frequency cepstral coefficients
(MFCCs) sur chaque frame comme attributs du son pour isoler le timbre. En effet, les MFCCs
sont utilisés car ils ne prennent pas en compte le "pitch", et donc la note jouée. En pratique, on
utilise un timbregramme, qui est une séquences de MFCCs affichée de manière similaire à un
spectrogramme. Ils sont une représentation compacte de l’enveloppe spectrale de puissance.
L’idée est que chaque coefficient représente une partie du timbre.
Les MFCCs sont bons pour détecter les instruments utilisés, mais aussi pour détecter l’artiste
et le genre. En effet, les effets utilisés peuvent aider pour classifier le genre, et les instruments
utilisés peuvent aider à reconnaitre l’artiste.
2.1.2 Harmonie
Pour détecter les harmonies et les notes en général, on va utiliser des chromagrammes sur
des frames de musique (30ms). Ils vont tenter de détecter des suites de notes en ignorant
l’octave de ces dernières. De cette manière, on peut identifier les accords joués (ainsi que leurs
variantes: mineurs, 7ème , ...). Le principe est qu’une banque de filtres et utilisée afin d’isoler
chaque note. Pour chaque note, un filtre B(x) est utilisé et retourne 1 si le modulo 12 vaut 0 (si
on se trouve à une octave de la note du filtre). On peut noter que dans la formule, un paramètre
k0 permet d’accorder le chroma à sa guise (pour varier du La à 440Hz par exemple).
15
Anthony Rouneau MAB2 Sciences Informatiques
2.1.3 Rythme
Contrairement aux deux précédentes dimensions, le rythme s’analyse sur plusieurs secon-
des de musique, un beat n’a de sens qu’avec les beats qui l’entourent pour finalement former
un rythme. C’est pourquoi on va analyser des mesures.
16
Anthony Rouneau MAB2 Sciences Informatiques
On peut utiliser les tempogrammes pour segmenter les musiques en différentes parties. On
peut imaginer qu’à chaque changement de rythme, une nouvelle partie de la musique com-
mence
17
Anthony Rouneau MAB2 Sciences Informatiques
2.1.4 En bref
Grâce au timbre (timbregramme), aux notes (chromagramme) et au rythme (tempogramme),
on peut essayer de classer des musiques selon leur genre et selon les émotions qu’elles évo-
quent.
18
Anthony Rouneau MAB2 Sciences Informatiques
Pour remédier à ce problème, on peut amplifier l’amplitude des hautes fréquences dans le
spectre afin de marquer les changements abrupts. En effet, un changement soudain implique
une montée d’énergie dans les hautes fréquences. C’est ce qu’on a fait dans l’exemple suivant;
19
Anthony Rouneau MAB2 Sciences Informatiques
Une analyse trame par trame implique que la phase va changer à chaque analyse. Cepen-
dant, on peut prédire la phase de la prochaine analyse car elle augmente de manière linéaire
jusqu’à retomber à zéro (évolution cyclique). On va donc estimer qu’il y a une nouvelle note
lorsqu’il y a un changement abrupt (non-linéaire, différent de la valeur prédite) de phase. Tout
ceci est illustré dans l’exemple suivant.
20
Anthony Rouneau MAB2 Sciences Informatiques
21
Anthony Rouneau MAB2 Sciences Informatiques
2.3 Tempo
Jusqu’à présent, on s’est intéressé au rythme de manière locale, mais on voudrait maintenant
avoir le tempo global de la chanson (e.g. 90BPM). Pour ce faire il faut détecter les onset. De plus,
il faut s’intéresser aux "tatum", qui sont des onsets entre les beats importants pour la perception.
Typiquement, le tempo représente la périodicité entre les onsets de grande intensité.
22
Anthony Rouneau MAB2 Sciences Informatiques
2.4 Beats
Une fois le tempo détecté, on peut s’attaquer à la détection des beats qui ne sont finalement
que les pics principaux d’onset séparés par des périodes de tempo. Il faut donc chercher à max-
imiser la fonction
Une chose plus compliquée à faire est de détecter les downbeats, qui sont les beats qui
démarrent une mesure. Pour ce faire, on a besoin de plus de connaissances musicales car sa po-
sition varie selon les genres musicaux. Des fonctions de signatures temporelles seraient néces-
saires.
2.5 Conclusion
Note générale sur l’analyse musicale: Il y a beaucoup plus de techniques que celles vues au
cours pour extraire des informations d’une musique.
23
Anthony Rouneau MAB2 Sciences Informatiques
3 Identification de musique
Principe : reconnaître une musique par son titre et artiste en n’écoutant que quelques secon-
des. Pour ce faire on va chercher une "empreinte digitale" unique pour la musique, qui pourra
être reconnue en écoutant une partie de la musique.
24
Anthony Rouneau MAB2 Sciences Informatiques
On utilise ensuite ces 32 bits par frame pour retrouver la musique. La méthode principale-
ment utilisée est une "lookup table" (LUT) qui a une table d’entrée contenant toutes les com-
binaisons possibles d’empreintes 32 bits (23 2 possibilités). On a ensuite accès à n’importe quel
endroit de n’importe quelle chanson et on peut commencer à chercher un match.
En effet, utiliser une recherche en force brute est débile et prendrait trop de temps. De plus,
grâce à la LUT, on peut facilement contourner les erreurs à 1 bit près. En inversant un par un
les bits d’une séquence de 32 bits, on obtient 32 nouvelles séquences que l’on peut entrer dans
la LUT. Néanmoins, le bruit peut poser problème pour retrouver correctement ces vecteurs 32
bits.
Ces repères sont robustes car ils se reposent sur les pics du spectrogramme qui sont les
fréquences principales et les harmoniques de celles-ci, et sont donc les composantes les plus
fortes en énergie dans le spectre. Les valeurs des triplets sont discrétisées selon 256 bandes de
fréquences et 64 marquages temporels.
On a alors 22 bits par repère (fréquence, fréquence, temps) → (8 bits, 8 bits, 6 bits).
25
Anthony Rouneau MAB2 Sciences Informatiques
La détection de pics dans le spectrogramme peut être ajustée en réglant des paramètres afin
de détecter moins ou plus de pics, et ce afin de limiter le nombre de repères par chanson. Si de
tels paramètres sont utilisés pour les chansons dans la base de données, alors ces paramètres
doivent être appliqués également aux chansons écoutées (qui doivent être reconnues).
Ensuite, les repères sont présentés à une LUT qui va encore une fois retourner toutes les
chansons qui contiennent le repère donné. Cependant, pour reconnaître la musique, il va fal-
loir faire appel au temps dans la chanson auquel l’ancre du repère a été détecté. En effet, on va
faire une comparaison temporelle entre le moment où le (l’ancre du) repère a été détecté et le
moment ou le repère se trouve dans la chanson de la base de données. La comparaison devrait
donner une séquence claire, permettant d’avoir un grand nombre de match sur une courte péri-
ode, et donc un grand nombre de match dans un histogramme comptant le nombre de matchs
par fenêtre de temps.
26
Anthony Rouneau MAB2 Sciences Informatiques
Cette technique permet d’obtenir de très bon résultat, malgré un bruit élevé (SNR de 3dB)
et une compression élevée. Par contre, la technique est sensible à la modification de la vitesse
de la musique originale (car le repère dépend du temps de par sa 3‘eme composante) ou si on
modifie le pitch de la musique (car le repère dépend fortement des fréquences fondamentales).
1. Extraire des informations utiles des fichiers audio (FFT, Spectrogramme, ...).
2. Calculer les probabilités d’obtenir tel ou tel phonèmes à partir des informations extraites.
3. Calculer les probabilités d’obtenir un tel mot ou une telle phrase selon une suite de phonèmes.
Les deux principales faiblesses de cette technique est (1) qu’il faut évaluer à la main l’utilité
des informations à extraire de l’audio pour chaque nouvelle tâche et (2) qu’il n’y a pas d’optimisation
globale de ces 3 étapes, il n’y a qu’une optimisation locale pour chaque étape. De plus, les
performances n’égalent pas les performances humaines. Pour remédier à ces problèmes, on
va faire appel à des réseaux de neurones profonds qui vont effectuer les 3 étapes eux-même,
permettant une optimisation globale et une facilité d’utilisation (car pas d’analyse des features
intéressantes). Ce faisant, on se débarrasse de la partie analyse du signal, mais aussi des suppo-
sitions faites sur les modèles probabilistes et sur les features qui pourraient être intéressantes.
27
Anthony Rouneau MAB2 Sciences Informatiques
4.1 Neurone
Avant de créer un réseau, on va commencer par définir ce qu’est un neurone. Deux fonctions
intéressaient les chercheurs à la base : (1) le symbolisme, permettant de représenter les don-
nées et la connaissance humaine, et (2) le connectionisme, permettant à des cellules virtuelles
d’interagir et leur capacité d’apprentissage.
Le principe d’un neurone est de faire une somme pondérée de toutes les dimensions de
la donnée entrée, d’y ajouter éventuellement un bias, et ensuite d’y appliquer une fonction
permettant de classer la donnée comme appartenant (1) ou n’appartenant pas (0) à une classe
spécifique. On a donc un classificateur binaire. On peut noter que si les données ne sont pas
séparable linéairement, on peut toujours trouver une transformation de l’espace (en ajoutant
des dimensions par exemple) pour rendre les données séparables linéairement dans ce nouvel
espace.
Entraîner un tel réseau consiste à ajuster les poids de la somme. On peut noter que si un
ensemble de poids classifie parfaitement un ensemble de donnée, ces même poids multipliés
par une constante classifiera les données tout aussi parfaitement. Il n’y a donc pas de moyen de
connaître les poids réellement optimaux (car bases de donnée finies et incomplètes par rapport
aux données réelles possibles). Les techniques modernes cherchent à éviter ce problème au
maximum.
4.2 Réseau
Il existe plusieurs architectures connues :
28
Anthony Rouneau MAB2 Sciences Informatiques
On peut voir un neurone comme étant un filtre audio, défini par ses poids, calculant se ré-
sonance avec l’entrée (par un calcul de cross-corrélation). Il en ressort une """"puissance de
résonance"""", qu’on peut apparenter aux probabilité en sortie du neurone. C’est par cette
comparaison que l’on peut observer les résultats des couches intermédiaires d’un CNN. (On
multiplie les pixels par les poids des neurones). On peut donc voir les réseaux de neurones
comme une manière de construire (durant la phase d’entraînement) d’appliquer une cascade,
une banque de filtres.
29
Anthony Rouneau MAB2 Sciences Informatiques
4.3.1 Amélioration 1
La première amélioration (cf. (1) dans l’image précédente) vise à mieux analyser le signal
audio en utilisant une Restricted Boltzmann Machine (RBM, une architecture de réseaux de
neurones permettant un apprentissage non-supervisé). Cette analyse va permette de creuser
les détails de plusieurs bandes de fréquences en même temps. En effet, les phonèmes peuvent
être détectés grâce à leurs deux fréquences de bases (formants), et les grouper déjà à ce niveau-ci
permet une analyse plus poussée.
4.3.2 Amélioration 2
Une autre amélioration (cf. (2) de l’image sur les MFCCs) serait de ne pas analyser le signal
audio brut, mais d’analyser la sortie de la FFT en la donnant en entrée à un réseau de neu-
30
Anthony Rouneau MAB2 Sciences Informatiques
rones profond. Le but étant de remplacer la banque de filtre de Mel par des "filtres" calculés
par un réseau de neurones. On peut voir dans l’exemple suivant que les filtres obtenus sont
très proches des filtres de Mel, et ces derniers sont le résultats d’années de recherche dans le
domaine. On a donc une structure qui permet de trouver les filtres optimaux (ce qui n’était pas
le cas pour les filtres de Mel) automatiquement, sans avoir besoin d’années de recherche, juste
de l’entraînement.
Appliquer cette technique en sortie de la fenêtre de pondération (au (1) de l’image MFCC)
également permettrait d’améliorer encore les résultats.
4.3.3 Amélioration 3
Appliquer une RBM à la sortie de la FFT permet d’avoir des résultats assez haut-niveau en
sortie. (analyse fréquence par fréquence).
4.4 Conclusion
Les réseaux de neurones profonds permettent d’entraîner automatiquement des systèmes
complexes "All-In-One", mais demande énormément de données afin d’être précis, peuvent
vite devenir des boites noires, et les étudier demande beaucoup de temps car les architectures
sont nombreuses et encore en phase de tests.
31
Anthony Rouneau MAB2 Sciences Informatiques
Partie III
D’Alessandro – Synthèse musicale et audio
temps-réel
1 Question 1
1.1 Question
Décrivez les notions de “temps-réel” vues des points de vue du système informatique et de
l’utilisateur. À l’aide d’exemples concrets, illustrez brièvement comment ces deux perspectives
affectent la latence acceptable d’un système audio temps-réel.
Priority Inversion Lorsque l’on veut faire du hard real-time, il faut éviter au maximum les
tâches qui sont plus lentes que votre tâche. C’est ce qu’on appelle l’inversion de priorité. Ces
tâches dépendent souvent d’interruptions systèmes qu’elles doivent attendre, ou encore de con-
traintes physiques comme l’attente d’un disque dur, etc... Exemple :
Toutes ces tâches sont dépendantes d’autres tâches pour être complétées, c’est pourquoi on ne
peut pas garantir un moment auquel elles seront terminées.
32
Anthony Rouneau MAB2 Sciences Informatiques
Perception L’être humain utilise plus que 5 sens pour interagir avec le monde, on peut citer
par exemple le retour visuel, le retour auditif, la conscience de la position de ses membres
(proprioception), le retour haptique, le modèle balistique (trajectoire emprunté par ses membres
pour effectuer une action), etc... Parler d’instantanéité revient alors à trouver un juste équilibre
entre tous ces sens.
Retour audio En particulier, les décalages audio pourraient être entendus par un homme,
c’est pourquoi on va chercher à éviter de lancer des tâches dont on ne peut mesurer le temps
d’exécution dans le thread audio. Garder ce thread audio aussi rapide et fluide permettra un
sentiment d’instantanéité à l’oreille humaine.
2 Question 2
2.1 Question
Vous êtes dans la situation où, pour produire un son en temps-réel, vous devriez allouer
une ressource mémoire importante. On vous a dit, en passant, qu’il “fallait éviter les malloc(),
car ça faisait glitcher l’audio”. Veuillez re-contextualiser cette mise en garde: Qu’est-ce qu’un
audio glitch? Quel est le lien entre allocation de mémoire et audio glitch? Comment éviter cela?
33
Anthony Rouneau MAB2 Sciences Informatiques
Pour arranger ce problème, on peut simplement ne pas utiliser de malloc pendant l’exécution
du thread audio, mais sur un autre thread, ou avant que le thread audio ne se lance. Si ça a du
sens, on peut aussi utiliser des structures de données ne demandant pas ce genre d’allocation
mémoire, comme un ring buffer (il faut alors que toutes les données ne soient pas à garder).
3 Question 3
3.1 Question
Comment, sur un système d’exploitation moderne, les applications gèrent-elles leur accès
aux ressources audio? Expliquer, dans son contexte, ce qu’est le “callback audio”, ce qu’il fait
et son lien avec les entrées/sorties audio d’un ordinateur typique.
34
Anthony Rouneau MAB2 Sciences Informatiques
64
En pratique, le buffer envoie 64 échantillons à la fois, ce qui représente 44100 = 0.0015s de
décalage entre deux sorties audio. On se trouve bien dans la fenêtre idéale pour l’impression
humaine d’instantané.
4 Question 4
4.1 Question
Dans mon application, j’ai inséré un filtre numérique très complexe et le calcul de ses co-
efficients prend, sur une machine typique, 20 ms. Je souhaite bien évidement que le taux
de rafraîchissement de ces coefficients soit le plus proche possible du minimum, soit 50 Hz.
Décrivez deux approches différentes permettant de réaliser ce filtrage sans aucun glitch audio.
Méthode 2 Dans cette deuxième méthode, on suppose avoir le contrôle sur la taille du buffer
audio. Dans ce cas, on va chercher à avoir un buffer assez grand que pour attendre les données
traitées par le filtre. La taille idéal de ce dernier peut se calculer facilement :
nb_samples
= 0.020s
sampling_freq
35
Anthony Rouneau MAB2 Sciences Informatiques
5 Question 5
5.1 Question
Décrivez en quoi la synthèse additive est un exemple simple de “phaseur + table d’onde”
( en anglais: “phasor + wavetable” ). À quoi le phaseur est-il associé en synthèse additive et
pourquoi est-ce si important de piloter la synthèse par ce phaseur?
36
Anthony Rouneau MAB2 Sciences Informatiques
En changeant son amplitude, on peut le faire osciller entre 0 et 2pi pour l’utiliser comme in-
dex pour la "wavetable". En changeant la fréquence du phaseur, on peut changer la fréquence
du sinus. Exemple: Si l’on prend un phaser avec pour un une fréquence de 2Hz et que l’on veut
additionner deux sinus d’une fréquence respective de 2 et 4 Hz, il suffira de faire wavetable(phaser(x))
+ wavetable(phaser(2x)).
Il est donc possible de créer des signaux complexes avec ces deux outils combinés. De plus le
phaseur permet de fournir implicitement une base de temps pour les sinus. Un exemple visuel
est donné ici3 .
6 Question 6
6.1 Question
Qu’est-ce qu’un buffer circulaire ( ring buffer )? Illustrez son fonctionnement et son util-
ité dans deux exemples typiques: a) la visualisation de longs segments audio à l’écran; b) la
synthèse de longues réponses impulsionnelles hors du thread audio.
a) Pour la visualisation de longs segments audio, le principe est d’écrire les signaux audio
reçu ou envoyés au buffer audio dans le buffer circulaire, et d’utiliser la tête de lecture dans
le thread visuel. L’avantage est qu’on peut régler la fréquence de rafraîchissement vidéo afin
de ne pas avoir de ralentissement. On peut essayer de faire en sorte que le thread visuel se
rafraîchisse en même temps que l’on reçoit l’audio à visualiser. On va laisser alors un peut
d’avance à la tête d’écriture avant d’afficher les signaux audio au niveau visuel. Le tout sans
jamais à avoir à allouer plus d’espace mémoire afin de ne pas avoir de ralentissement sur la
visualisation.
3
[Link]
37
Anthony Rouneau MAB2 Sciences Informatiques
b) Même principe que la réponse à la question 5 – On va chercher à stocker les résultats des
calculs juste un peu plus vite qu’on ne les lit dans le thread audio. Ceci permet de ne jamais
avoir à attendre ces calculs et ainsi éviter les glitchs audio.
7 Question 7
7.1 Question
Décrivez le principe de fonctionnement d’un guide d’ondes ( en anglais: waveguide ) de
type Karplus-Strong. Pourquoi sonne-t-il comme une corde pincée? Quel mécanisme lui donne
sa fréquence fondamentale? Comment est-elle calculée?
• Un gain – Résonance.
• Un délai – Fréquence fondamentale de la note jouée.
• Un filtre – Timbre.
Ces trois éléments font parti d’une boucle mettant à jour les valeurs du buffer audio.
Gain Le gain est ce qui va faire durer la note (résonner). En pratique, le gain ∈ [0, 0.999999...]
car s’il valait 1, la note ne s’arrêterait jamais et s’il valait plus que 1, le son finirait par saturer
car son amplitude ne ferait que croître. Ceci va donner une décroissance continue (image de
gauche), or, un vrai instrument à cordes donne plutôt une impulsion avant de décroître pro-
gressivement (image de droite). Appliquer cela est un point d’amélioration du modèle de base
des guides d’ondes.
Délai C’est ce qui va définir la fréquence fondamentale du son. En pratique, c’est la longueur
du buffer contenant les segments audio (bruit blanc) qui va définir la note jouée. En effet,
il y a l’idée de répéter un même son (principe de sinusoïde) et au plus le buffer sera petit,
38
Anthony Rouneau MAB2 Sciences Informatiques
au plus la note sera aigüe car on va répéter le buffer plus de fois (pour une même fréquence
d’échantillonnage). Typiquement, on a :
sampling_rate
= buffer_size
frequency
⇔
sampling_rate
= frequency
buffer_size
39