Articulo UBit - Universidad de Belgrano

Anuncio
Distorsión de Sonidos con Redes
Neuronales
Introducción
A continuación se presenta una investigación realizada como Trabajo Final de Carrera para la Universidad
de Belgrano, en la cual se desarrolló un software capaz de distorsionar grabaciones digitales efectuadas
con guitarras eléctricas, y se encuentra orientado a actuar como soporte durante el proceso de producción
musical.
Específicamente, se empleó el modelo de Perceptrón Multicapa Feed-Forward para aprender e imitar el
comportamiento que tienen los efectos distorsionadores para guitarras eléctricas sobre las señales
provenientes del instrumento.
Efectos Distorsionadores
Podemos definir distorsión como toda “deformación que sufre una señal eléctrica a causa de elementos
del propio circuito (resistencias, condensadores, bobinas), o externos a él” [1].
En el caso de los distorsionadores de guitarra eléctrica lo que se busca, puntualmente, es modificar la
señal original proveniente del instrumento, con el objetivo de obtener distintos matices y tonalidades que
resultarían imposibles de generar de forma natural.
La motivación principal de nuestra investigación fue la de comprobar si resulta posible generar de forma
automatizada un modelo matemático equivalente a un efecto distorsionador, realizando únicamente un
análisis sobre las salidas generadas por el dispositivo frente a determinadas entradas.
Solución Propuesta
Muestras de Entrenamiento
Para poder muestrear el comportamiento que presenta un efecto distorsionador determinado – y así poder
entrenar una red neuronal para imitar su funcionamiento -, es necesario capturar y digitalizar la
respuesta A’ (Señal Distorsionada) que genera el dispositivo, frente a una entrada A (Señal Original)
dada.
Para ello, el primer paso consistió en crear un archivo digital de audio el cual contuviera una
representación de posibles entradas del sistema. Se generaron tres formas de onda distintas, situadas una
a continuación de la otra: sinusoidal, cuadrada y dentada.
[Onda Sinusoidal….]
[ Onda Cuadrada…]
[
Dentada.…...]
Onda
Señal Original A para Entrenamiento
Para generar la muestra de Señal Distorsionada A’, se conectó un distorsionador marca Boss, modelo DS1,
entre
la
salida
y
entrada
de
audio
de
la
placa
de
sonido.
Luego, reprodujimos en la salida de audio de la PC la Señal Original A, y simultáneamente capturamos en
la entrada de audio de la PC la Señal Distorsionada A’.
[Onda Sinusoidal….]
[ Onda Cuadrada…]
[ Onda Dentada…….]
Señal Distorsionada A’ para Entrenamiento
Algoritmos Desarrollados
Para ambos: el proceso de entrenamiento de la red neuronal, y posterior distorsión de una señal digital,
hemos diseñado dos algoritmos que nos permiten tratar las señales de forma segmentada, dependiendo de
la arquitectura de red neuronal a emplear, cuyo pseudo-código presentaremos a continuación:
Pre-condiciones:
 Una Red Neuronal Artificial FeedForward, con N neuronas en la capa de entrada
y M neuronas en la capa de salida.
 Las señales digitales Original y Distorsionada, ambas de longitud Z
 La variable ‘ i ‘, inicializada en 0.
1. Tomar los bytes de la señal Original correspondientes al segmento [ i, N + i ], y los
bytes del segmento [ i, M + i ] de la señal Distorsionada.
2. Aplicar el algoritmo RPROP[2], utilizando los segmentos tomados de ambas señales
en el paso anterior como entrada de la red y respuesta deseada.
3. En caso en que (M + i + 1) sea menor que Z, incrementar la variable i en 1 unidad, y
repetir desde el paso 2. En caso contrario, finalizar la ejecución.
Algoritmo de Entrenamiento por Segmentos
Análogamente, el algoritmo que empleamos para aplicar el efecto de distorsión sobre una señal digital
que hemos empleado es el siguiente:
Pre-condiciones:
 Una Red Neuronal Artificial entrenada, con N neuronas en la capa de entrada y
M neuronas en la capa de salida.
 La señal digital Original, de longitud Z (siendo Z mayor que N).
 Un bloque de memoria libre, de tamaño Z, el cual denominaremos
Distorsionado. Dicho bloque, al final de la ejecución, contendrá la señal
distorsionada de salida.
 La variable ‘ i ‘, inicializada en 0.
1. Tomar los bytes de la señal Original correspondientes al segmento [ i, N + i ].
2. Calcular la salida de la red neuronal, utilizando el segmento de Original obtenido
en el punto anterior, y almacenarlo en el segmento [ i, M + i ] del bloque
Distorsionado.
3. En caso en que (M + i + 1) sea menor que Z, incrementar la variable i en una
unidad, y repetir desde el paso 2. De no ser así, finalizar la ejecución.
Algoritmo de Distorsionado por Segmentos
Conclusiones
Las redes neuronales artificiales son una tecnología básicamente empírica, puesto que no nos ofrecen
una precisión del 100% en sus resultados.
Debido a que no existe método para calcular analíticamente la arquitectura óptima que una red neuronal
debe tener para realizar una tarea determinada, hemos entrenado y probado numerosas arquitecturas de
tres, cuatro y cinco capas, alternando el número de neuronas empleadas en las distintas capas.
Los mejores resultados que hemos logrado obtener fueron producidos por una red neuronal de cinco
capas, con 32 neuronas de entrada, 16, 8 y 8 neuronas respectivamente en las capas ocultas, y 1 neurona
en la capa de salida, la cual fue entrenada durante un total de 100 épocas.
[Onda Sinusoidal….]
[ Onda Cuadrada…]
[ Onda Dentada…...]
Señal Distorsionada generada con Arquitectura de Cinco Capas [32-16-8-8-1]
Toda la documentación de consulta que hemos utilizado para nuestro trabajo indicaba que un perceptrón
de tres capas formado por N neuronas de entrada, H ocultas y M de salida, debería tener la capacidad
suficiente como para poder aproximar el comportamiento de una función f matemática dada, y poder
predecir sus respuestas ante X entradas.
A pesar de ello, sin embargo, empíricamente en nuestro caso hemos comprobado que resulta necesario
utilizar arquitecturas de hasta cinco capas para lograr los resultados deseados.
La tecnología de Redes Neuronales Artificiales nos ha demostrado poseer un grado de versatilidad
realmente interesante. A pesar de que ambos, el modelo de red y el algoritmo de entrenamiento
empleados no fueron diseñados originalmente con el objetivo de distorsionar señales de guitarra eléctrica,
no resultó necesario efectuar ningún tipo de adaptación específica para cumplir con nuestro objetivo, lo
que nos sugiere que los posibles campos de aplicación de esta herramienta no poseen límite alguno.
[1] J.R. FUSARIO y A.R. CASTRO. Teleinformática para ingenieros en sistemas de información, segunda edición,
Reverté, 2001.
[2] M. RIEDMILLER y H. BRAUN. The RPROP algorithm, IEEE International Conference on Neural Networks, Vol. 1,
pp.586 – 591, 1993.
Ing. Jorge Leandro Pérez
Ingeniero en Informática
Graduado de la Facultad de Tecnología Informática – UB
NOTA: Artículo basado en el trabajo final de carrera "Distorsión de Sonidos con Redes Neuronales"
de Jorge Leandro Pérez, Tutor: Ing. Sergio Omar Aguilera, 2008.
Descargar