# Tecnologías multimedia e interacción/Herramientas de análisis de audio

Las herramientas de análisis de audio son aquellas que utilizamos para extraer información de un archivo digitalizado de audio. Estas herramientas nos permiten extraer datos de la canción mediante el tratamiento de la señal digital.

# Elementos del análisis

A la hora de estudiar una señal digital hay que obtener los datos que se desean analizar, para ello primero se ha de saber qué datos podemos obtener de una señal digitalizada y qué podemos hacer con ellos. Debido al formato de la digitalización, sólo disponemos de unos valores de señal en función del formato de audio, que generalmente son unos 44.000 datos por segundo, formando una serie de números desordenados que en un principio no tienen sentido a la hora de poder obtener datos de ellos.

## Frecuencia

La frecuencia del sonido hace referencia a la cantidad de veces que vibra el aire que transmite ese sonido en un segundo. Estas frecuencias pueden sonar más o menos, pero lo grave o lo agudo que suena un tono lo indica la frecuencia.
Una nota musical tiene siempre una frecuencia asociada, pero en los instrumentos musicales reales nunca se cumple eso ya que cada nota tiene su frecuencia asociada y unos armónicos que la acompañan. Los armónicos son frecuencias menores que también suenan y acompañan a la frecuencia principal para formar el sonido de un instrumento o la voz.
La suma de muchos armónicos en una señal forma el sonido que escuchamos, pero lo que interesa es separar esas frecuencias individualmente para poder analizarlas.
La frecuencia de una señal se mide en Hercios (Hz).

## Amplitud

La amplitud de una onda sonora es el grado de movimiento de las moléculas de aire en la onda. Indica lo alto o lo bajo que suena una frecuencia determinada. En el análisis de audio interesa saber qué frecuencias son las más amplias, ya que las frecuencias con menor amplitud no interesa analizarlas porque normalmente el ser humano no las escucha.
La amplitud se mide en Decibelios (dB).
Para obtener tanto la frecuencia como la amplitud de una señal digitalizada tenemos que recurrir a realizar la Transformada de Fourier de Tiempo Reducido.
Esta transformada permite definir una ventana para ir extrayendo las frecuencias y las intensidades de cada momento del un audio, teniendo en cuenta las frecuencias y las amplitudes de los fragmentos anteriores y siguientes. Pero la problemática viene dada precisamente por esta ventana, ya que al querer extraer más frecuencias el tamaño de ventana aumenta, lo que disminuye la cantidad de fragmentos de tiempo que seleccionamos para esta extracción. Por el contrario cuanto más pequeña sea la ventana para poder analizar muchos más fragmentos de tiempo, las frecuencias que extraemos son menores. Por eso hay que elegir un tamaño de ventana de entre 1024 y 2048, para no sacrificar ni número de frecuencias extraídas ni fragmentos de tiempo.

# Digitalización de audio

Debido a la digitalización de audio, para poder analizar un sonido hay que reconstruir este y analizarlo después. Los formatos de audio digitales representan los datos de una forma diferente y eso dificulta muchas veces el análisis de audio en formatos diferentes, ya que un algoritmo de análisis puede dar resultados diferentes en función de la compresión de audio a pesar de que se esté analizando la misma canción.
Los formatos de audio más utilizados actualmente son el MP3 y WAV, aunque últimamente con la salida de plataformas de streaming como Spotify estos formatos están dejando de ser utilizados. De los más utilizados, WAV es el mejor para el análisis de audio ya que la compresión es menor que la de MP3 y por lo tanto conserva más características originales del audio del que se quieren sacar datos.

# Herramientas de análisis

Las herramientas de análisis de audio son recursos que se usan para obtener información de una canción, una vez tenemos la extracción de frecuencias y amplitudes hecha. Esta extracción es básica porque prácticamente todo el análisis de audio se basa en frecuencia-amplitud-tiempo.

## Espectrograma

Un espectrograma es la representación de la frecuencia y la amplitud en una imagen. Al ser una representación de las dimensiones de tiempo, frecuencia y amplitud, se suele recurrir a un mapa de calor, en la que el eje Y es es la frecuencia, el eje X es el tiempo, y la amplitud se representa con la intensidad de una escala de colores.
En función de lo que se quiera representar o analizar existen tres tipos fundamentales de espectrogramas:
* Espectrograma Lineal: es el espectrograma que se obtiene por la trasformada de Fourier de tiempo reducido, es el espectrograma más común a la hora de representar el audio en vivo ya que muestra con bastante exactitud las frecuencias que se están reproduciendo en el momento.
* Espectrograma de Mel: es un espectrograma lineal pero elevando los valores de las frecuencias en función de los coeficientes cepstrales de las frecuencias de Mel. Estos están basados en la percepción auditiva humana, para poder contenido relevante dentro de un audio, obviando las que posean información poco valiosa para en análisis. Este espectrograma es utilizado tanto par el reconocimiento fonético como para el análisis del habla.
* Espectrograma logarítmico (o espectrograma de Q constante): este espectrograma utiliza la transformada de Q-Constante para obtener las frecuencias del audio. Con este sistema se mejora la extracción de amplitud con respecto a la fase del audio y es utilizado mucho en análisis de música.

## Detección del tempo

La detección de tempo de una canción es una de las herramientas fundamentales cuando se quiere analizar un audio, ya que, por ejemplo, la clasificación del género musical es altamente dependiente del tempo de la canción. El tempo de una canción es el primer paso de todos los algoritmos de clasificación de audio, por lo que es fundamental disponer de buenos algoritmos de detección de tempo.
Estos algoritmos utilizan el siguiente sistema:
* Definen una ventana y hallan los máximos locales de cada uno de los fragmentos de esa ventana.
* Analizan la distancia de los máximos locales utilizando mapas de calor.
* El tempo con más valores es el que detecta el algoritmo.
Es importante notar que estos algoritmos siempre son probabilistas, es decir, que un resultado no se da al 100% sino que tienen un porcentaje asociado de que el tempo X es el detectado. Por eso esta parte del análisis de audio es más propensa a errores.

## Detección de acordes

La detección de acordes viene dada por un análisis avanzado de frecuencias, ya que al disponer los datos de un espectrograma lineal se pueden obtener los acordes que suenan en cada momento. Este sistema, al igual que el de detección de tempo, es probabilista y utiliza un mapa de calor para devolver el resultado más probable del acorde que está sonando. Para hallar los acordes se separan las frecuencias de las notas con sus correspondientes frecuencias armónicas y se añaden al mapa de calor.
La detección de acordes es utilizada en herramientas de clasificación de audio por sentimientos, ya que ciertas escalas o ciertos acordes están asociados a estados de ánimo. Estos estados se pueden separar para obtener datos del sentimiento de una persona en concreto y poder vaticinar su estado de ánimo en función de la música que esté escuchando en cierto momento.

## Obtención de coeficientes cepstrales

Los coeficientes cepstrales se obtienen al realizar diferentes transformadas de Fourier sobre una señal de audio. Estos coeficientes son utilizados sobretodo en la clasificación de audio ya que no ofrecen datos con un significado para una representación visual. El más utilizado para el modelado de música y la clasificación de género es el coeficiente de Mel.

## Ecualización de audio

Otro de los recursos más utilizados es la ecualización de audio. Esta herramienta permite filtrar las frecuencias, poner límites y eliminar ruido. En lo referente al análisis de audio es utilizado sobre todo para limpiar audios, aislar instruments o eliminar ruido o distorsión. Pero la ecualización de audio es más utilzada en la edición de audio y en los retoques de postproducción musical.

# Resultados

En análisis de audio ofrece resultados que forman parte de la percepción computacional, ya que muchos resultado de los obtenidos son dirigidos a sistemas de aprendizaje automático, reconocimiento del habla o clasificación musical. A continuación se mencionan algunos de los resultados más notables tanto en el mundo académico como en el empresarial:
* Análisis de sentimiento, género, instrumentos y voz en la música.
* Utilización de algoritmos de clustering para clasificación de audio utilizando los datos de la transformada de Fourier de tiempo reducido.
* Similaridad de audio y detección de emociones mediante el análisis de la señal.
* Análisis del sonido utilizando espectroscopia de la transformada de Fourier de tiempo reducido.
* Reconocimiento del habla utilizando los coeficientes cepstrales de Mel.
* Similaridad musical basada en el análisis de señales.

# Programas y librerías útiles

Para analizar archivos de audio digitalizados, se proponen los siguientes programas y librerías:

## Programas

* FaceFX Audio Analysis: FaceFX es un programa que se centra principalmente en el 3D, sobretodo en el diseño de caras, pero dispone de una parte de análisis de audio bastante completa.
* Blue cat: Uno de los grandes programas en el análisis de audio, con muchas herramientas que permiten visualizar prácticamente todos los aspectos de un archivo de audio.
* Spectre: Es sin lugar a dudas de los mejores programas de pago para el análisis de audio en tiempo real. Dispone de muchas métricas que vienen incluidas en su suite.
* Audacity: El programa de referencia cuando se habla de edición de audio open souce con una gran versatilidad a la hora de analizar y editar audio.

## Librerías
### C++

* ESSENTIA: Una librería en C++ que permite la extracción de características de cualquier archivo de audio.
* CLAM: Otra librería en C++ que permite la extracción de acordes y otras características musicales además de disponer de un pequeño programa de escritorio que implementa estas herramientas.

### Python

* pyAudioAnalysis: Es el equivalente a ESSENTIA de Python, una librería muy completa con todo tipo de visualizaciones de los valores extraídos del análisis.
* Friture: Un programa y librería de Python muy sencillo para visualización de espectro y diagramas amplitud-frecuencia de un audio.

### Java

* jAudio: Alternativa de Java para herramientas de análisis con extracción de todos las características que se puedan buscar en un archivo de audio.

## Participantes activos

* Viktor Jacynycz García

# Referencias

* ↑ Ángeles, S. V. (2012). Análisis de audio. Universitat Oberta de Catalunya. https://www.exabyteinformatica.com/uoc/Informatica/Diseno_de_interaccion/Diseno_de_interaccion_(Modulo_3).pdf
* ↑ https://es.wikipedia.org/wiki/Hercio
* ↑ https://es.wikipedia.org/wiki/Decibelio
* ↑ Zanuy, M. F. (2000). Tratamiento digital de voz e imagen y aplicación a la multimedia. Marcombo.
* ↑ https://es.wikipedia.org/wiki/Transformada_de_Fourier_de_Tiempo_Reducido
* ↑ https://tools.ietf.org/html/rfc3003
* ↑ http://web.archive.org/web/20141213140451/https://ccrma.stanford.edu/courses/422/projects/WaveFormat/
* ↑ https://www.spotify.com/us/
* ↑ https://es.wikipedia.org/wiki/MFCC
* ↑ http://www.ee.columbia.edu/ln/rosa/matlab/sgram/
* ↑ Katayose, Haruhiro, M. Imai, and Seiji Inokuchi. "Sentiment extraction in music." Pattern Recognition, 1988., 9th International Conference on. IEEE, 1988.
* ↑ Logan, B. (2000, October). Mel Frequency Cepstral Coefficients for Music Modeling. In ISMIR.
* ↑ Juhan Nam, "Learning Feature Representations for Music Classification," Ph.D. thesis, Stanford University, 2012
* ↑ Kobayashi, Ryoho. "Sound Clustering Synthesis Using Spectral Data." ICMC. 2003.
* ↑ Li, Tao, and Mitsunori Ogihara. "Content-based music similarity search and emotion detection." Acoustics, Speech, and Signal Processing, 2004. Proceedings.(ICASSP'04). IEEE International Conference on. Vol. 5. IEEE, 2004.
* ↑ Maas, Tobias. "Sound Analysis Using STFT Spectroscopy [D]." Bachelor Thesis, University of Bremen (2011): 1-47.
* ↑ Prahallad, K. "Speech Technology: A Practical Introduction." online] laboratorio, Carnegie Mellon University & International Institute of Information Technology Hyderabad.
* ↑ Farooq, O., and S. Datta. "Mel filter-like admissible wavelet packet structure for speech recognition." IEEE Signal Processing Letters 8.7 (2001): 196-198.
* ↑ Logan, Beth, and Ariel Salomon. "A Music Similarity Function Based on Signal Analysis." ICME. 2001.
* ↑ https://www.facefx.com/content/facefx-audio-analysis-and-results
* ↑ https://www.bluecataudio.com/Products/Bundle_AnalysisPack/
* ↑ http://spectre.aurchitect.com/
* ↑ http://www.audacityteam.org/
* ↑ http://essentia.upf.edu/documentation/
* ↑ http://clam-project.org/
* ↑ https://github.com/tyiannak/pyAudioAnalysis
* ↑ http://friture.org/
* ↑ http://jaudio.sourceforge.net/