You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: rapport/rapport.tex
+32-32Lines changed: 32 additions & 32 deletions
Original file line number
Diff line number
Diff line change
@@ -53,14 +53,14 @@ \section{Introduction}
53
53
audio pouvant servir d'identifiant unique. Le critère d'identifiabilté est en général celui de
54
54
l'oreille humaine, \emph{ie} deux signaux considérés comme identiques à l'écoute doivent avoir une
55
55
empreinte acoustique similaire. Par conséquent le système de construction d'empreinte doit être
56
-
robuste aux petites déformations qui n'altèrent pas l'identifiabilité du signal. Déformation telles
56
+
robuste aux petites déformations qui n'altèrent pas l'identifiabilité du signal. Déformations telles
57
57
que l'ajout de bruit, la réverbération, la distortion\dots
58
58
59
59
De plus, un système efficace sera aussi robuste aux décalage temporels, c'est à dire qu'il sera
60
-
capable d'identifier un extrait de signal, même si celui si n'est pas aligné temporelement avec le
60
+
capable d'identifier un extrait de signal, même si celui si n'est pas aligné temporellement avec le
61
61
signal utilisé pour l'apprentissage de l'empreinte.
62
62
63
-
Le sytème d'identification par empreinte doit aussi être rapide et capable d'identifier un extrait
63
+
Le système d'identification par empreinte doit aussi être rapide et capable d'identifier un extrait
64
64
parmi un très grand nombre de signaux. Ceci pose deux contraintes majeures pour notre système :
65
65
\begin{itemize}
66
66
\item La base de donnée contenant les empreintes ne doit pas être de taille trop importante.
@@ -83,23 +83,23 @@ \section{Principe de base}
83
83
\label{sec:principe_base}
84
84
85
85
\subsection{Recherche du plus proche voisin}
86
-
On défini une collection $\chi = \{x_1,x_2,\dots,x_L\}$ de $L$ signaux audios et un requête $q$ (un
86
+
On défini une collection $\chi = \{x_1,x_2,\dots,x_L\}$ de $L$ signaux audios et une requête $q$ (un
87
87
nouvel extrait appartenant ou non à la base). On cherche alors l'élément de $\chi$ le plus proche de
88
88
$q$, c'est à dire son \emph{plus proche voisin}. Le problème revient alors à déterminer une mesure
89
89
de \emph{proximité} $d(x,y)$ entre deux signaux $x$ et $y$ tel que l'expression suivante donne le
90
90
\emph{plus proche voisin} de $q$ : \[\argmin_{x \in\chi} d(x,q) \]
91
91
92
92
Bien entendu, le calcul de la mesure de proximité doit être le moins complexe possible. Impossible
93
-
donc d'effecture$L$ comparaison entre $q$ et les éléments de la collection. D'autant plus qu'en
93
+
donc d'effectuer$L$ comparaison entre $q$ et les éléments de la collection. D'autant plus qu'en
94
94
pratique $q$ ne sera qu'un extrait du signal audio correspondant.
95
95
96
96
97
97
\subsection{Indexation}
98
98
99
99
\subsubsection{Descripteurs locaux}
100
100
L'idée derrière les deux algorithmes que nous présentons ici est d'utiliser des descripteurs locaux
101
-
pour la création de l'empreinte acoustique d'un signal. Ces descripteurs séléctionnent une partie de
102
-
l'information temporel et fréquentielle censé être caractéristique du signal donné.
101
+
pour la création de l'empreinte acoustique d'un signal. Ces descripteurs sélectionnent une partie de
102
+
l'information temporel et fréquentielle censée être caractéristique du signal donné.
103
103
104
104
On utilise ainsi ces descripteurs pour les signaux de référence et la requête. La fusion des
105
105
résultats de recherche des descripteurs de la requête nous permet alors de retrouver le signal ayant
@@ -137,19 +137,19 @@ \subsubsection{Table de hachage}
137
137
\subsection{Recherche}
138
138
\label{sec:recherche_hist}
139
139
140
-
Pour effecuter une recherche de similarité pour une requêt$q$, on va calculer des descripteurs
140
+
Pour effectuer une recherche de similarité pour une requête$q$, on va calculer des descripteurs
141
141
locaux de la même manière que pour l'apprentissage de la base. Chaque clé $c_j$ calculée fait alors
142
142
l'objet d'une recherche dans la base et renvoie donc les couples $(t_j^l,k_j^l)$ associés à cette clé,
143
143
si celle ci existe. Connaissant le temps d'apparition $t_j$ de la clé, on peut en déduire le
144
-
décalage temporel de cette clé avec chaque occurence : $\tau_j^l =t_j^l - t_j$. Pour éviter d'être
144
+
décalage temporel de cette clé avec chaque occurrence : $\tau_j^l =t_j^l - t_j$. Pour éviter d'être
145
145
trop précis quant au décalage, on quantifiera souvent $\tau_j^l$ par une valeur assez importante.
146
146
147
147
On pourrait alors établir le décompte du nombre de clé en commun entre la requête et chaque signal,
148
148
mais on traiterait alors chaque descripteur local indépendamment les uns des autres. Il est donc
149
149
plus intéressant de prendre en compte le décalage temporel.
150
150
151
151
On construit alors les histogrammes $\mathbf{H}_k(\tau) \, : \,\mathbb{Z} \rightarrow\mathbb{N}$
152
-
qui contienent pour chaque indice $k \in [0,\dots,L-1]$ le nombre de clés ayant un décalage $\tau$
152
+
qui contiennent pour chaque indice $k \in [0,\dots,L-1]$ le nombre de clés ayant un décalage $\tau$
153
153
comme montré en figure~\ref{fig:ex_hist}.
154
154
155
155
@@ -182,7 +182,7 @@ \subsection{Spectrogramme}
182
182
183
183
\subsection{Extraction de pics d'intensité}
184
184
185
-
Le spectrogramme est découpé selon un quadrillage 10x10. Dans chaque case du quadrillage nous extrayons le point d'intensité maximale, qui définira un pic. Nous avons donc 100 pics d'itensité par trame de 5 secondes. Un pic est défini par sa position (sa fréquence et l'instant à laquel il apparaît) :
185
+
Le spectrogramme est découpé selon un quadrillage 10x10. Dans chaque case du quadrillage nous extrayons le point d'intensité maximale, qui définira un pic. Nous avons donc 100 pics d'intensité par trame de 5 secondes. Un pic est défini par sa position (sa fréquence et l'instant à laquelle il apparaît) :
186
186
187
187
\begin{equation}
188
188
p_i = (f_i, t_i)
@@ -205,10 +205,10 @@ \subsection{Couplage des pics}
205
205
\end{split}
206
206
\end{equation}
207
207
208
-
Pour constituer un couple les pics précedents doivent satisfaire 2 conditions :
208
+
Pour constituer un couple les pics précédents doivent satisfaire 2 conditions :
209
209
\begin{itemize}
210
210
\item$ t_2 > t_1$
211
-
\item la distance euclidiènne entre les 2 pics doit être inférieur à un certain seuil d (le nombre de clé que l'on prendra pour une trame dépendra de ce seuil)
211
+
\item la distance euclidienne entre les 2 pics doit être inférieur à un certain seuil d (le nombre de clé que l'on prendra pour une trame dépendra de ce seuil)
212
212
\end{itemize}
213
213
214
214
Nous obtenons finalement une liste de clés pour chaque trame.
@@ -229,15 +229,15 @@ \subsection{Couplage des pics}
229
229
l'information fréquentielle et temporelle.
230
230
231
231
\subsection{Formulation mathématiques}
232
-
Soit un espace de Hilbert $\mathcal H$, un dicionnaire d'éléments $d_\gamma\in\mathcal H$ et un
232
+
Soit un espace de Hilbert $\mathcal H$, un dictionnaire d'éléments $d_\gamma\in\mathcal H$ et un
233
233
élément $x \in\mathcal H$, l'algorithme \bsc{mp} va construire une approximation de $x$ : $\tilde x_n =
234
234
\sum_{i=1}^{n}\alpha_i d_{\gamma^i}$ après $n$ itérations.
235
235
236
236
L'algorithme est un algorithme itératif en deux étapes. Initialement on défini le \textbf{résiduel}
237
237
$R^0x = x$, l'ensemble des éléments du dictionnaire sélectionnés $\Gamma^0 = \emptyset$. Lors de la
238
238
$n^{\text{ième}}$ itération, on procède alors comme suivant :
239
239
\begin{itemize}
240
-
\item Sélection : on sélectionne un élement du dictionnaire $d_{\gamma^n}$ selon un critère
240
+
\item Sélection : on sélectionne un élément du dictionnaire $d_{\gamma^n}$ selon un critère
241
241
de $\mathcal C$.
242
242
\item Mise à jour : on met à jour l'approximation selon une règle $\mathcal A$ et on recalcule
243
243
le résiduel.
@@ -255,7 +255,7 @@ \subsection{Couplage des pics}
255
255
256
256
Pour notre implémentation, nous choisissons un dictionnaire redondant constitué d'une union de
257
257
bases \bsc{mdct} (\emph{Modified Discrete Cosine Transform}). La \bsc{mdct} est une transformée
258
-
basée sur la tranfromée en consinys discrete.
258
+
basée sur la transformée en consinus discrete.
259
259
260
260
Pour un vecteur $x$ de taille $N=PK$ (\emph{ie} $x$ est composé de $P$ segments de taille $K$). La
261
261
\bsc{mdct} de taille $L = 2K$ s'écrit comme une matrice de transformation $\mathbf{T}$ de taille $N
@@ -284,7 +284,7 @@ \subsection{Couplage des pics}
284
284
\end{align}
285
285
286
286
Les conditions~\ref{eq:win_1} et~\ref{eq:win_3} assurent la conservation aux bords du signal.
287
-
La fenêtre que nous utilisons pour le mathcalcul de \bsc{mdct} est définie par :
287
+
La fenêtre que nous utilisons pour le calcul de \bsc{mdct} est définie par :
288
288
\[
289
289
w[u] = \sin\left[\frac\pi L \left( u + \frac 12 \right)\right]
290
290
\]
@@ -297,7 +297,7 @@ \subsection{Couplage des pics}
297
297
\caption{Atome d'une union de base \bsc{mdct}}
298
298
\label{fig:atom}
299
299
\end{figure}
300
-
En utilisant un dicitonnaire d'union de bases \bsc{mdct} avec différentes tailles de fênetres, on
300
+
En utilisant un dictionnaire d'union de bases \bsc{mdct} avec différentes tailles de fenêtres, on
301
301
peut alors utiliser des atomes de tailles différentes pour être plus précis dans notre algorithme
302
302
\bsc{mp}.
303
303
@@ -327,24 +327,24 @@ \subsection{Couplage des pics}
327
327
effectuer de légères modification dans le déroulement de l'algorithme.
328
328
329
329
\subsubsection{Sélection}
330
-
À chaque itération, il est nécessaire de calculer la tranformée\bsc{mdct} du résiduel lors de
330
+
À chaque itération, il est nécessaire de calculer la transformée\bsc{mdct} du résiduel lors de
331
331
l'étape de sélection. Ceci peut devenir coûteux en temps de calcul si l'on a un grand nombre
332
332
d'itérations.
333
333
334
-
Cependant il n'est pas nécessaire de calculer la tranformée pour tout le signal, en effet seul la
334
+
Cependant il n'est pas nécessaire de calculer la transformée pour tout le signal, en effet seul la
335
335
partie temporel correspondant à l'atome sélectionné est affectée par la mise à jour. Il n'est donc
336
-
pas nécessaire de recalculer la transformée correspondant aux atomes qui ne sont pas correlés avec
336
+
pas nécessaire de recalculer la transformée correspondant aux atomes qui ne sont pas corrélés avec
337
337
l'atome sélectionné.
338
338
339
339
On modifie donc la fonction de calcul de \bsc{mdct}, pour ne mettre à jour que la partie du signal
340
340
où les atomes pourrait être affecté par le changement de résiduel.
341
341
342
342
343
343
\subsubsection{Masque}
344
-
L'algorithme \bsc{mp} à tendance à sélectionner les atomes la où il y a beacoup d'énergie, ils sont
344
+
L'algorithme \bsc{mp} à tendance à sélectionner les atomes la où il y a beaucoup d'énergie, ils sont
345
345
donc en général proches fréquentiellement et temporellement.
346
346
347
-
L'idée est donc de changement le critère de sélection en utilsant un masque :
347
+
L'idée est donc de changement le critère de sélection en utilisant un masque :
Dans cette deuxième méthode nous utilsons donc l'algorithme \emph{Matching Pursuit} pour construire
375
+
Dans cette deuxième méthode nous utilisons donc l'algorithme \emph{Matching Pursuit} pour construire
376
376
nos clés. On découpe notre signal d'entrée en trames de 5 secondes, puis on extrait les un nombre
377
377
$n$ d'atomes en utilisant l'algorithme \bsc{mp} avec un dictionnaire composé de trois tailles
378
-
d'atome différentes (128,1024 et 8192 échantillons). On va ensuite apairer chaque atomes avec $p$
378
+
d'atome différentes (128,1024 et 8192 échantillons). On va ensuite appairer chaque atomes avec $p$
379
379
de ses plus proches voisins dans le plan temps-fréquence, en ne considérant que ceux
380
-
apparaisant après l'atome choisi. La figure \label{fig:mp_pairs} montre un exemple d'apairage avec
380
+
apparaissant après l'atome choisi. La figure \label{fig:mp_pairs} montre un exemple d'appairage avec
381
381
$p=1$.
382
382
\begin{figure}[htbp]
383
383
\centering
@@ -404,7 +404,7 @@ \section{Performances}
404
404
Afin de tester les deux méthodes, nous utilisons un base d'apprentissage de 100 morceaux de quelques
405
405
minutes. Ces morceaux sont ensuite utilisés pour construire les bases de donnée pour chaque méthode.
406
406
Les bases sont construite grâce au système de gestion de base de donnée SQLite. Les clés sont
407
-
caclulées sur 40 bits grâce à fonction de hachage \bsc{sha}-1 (on conserve les 40 premiers bits sur
407
+
calculées sur 40 bits grâce à fonction de hachage \bsc{sha}-1 (on conserve les 40 premiers bits sur
408
408
les 160 donnés par \bsc{sha}-1.
409
409
410
410
\subsection{Méthode par spectrogramme}
@@ -449,11 +449,11 @@ \section{Performances}
449
449
\vspace{0.4cm}
450
450
451
451
\label{sec:base_modif}
452
-
Pour la deuxième expérimentation la bibliothèque musicale est modifiée de la façon suivante : on ajoute à chaque musique du bruit blanc ($\sigma^2=0.005$), de la réverberation et un applique un passe-haut (fréquence de coupure : 500 Hz) de façon à obtenir un effet microphone. Ces modifications sont réalisées avec l'outil en ligne de commande SoX :
452
+
Pour la deuxième expérimentation la bibliothèque musicale est modifiée de la façon suivante : on ajoute à chaque musique du bruit blanc ($\sigma^2=0.005$), de la réverbération et un applique un passe-haut (fréquence de coupure : 500 Hz) de façon à obtenir un effet microphone. Ces modifications sont réalisées avec l'outil en ligne de commande SoX :
0 commit comments