TB065

Index Commits Files Refs
tp/tercera_parte.tex (14860B)
   1 \pagebreak
   2 
   3 \hypertarget{caso-practico}{%
   4 \section{Caso práctico: Identificador de canción}\label{dominio-de-frecuencia}}
   5 
   6 En esta parte del trabajo se verá un caso practico de todas las herramientas analizadas en
   7 secciones previas. El objetivo es implementar una herramienta que analice un sonido
   8 musical, particularmente una canción en formato digital, e identifique la
   9 canción basándose en una lista de canciones analizadas previamente.
  10 
  11 El procedimiento básico consiste en analizar el segmento de audio, 
  12 extraer características particulares en el espacio tiempo-frecuencia (es
  13 decir, en su espectrograma) que sirvan para identificarlo luego. Al conjunto de estas características se las denomina huella digital acústica, ya que es análogo a como una huella dactilar se identifica por las convergencias, desviaciones, interrupciones y demás particularidades de las crestas papilares. Este procedimiento de extracción de huellas se utiliza tanto para confeccionar la base de datos de canciones conocidas como para posteriormente reconocer segmentos de audio sin identificar, consultando la base de datos.
  14 
  15 El sistema de reconocimiento consta de dos bloques principales:
  16 \begin{itemize}
  17   \item El algoritmo para extraer las huellas digitales acústicas.
  18   \item La base de datos que almacena las huellas acústicas de las canciones conocidas.
  19 \end{itemize}
  20 
  21 El algoritmo para extraer las huellas acústicas toma como entrada el archivo con el audio y, luego de un pre-procesamiento de la señal, extrae las características y entrega como resultado la huella acústica, tal como se muestra en la figura \ref{fig-diagrama-bloques-general}.
  22 
  23 \begin{figure}[!h]
  24     \centering
  25     \includegraphics[width=\linewidth]{img/diagrama_de_bloques_general.png}
  26     \caption{Diagrama de bloques sistema de reconocimiento}
  27     \label{fig-diagrama-bloques-general}
  28 \end{figure}
  29 
  30 \hypertarget{reduccion-de-frecuencia}{%
  31 \subsection{Reducción de frecuencia}\label{reduccion-de-frecuencia}}
  32 
  33 El pre-procesamiento de la señal de audio en formato digital consiste en pasarla a
  34 canal mono (en caso de que esté en estéreo) y luego sub-muestrearlo, debido a que la
  35 información útil para la extracción de características se encuentra en bajas
  36 frecuencias. En general, el audio está muestreado a 44100 Hz, pero para el
  37 algoritmo a utilizar basta con tenerlo muestreado a 1/8 de su frecuencia
  38 original, es decir $5512.5$Hz. Esto permite trabajar con menos muestras,
  39 aliviando la carga computacional.
  40 
  41 Para reducir la frecuencia de muestreo de la señal discreta de $44100$Hz a $5512.5$Hz se utiliza un decimador que tome muestras de la señal a intervalos regulares de 8 puntos, de esta forma la señal sub-muestreada $x_{d}$ resulta como en la ecuación \ref{eq-señal-submuestreada}.
  42 
  43 \begin{align}
  44     x_{d}(n) = x(n\cdot N);\quad N\in \mathbb{Z}
  45     \label{eq-señal-submuestreada}
  46 \end{align}
  47 
  48 El diagrama de bloques del sistema a utilizar se compone de un filtro pasa-bajos y luego un muestreador o compresor de la señal en dominio temporal como se muestra en la figura \ref{fig-diagrama-de-bloques-decimador}, en la cual $x(n)$ representa la señal de entrada y $x_{d}(n)$ la señal decimada. El filtro pasa-bajos se utiliza para evitar aliasing si la señal de entrada $x_{n}$ no permite decimación en $8$ veces, es decir, tiene ancho de banda mayor a $2\pi/8$ o en frecuencia siendo $5512.5$Hz
  49 
  50 \begin{figure}[!h]
  51     \centering
  52     \includegraphics[width=0.75\linewidth]{img/diagrama_de_bloques-decimador.png}
  53     \caption{Diagrama de bloques reducción de frecuencia}
  54     \label{fig-diagrama-de-bloques-decimador}
  55 \end{figure}
  56 
  57 Para el filtro pasa-bajos se utiliza un filtro con respuesta al impulso finita (FIR) y frecuencia de corte teórica de $2756.25$Hz la cual corresponde con la frecuencia de Nyquist, la elección de un filtro de tipo FIR, a diferencia de un filtro con respuesta al impulso infinita (IIR), es que es mas fácil la implementación y, si bien requiere un gran poder de computo a diferencia de los filtros IIR, en este caso el poder de computo no es un problema, a diferencia de sistemas embebidas, por dar un ejemplo.
  58 
  59 La forma general de un filtro FIR se muestra a continuación en la ecuación \ref{eq-forma-general-fir}, en la cual $M$ representa el grado del filtro, y por consiguiente la cantidad de coeficientes $b_k$, $y(n)$ la salida del filtro y $x(n)$ la entrada.
  60 
  61 \begin{align}
  62    y(n) = \sum_{k=0}^{M} b_{k}\cdot x(n-k)
  63     \label{eq-forma-general-fir}
  64 \end{align}
  65 
  66 Aplicando la transformada Z a la expresión de la ecuación \ref{eq-forma-general-fir} y por propiedades de la transformada resulta como se ve en la ecuación \ref{eq-transferencia-filtro-fir}, $H(z)$ es lo que se denomina la transferencia del sistema en el dominio z.
  67 
  68 \begin{align}
  69    \dfrac{Y(z)}{X(z)} = H(z) = \sum_{k=0}^{M} b_{k}\cdot z^{-k}
  70     \label{eq-transferencia-filtro-fir}
  71 \end{align}
  72 
  73 Aplicando la anti-transformada z a la expresión de de la ecuación \ref{eq-transferencia-filtro-fir} resulta en la respuesta al impulso del filtro FIR que se ve en la ecuación \ref{eq-resp-impulso-filtro-fir}. Otra forma de hallar la respuesta al impulso era tomando $x(n) = \delta(n)$ en la ecuación \ref{eq-forma-general-fir}.
  74 
  75 \begin{align}
  76    h(n) = \left\{ 
  77     \begin{array}{rl}
  78    b_{n}\;,\; & \mbox{si} \;\; 0 \leq n \leq M \\
  79    0    \;,\; & \mbox{en otro caso}
  80    \end{array}
  81    \right.
  82    \label{eq-resp-impulso-filtro-fir}
  83 \end{align}
  84 
  85 Para hallar los coeficientes $b_{n}$ se utiliza el método de ventana, en el cual se iguala la respuesta al impulso del filtro FIR con la multiplicación de la respuesta al impulso de un filtro ideal con una ventana con forma arbitraria, como se muestra en \ref{eq-ventaneo}.
  86 
  87 \begin{align}
  88     h(n) = h_{ideal}(n) \cdot w(n)
  89     \label{eq-ventaneo}
  90 \end{align}
  91 
  92 Siendo en este caso $h_{ideal}(n)$ la respuesta al impulso del pasa bajos ideal, el cual sabiendo que es un rectángulo en frecuencia, resulta una sinc en el dominio temporal, esto se muestra en la ecuación \ref{eq-imp-pasabajo-ideal}. La multiplicación por una ventana de la ecuación \ref{eq-ventaneo} justamente se hace porque los filtros ideales tienen respuesta al impulso infinita, como es el caso de la función $sinc$.
  93 
  94 \begin{align}
  95     h_{ideal}(n) = \dfrac{sin\left(\omega_{c}\cdot n\right)}{\pi\cdot n} = \omega_{c} \cdot sinc\left(\dfrac{\omega_{c}}{\pi} \cdot n\right)
  96     \label{eq-imp-pasabajo-ideal}
  97 \end{align}
  98 
  99 Para la ventana se utiliza la ventana de Hamming, ya que es muy simple la implementación, la formula general es común con otras ventanas (como Hanning) y se muestra a continuación en la ecuación \ref{eq-ventana-formula-general-hamming}, en particular para la ventana de Hamming los coeficientes $a_{0}$ y $a_{1}$ toman los valores aproximados $0.54$ y $0.46$ respectivamente\footnotemark[1].
 100 
 101 \footnotetext[1]{Ventana (función) \citep{wiki123}}
 102 
 103 \begin{align}
 104     w(n) = a_{0}-a_{1}\cdot cos\left(\dfrac{2\pi n}{N - 1}\right);\;\;
 105      w_{Hamming}(n) = 0.54-0.46\cdot cos\left(\dfrac{2\pi n}{N - 1}\right)
 106     \label{eq-ventana-formula-general-hamming}
 107 \end{align}
 108 
 109 Teniendo la expresión de la ventana $w(n)$ y la respuesta al impulso del filtro ideal $h_{ideal}(n)$ se obtiene la respuesta al impulso del filtro FIR $h(n)$ de la ecuación \ref{eq-ventaneo}, en este caso tomando 700 coeficientes, es decir, se tiene un filtro de grado 700. La respuesta al impulso se muestra graficada en la figura \ref{fig-respuesta-al-impulso-fir} en la cual se ve claramente la forma de la función sinc.
 110 
 111 \begin{figure}[!h]
 112     \centering
 113     \includegraphics[width=\linewidth]{plot/respuesta_al_impulso_filtro_fir.png}
 114     \caption{Respuesta al impulso filtro pasa-bajos FIR de grado $700$}
 115     \label{fig-respuesta-al-impulso-fir}
 116 \end{figure}
 117 
 118 La respuesta en frecuencia del filtro se obtiene tomando $z=j\omega$ en la función de transferencia del sistema $H(z)$ mencionada previamente en la ecuación \ref{fig-respuesta-en-freq-fir}. En la figura \ref{fig-respuesta-en-freq-fir} se grafica la respuesta en frecuencia del filtro pasa-bajos elegido, la magnitud se muestra en color azul y la fase en color rojo. Se nota que a partir de la frecuencia de corte ($2627.1$ Hz, correspondiente al punto de $-3$dB) se atenúan drásticamente las señales y en particular para las frecuencias mayores a la de Nyquist ($2756.2$ Hz) ya se puede decir prácticamente que se atenúan por completo ya que se tiene una ganancia de $-60dB$, esto es $0.001$ veces, lo cual era el objetivo para evitar aliasing al decimar. Además se observa la fase lineal hasta la frecuencia de corte, esta es una de las principales características de los filtros FIR por sobre los IIR, que es que no distorsionan la fase. 
 119 
 120 \begin{figure}[!h]
 121     \centering
 122     \includegraphics[width=\linewidth]{plot/respuesta_en_frecuencia_pasa-bajos_fir.png}
 123     \caption{Respuesta en frecuencia filtro pasa-bajos FIR de grado $700$}
 124     \label{fig-respuesta-en-freq-fir}
 125 \end{figure}
 126 
 127 Los ceros $z_{i}$ y polos $p_{i}$ se definen como aquellos puntos del plano complejo en donde la función de transferencia del sistema $H(j\omega)$ se anula, en el caso de los ceros y diverge a infinito, en el caso de los polos. La particularidad de los filtros FIR es que no tienen polos distintos de cero, esto sale de analizar la ecuación \ref{eq-transferencia-filtro-fir}, se tiene una sumatoria de coeficientes no nulos constantes multiplicados por la variable $z^{-1}$, la única forma de que la transferencia tienda a infinito es que la variable z tienda a $0$ de manera de que $z^{-1}$ diverja.
 128 
 129 %ve factorizando la expresión de la ecuación \ref{eq-transferencia-filtro-fir} como se muestra en la ecuación \ref{eq-transferencia-filtro-fir-factorizada}. 
 130 
 131 %\begin{align}
 132 %   H(z) = h(0)\sum_{k=0}^{M} b_{k}\cdot z^{-k}
 133 %    \label{eq-transferencia-filtro-fir-factorizada}
 134 %\end{align}
 135 
 136 \begin{figure}[!h]
 137     \centering
 138     \includegraphics[width=\linewidth]{plot/polos_y_ceros_pasa-bajos_fir.png}
 139     \caption{Polos y ceros filtro pasa-bajos FIR de grado $700$}
 140     \label{fig-polos_y_ceros_pasa-bajos_fir}
 141 \end{figure}
 142 
 143 La principal ventaja de utilizar la ventana de Hamming en lugar de la rectangular al realizar un espectrograma es la reducción drástica de la fuga espectral, lo que resulta en una representación de frecuencia más limpia y precisa de las señales en el tiempo.
 144 
 145 Cuando se calcula un espectrograma, el proceso implica dividir la señal continua en pequeños segmentos (ventanas) para calcular la Transformada Rápida de Fourier (FFT) de cada segmento.
 146 
 147 La ventana rectangular es un corte brusco de la señal. Cuando esta ventana se multiplica con la señal en el dominio del tiempo, crea una discontinuidad en los puntos de inicio y fin de la ventana.
 148 
 149 En el dominio de la frecuencia, esta discontinuidad se traduce en un espectro con lóbulos laterales muy altos (el primer lóbulo está a solo 13 dB por debajo del pico principal).
 150 
 151 \begin{figure}[!h]
 152     \centering
 153     \includegraphics[width=\linewidth]{plot/potencia_db_espectro_ventana_comparacion_hamming_rect.png}
 154     \caption{Comparación potencia de ventana rectangular y Hamming}
 155     \label{fig-potencia_db_espectro_ventana_comparacion_hamming_rect}
 156 \end{figure}
 157 
 158 La ventana de Hamming tiene un lóbulo principal ligeramente más ancho que la rectangular, lo que resulta en una peor resolución de frecuencia (es más difícil distinguir dos frecuencias muy, muy cercanas)
 159 
 160 \iffalse
 161 \begin{figure}[!h]
 162     \centering
 163     \includegraphics[width=\linewidth]{plot/espectograma_fs_original_44100Hz.png}
 164     \caption{Espectrograma muestra `000002.mp3` original}
 165     \label{fig-espectograma_fs_original_44100Hz}
 166 \end{figure}
 167 
 168 \begin{figure}[!h]
 169     \centering
 170     \includegraphics[width=\linewidth]{plot/espectograma_fs_2650Hz.png}
 171     \caption{Espectrograma muestra `000002.mp3` filtrado}
 172     \label{fig-espectograma_fs_2650Hz}
 173 \end{figure}
 174 \fi
 175 
 176 \begin{figure}[!h]
 177     \centering
 178     \includegraphics[width=\linewidth]{plot/000002_espectrograma_filtrado_2650Hz_ylim_3000Hz_inferno.png}
 179     \caption{Espectrograma muestra `000002.mp3` filtrado}
 180     \label{fig-espectrograma_000002}
 181 \end{figure}
 182 
 183 \hypertarget{generacion-de-huella}{%
 184 \subsection{Generación de huellas acústicas}\label{generacion-de-huella}}
 185 
 186 El algoritmo de extracción de huellas digitales acústicas extrae características a partir del espectrograma del
 187 audio. El conjunto de estas características conforman la huella.
 188 
 189 Las características se obtienen mediante una función signo $F(m,n)$ que opera sobre la energía de las bandas $E(m,n)$ según la ecuación \ref{eq-energia-de-banda}, donde $n$ es el tiempo y $m$ la banda de frecuencia.
 190 
 191 \begin{align}
 192     F (m, n) = \left\{
 193     \begin{array}{rl}
 194         1 & E(m, n) - E(n, m+1) > E(n-1, m) - E(n-1, m+1)\\
 195         0 & \mbox{en otro caso}
 196     \end{array}
 197     \right.
 198     \label{eq-energia-de-banda}
 199 \end{align}
 200 
 201 En la figura \ref{fig-huella_acustica_000002_completa} se muestra un gráfico de la huella generada para una canción de muestra `000002.mp3` utilizando el algoritmo mencionado previamente. Luego en la figura \ref{fig-huella_acustica_000002_segmento} se toma el segmento de $0$ a $100$ de manera que se aprecie aun mejor el patrón de unos y ceros. En la figura \ref{fig-huella_acustica_000141} se grafica la huella de otra muestra para el mismo segmento anterior, de $0$ a $100$, nótese la diferencia entre el patrón generado.
 202 
 203 \begin{figure}[!h]
 204     \centering
 205     \includegraphics[width=\linewidth]{plot/000002_huella_acustica_completa.png}
 206     \caption{Huella acústica muestra `000002.mp3` completa}
 207     \label{fig-huella_acustica_000002_completa}
 208 \end{figure}
 209 
 210 \begin{figure}[!h]
 211     \centering
 212     \includegraphics[width=\linewidth]{plot/000002_huella_acustica.png}
 213     \caption{Huella acústica muestra `000002.mp3` segmento}
 214     \label{fig-huella_acustica_000002_segmento}
 215 \end{figure}
 216 
 217 \begin{figure}[!h]
 218     \centering
 219     \includegraphics[width=\linewidth]{plot/000141_huella_acustica.png}
 220     \caption{Huella acústica muestra `000141.mp3`}
 221     \label{fig-huella_acustica_000141}
 222 \end{figure}
 223 
 224 \pagebreak
 225 \hypertarget{resultados}{%
 226 \subsection{Resultados}\label{resultados}}
 227 
 228 Utilizando 16 canciones de muestra, se generaron las huellas como se menciono previamente y se cargaron estas huellas a la base de datos. Para verificar cual es el error al identificar canciones se generaron pruebas procedurales, en particular se genero un total de $2550$ identificaciones de las cuales $29$ fueron erróneas, esto resulta en un error porcentual de $1.14$\%. En una primera instancia el error fue mayor, pero se corrigió mediante el ajuste del ancho de ventana y del ancho de solapamiento, a la hora de calcular el espectrograma para generar la huella de las canciones de muestra (las que se guardan en la base de datos).