Sei sulla pagina 1di 20

UNIVERSIDAD DE BUENOS AIRES

FACULTAD DE INGENIERÍA
Año 2017 – 1er. cuatrimestre

SEÑALES Y SISTEMAS (86.05)

TRABAJO PRÁCTICO ESPECIAL

TEMA: Modificación del “tempo” de un fragmento musical

FECHA: 19/06/2017

INTEGRANTE:

_Punti Eugenio______________________ - # _98422

< eugenio.punti@gmail.com _____>

DOCENTES:
Leonardo, Rey Vega
Daniel Casaglia
Marta Caldentey

1
Ejercicio 1
Analizar el fragmento musical que contiene el archivo “audio.wav” mediante el espectrograma
de banda ancha y banda angosta. Describir qué es lo que se puede observar en ambos casos y explicar el
criterio usado para la elección de los parámetros.
El primer paso fue graficar la señal de audio importado, al hacerlo se obtuvo la siguiente imagen:

Aquí se pudo observar que la sección donde probablemente se presenten problemas al analizar,
será la que se encuentra entre los 20 y 35 segundos, ya que en esta sección el intérprete acelera el ritmo y
toca varias notas en un corto período de tiempo.
Luego se calculó la transformada de Fourier mediante el uso de la FFT, al ser una señal real el
gráfico de la FFT será simétrico con respecto a π, que en este caso se corresponde con 8 kHz. Se obtuvo
la siguiente imagen (se grafica entre 0 y 4 kHz ya que fuera de este rango las amplitudes eran
despreciables con respecto a las que se encuentran dentro de esta porción del gráfico):

2
Se puede observar que la mayor energía se concentra en las bajas frecuencias, este gráfico será útil
para el ejercicio 2 (especialmente el sector entre 500 Hz y 2kHz para encontrar las notas del piano en cada
instante de tiempo).
Al momento de hacer los espectrogramas habrá tres parámetros que serán los más importantes,
estos serán el tipo de ventana, cuanto se sobrepondrá cada ventana con la siguiente y la cantidad de
puntos para realizar la FFT.
En cuanto al overlap, se decidió que sea la mitad del largo de la ventana, ya que esta atenúa tanto
el principio como el final del ventaneo, y si no se tiene en consideración esto, se estarían ignorando
secciones de la señal. Se propuso que el valor de nfft requerido por el espectrograma sea diez veces el
ancho de la ventana, ya que al hacer la FFT con la misma cantidad de puntos que la ventana, la señal es
recuperable, sin embargo, pueden realizarse interpretaciones erróneas. Es decir, cuanto más grande la
cantidad de puntos, habrá una mejor resolución. Sin embargo, hay que tener en cuenta el costo
computacional, por eso mismo, para el espectrograma de banda estrecha la cantidad de puntos será el
mismo que el largo de la ventana.
Al espectrograma de banda ancha le corresponde una ventana estrecha, esto permite observar
mejor las características temporales en el gráfico, pero sacrificando los detalles en la frecuencia. El largo
que se tomo es de 1024 muestras, esto se corresponde con , es decir cada ventana tiene un
ancho de 64 milisegundos, se propuso una ventana de tan corto tiempo ya que la señal tiene secciones
donde cambia muy rápidamente y de esta manera se podrá realizar un mejor análisis en el tiempo.
3
Para la resolución de este ejercicio se analizaron varios tipos de ventanas, la rectangular, la de
Hann, la Kaiser y la Hamming. El siguiente cuadro presenta la atenuación del primer lóbulo secundario y
el ancho del lóbulo principal cuando el largo de la ventana es de 1024, estos valores son aproximados.

Ventana Ancho lóbulo principal Atenuación lóbulo


[rad/muestra] secundario [dB]
Rectangular 2,0 m -13
Hamming 3,5 m -40
Hann 4,0 m -45
Kaiser (β = 4) 5,0 m -40
Kaiser (β = 6) 7,0 m -65
Kaiser (β = 10) 12,0 m -90

La ventana rectangular no fue tenida en cuenta más allá de tener el ancho mínimo, ya que la
atenuación de los lóbulos secundarios es la peor comparada con el resto. La ventana seleccionada fue la
de Kaiser con β = 6, ya que se prefirió que la atenuación sea máxima y permitir un ancho de un par de
mili radianes mayor.
El espectrograma resultante fue:

4
Para el espectrograma de banda angosta, se tomó un largo de 16384 muestras. Se tomó este largo
que se corresponde con 1 segundo y 24 milésimas ya que para tener una mejor resolución en el dominio
de las frecuencias hay que utilizar una ventana de gran extensión. En cuanto a la elección de la ventana el
criterio fue el mismo que para la anterior, por lo tanto se eligió nuevamente una Kaiser con β = 6.
El espectrograma resultante fue:

Como se pudo observar en el gráfico de la FFT, las frecuencias con más energía se concentran por
debajo de los 4 kHz. Sin embargo, en ninguno de los dos espectrogramas se puede discernir con exactitud
en que instante se coloca cada nota, esto es porque para este tipo de señal, lo más conveniente no es ir ni
por un espectrograma de banda ancha ni por uno de banda angosta, ya que como cambia muy
rápidamente tanto en el tiempo como en la frecuencia, al analizar estos gráficos se está perdiendo mucha
información relevante.

5
Ejercicio 2
Usando la información obtenida en el ejercicio anterior, obtener los parámetros del
espectrograma que permitan observar de la mejor manera posible las características tiempo-frecuencia
de este archivo de audio. Por medio de este espectrograma debe ser posible identificar las siguientes
notas del piano cuyas frecuencias aproximadas son

DO DO# RE RE# MI FA FA# SOL SOL# LA LA# SI


523 554 587 622 659 698 740 784 831 880 932 988
1046 1108 1174 1244 1318 1386 1480 1568 1662 1760 1864 1976

Como se pudo observar en el ejercicio anterior, el espectrograma a realizar deberá tener una
relación equilibrada entre tiempo y frecuencia para poder concluir qué nota se ubica en cada momento. El
sector más problemático, como se expuso en el ejercicio 1, será el que se encuentra entre los segundos 20
y 35, ya que tiene mucha variación tanto a lo largo de la frecuencia como a lo largo del tiempo.
Para resolver este ejercicio, mediante la prueba y error, se fueron evaluando ventanas de distinto
largo entre 1024 y 16384, valores donde ya se sabe que no se puede analizar tanto en tiempo como en
frecuencia.
El largo seleccionado finalmente fue de 6000. Al espectrograma resultante se le hizo un zoom
entre los 500 Hz y los 2000 Hz:

6
Se puede apreciar que por ejemplo en el segundo 1 hay un Do sostenido, luego hasta el segundo 5
predomina la frecuencia del Do sostenido, sin embargo su anterior armónico. De los segundos 5 al 7 se
encuentran Re sostenido, Fa sostenido y Do. Se puede seguir analizando a lo largo del tiempo, sin
embargo, habrá un gran porcentaje de error en el sector problemático ya nombrado por su gran contenido
armónico y por la cantidad de teclas presionadas en el piano durante ese intervalo de tiempo.
Espectrograma sin zoom:

7
Ejercicio 3
Se pretende duplicar la duración del fragmento musical para lo cual se propone interpolar el
archivo de audio. No está permitido usar las funciones de matlab/octave que implementan la
interpolación directamente. Grafique el espectrograma de la nueva secuencia y compárela con la
obtenida en el ejercicio 2.
La resolución de este ejercicio consto en generar un vector compuesto por ceros del doble del
tamaño que la señal original, para luego, en las posiciones impares del vector nuevo colocar las muestras
del audio. Una vez hecho esto, se filtró la nueva señal con un filtro pasa bajos con frecuencia de corte π/2
y ganancia 2.
Al no poder implementar un filtro pasa bajos ideal, el método que se utilizó para generarlo fue el
de ventaneo. Este constó en tomar una sinc (ya que esta es la base de un filtro pasa bajos ideal) y
multiplicarla con una ventana adecuada. Para esto, hubo que analizar distintos tipos de ventanas para
encontrar la que el compromiso entre el ancho del lóbulo principal y la altura de los lóbulos secundarios
sea la mejor posible para este caso.
La ventana elegida fue la de Kaiser, luego se calcularon los parámetros correspondientes para que
la banda de ganancia constante no tenga una distorsión mayor a y que el ancho de la banda de
paso sea de ⁄ . Se obtuvo que el largo de la ventana debe ser de 312 y β debe ser 12.
Las constantes previamente calculadas se obtuvieron con las siguientes formulas:

8
Obteniendo el siguiente filtro:

Y el espectrograma de la señal interpolada:

Al comparar el espectrograma del punto dos con el mostrado en la imagen anterior se puede
observar que son muy similares. Esto significa que la interpolación se realizó correctamente y que el filtro
9
pasa bajos, más allá de no ser ideal, cumplió con su función de interpolador eficientemente. Como se
esperaba, al duplicar la señal en el tiempo se redujo a la mitad en la frecuencia, provocando un sonido
más grave.
En la siguiente imagen, se puede observar que la nueva señal tiene el doble del largo de la señal
original y que mantiene su amplitud.

10
Ejercicio 4
Reducir a la mitad la duración del fragmento musical utilizando el proceso de decimación. No
está permitido usar las funciones de matlab/octave que implementan la decimación directamente.
Recuerde que para evitar el aliasing es necesario realizar el adecuado filtrado pasabajos. Utilice alguno
de los métodos de diseño explicados en la teórica especificando el criterio utilizado. Grafique el
espectrograma de la nueva secuencia y compárela con la obtenida en el ejercicio 2.
Este proceso fue inverso al realizado en el ejercicio anterior. Primero se filtró la señal con un filtro
pasa bajos, para luego, a la señal resultante removerle los valores que ocupaban las posiciones pares.
Reduciendo así, la señal a la mitad.
El filtro utilizado fue similar al del punto 3, la única diferencia fue que la ganancia en este caso es
unitaria. Este filtro, a diferencia del anterior que funcionaba como interpolador, cumple el rol de prevenir
el aliasing, ya que como se va a expandir la señal en frecuencia, hay que tener cuidado que no ocurra un
solapamiento.
El espectrograma de la señal decimada:

Como se esperaba, al haber reducido a la mitad la señal en el tiempo, se duplico en frecuencia, por
lo tanto, cada nota que estaba en el espectrograma original, ahora se corresponde con su siguiente
armónico, provocando un timbre más agudo en el audio.

11
Ejercicio 5
Desarrolle un programa que a partir del espectrograma de la señal de audio permita reconstruir
la señal original. Grafique el error entre la señal original y la reconstruida.
Los parámetros que recibirá la función a codificar son: la matriz que contiene los datos del
espectrograma, la ventana utilizada junto con sus parámetros, la cantidad de puntos con los que se hizo la
FFT y la cantidad de puntos de overlap.
La función spectrogram(), lo que hace es aplicarle una ventana a un intervalo de la señal, calcular
su FFT y disponerla en una columna de la matriz que devuelve, luego avanza una cantidad de muestras
que proviene de la resta entre el largo de la ventana y el solapamiento y vuelve a hacer el mismo
procedimiento.
El primer paso a realizar es reconstruir la transformada de cada fila, ya que esta solo contiene la
información entre 0 y π. Sin embargo, el resto se calcula fácilmente gracias a la propiedad de simetría
conjugada, por lo tanto, a cada columna se le concatena la continuación de su transformada. Esto se hace
para que al calcular la IFFT, se calcule sobre la totalidad de la transformada, y no sobre la primera mitad,
ya que el resultado no es el mismo y esto arrastraría error al resto del proceso.
Una vez hecho esto se antitransforma cada columna, y luego se evalúa si el largo de las columnas
son más largas que el largo de la ventana o viceversa. En el primer caso, se toman la cantidad de puntos
igual al largo de la ventana y luego a esos puntos se los divide por la ventana, para al resultado ponerlo en
el vector a devolver. En el segundo caso, se recorta la ventana al largo de las columnas y también se
divide cada columna por la ventana para pasar el resultado al vector a devolver. Al resultado de cada
iteración (con la excepción de la primera) se lo recorta desde el principio hasta el largo del overlap y se lo
concatena con el resultado del anterior.
La principal restricción para que la señal sea recuperable, es que la cantidad de puntos sobre los
que se hizo la FFT debe ser mayor o igual al largo de la ventana.

12
La siguiente imagen muestra la señal que se obtiene al utilizar la función de este ejercicio:

Mientras que la siguiente muestra el error absoluto que hay entre la original y la recuperada:

13
Se puede observar que el error es de aproximadamente el 2,3%, y este error es solo durante 5
milisegundos. En el resto de la señal el error alcanza un límite de . Por lo que se puede concluir
que la señal se recupera casi por completo.

14
El error de esta función es mayor cuando se ingresan valores pequeños de overlap. Por ejemplo, al
utilizar un overlap del 10% del largo de la ventana, el error en los últimos milisegundos pasa al 30%. Esto
se debe a que al utilizar una menor cantidad de ventanas, la información recibida es menos abundante, por
lo tanto se acentúan los errores. Mientras que al utilizar un overlap del 90% del largo de la ventana, el
error máximo, no supera .

15
Ejercicio 6
Suponiendo que utilicen la función “specgram”, cada columna contiene información del espectro
para ese segmento de la señal. Con el objeto de duplicar la duración de la secuencia original interpole
una columna cada dos utilizando la información de las filas. Luego utilizando el programa desarrollado
en el punto anterior encuentre la nueva señal de audio que debería durar el doble de tiempo. Grafique su
espectrograma y compárelo con el original.
Los pasos a seguir en este ejercicio fueron, tomar la matriz que devuelve la función spectrogram(),
generar una nueva llena de ceros con el doble de columnas y luego copiar cada columna de la matriz
original hacia las posiciones impares de la vacía. Una vez hecho esto se procedió a filtrar con el mismo
filtro pasa bajos del punto 3 cada una de las filas para finalizar la interpolación. Por último, se recupera la
señal en el dominio del tiempo utilizando la función implementada en el ejercicio anterior.
Sin embargo, al implementarlo en matlab, se notó que el desfasaje que proporciona el filtro
realizado en el punto 3 provoca un recorte en la señal recuperada, como lo muestra la siguiente imagen:

Por lo tanto, su buscó un filtro cuyas características disminuyan este desplazamiento temporal que
no permite recuperar la señal. Se propuso utilizar la función fir1() que permite ingresar la cantidad de
polos del filtro deseado y la frecuencia de corte necesitada.

16
Para poder recuperar la totalidad del largo de la señal hubo que sacrificar el detalle que proveía el
filtro del ejercicio 3 y se utilizó uno con 10 polos y frecuencia de corte π/2. Se tomó esta cantidad de
polos, ya que si se subía, el desplazamiento en el eje del tiempo iba a ser mayor y si se bajaba la señal iba
a ser cada vez más distinta a la esperada. Por lo tanto, más allá de que el siguiente gráfico es similar al del
audio interpolado en el tercer punto, al reproducirlo este presenta grandes diferencias.

En cuanto al espectrograma, se puede observar que todavía queda una pequeña franja al inicio del
eje del tiempo donde el filtro produjo un desplazamiento. También es visible que a cada franja de tiempo
se le agregaron nuevas frecuencias que previamente estaban atenuadas, esto es principalmente por la mala
calidad del filtro interpolador utilizado. Sin embargo, se puede observar que las frecuencias que
predominaban en el espectrograma original no fueron desplazadas hacia su anterior armónico como en el
ejercicio 3, sino que se mantuvieron en el mismo lugar.

17
18
Ejercicio 7
Ahora se busca reducir la duración del audio a la mitad para lo cual se debe decimar el
espectrograma por columnas. Recuerde que para evitar el aliasing es necesario realizar el adecuado
filtrado pasabajos.
En este caso no fue necesario utilizar un filtro pasa bajos, ya que la función de este es prevenir el
aliasing al expandir en frecuencia. Pero como en el espectrograma se está trabajando con las frecuencias,
al sacar secciones de esta no se estará provocando aliasing.
Lo que se hizo en este ejercicio fue: con la matriz que devuelve la función spectrogram(), tomar
una de cada dos columnas y copiarlas a una nueva matriz, para esta pasarla como parámetro a la función
del ejercicio 5 recuperando una señal con la mitad de duración que la original.
Podemos observar en la imagen siguiente que a diferencia del ejercicio 4, las frecuencias no se
expandieron, sino que se mantuvieron constantes, lo que causo que el timbre del audio no se agudizara:

Este proceso puede ser beneficioso si se desea reducir el audio a la mitad manteniendo su
contenido armónico, sin embargo al hacerlo, hay que tener en cuenta que se estarán añadiendo frecuencias
que previamente estaban atenuadas en cada instante de tiempo, como claramente se puede escuchar al
reproducir el audio recuperado. Esto se puede interpretar desde el espectrograma anterior donde a cada

19
franja de tiempo se le agregaron componentes de otras frecuencias, de aquí provienen las columnas de
tono verde que se pueden apreciar en la imagen.
En la siguiente imagen del gráfico comparativo del audio recuperado luego de la decimación con
el original, se puede observar que las amplitudes se mantuvieron constantes y que se redujo la duración a
la mitad:

20

Potrebbero piacerti anche