AI of Things (VI): Inteligencia Artificial Generativa, creando música a ritmo de perceptrón

Guillermo Caminero Fernández    7 junio, 2022
Un robot tocando el piano. Foto: Possessed Photography / Unsplash

En los últimos años ha explotado la cantidad de modelos de IA (Inteligencia Artificial) que son usados para generar información sintética. Uno de los más famosos, y que lleva con nosotros desde el 2014, son las redes GAN (generative adversarial networks).

Estas redes neuronales se han usado para generar imágenes de todo tipo y pueden ser usadas para fines creativos como crear obras de arte; o fines no tan éticos como, por ejemplo, crear rostros sintéticos con la finalidad de crear perfiles falsos en redes sociales.

Los modelos de IA también son capaces de “crear” texto. Si bien es verdad que la generación de texto mediante IA existe desde hace mucho tiempo utilizando redes con memoria como las LSTM’s (Long short-term memory), no ha sido hasta los últimos años (concretamente en 2017) con la aparición de los Transformers cuando de verdad se consiguen textos generados con calidad y coherencia como para haber sido escritos por un humano.

Gracias a estas redes neuronales de última generación se pueden autocompletar palabras, terminar frases o incluso escribir novelas (de dudosa calidad). En la siguiente web se utiliza un transformer para completar una frase.

Ya hemos hablado de que un ordenador hoy en día puede crear con bastante calidad una imagen o un texto. Podríamos conformarnos con crear un cuadro digital, o escribir una novela con un ordenador, pero ¿por qué no ir más allá y crear otro tipo de datos? En este blog, entraremos en detalle y hablaremos sobre cómo una IA puede crear audio y en concreto música.

Las matemáticas de la música

Una imagen para un ordenador no es más que un conjunto de píxeles ordenados con unas intensidades determinadas. Al igual que las imágenes, un texto para un ordenador es un conjunto de letras dispuestas en un orden determinado por lo que el algoritmo solo tiene que encontrar el orden y el valor correctos.

Los píxeles son la base de las imágenes y las letras son la base de los textos. Entonces, ¿qué podemos utilizar para crear música? Para ello vamos a hablar resumidamente de cómo funciona un altavoz o un auricular.

Estos dispositivos convierten un impulso eléctrico en movimiento, este movimiento genera ondas que comprimen el aire generando ondas longitudinales. Estas ondas que se trasmiten por el aire son lo que conocemos como sonidos y como onda podemos actuar sobre ciertas variables como por ejemplo la duración, la intensidad (amplitud), el tono (frecuencia) y fase.

Dependiendo de la frecuencia escucharemos un sonido u otro, por ejemplo, una escala de notas musicales se puede representar como una señal sinusoidal con una frecuencia determinada. Podemos ver un ejemplo de la onda de estas notas en la imagen.

Código para crear la escala en imagen y sonido con Python utilizando la librería de PyAudio: gist escala
Código para crear la escala en imagen y sonido con Python utilizando la librería de PyAudio: gist escala

Con estas notas básicas ya podemos interpretar partituras de un único instrumento o canal, pero si queremos sonidos más complejos podemos hacer combinaciones de estas notas o acordes. Por ejemplo, para hacer sonar el acorde correspondiente con las notas do, mi, sol realizamos una composición armónica de los senos correspondientes a esas notas y los sumamos en fase. La onda resultante es la que se muestra en la siguiente imagen.

Código para crear el acorde en imagen y sonido con Python: gist acorde
Código para crear el acorde en imagen y sonido con Python: gist acorde

Las matemáticas están muy presentes en la música y se ha estudiado mucho esta aplicación de las matemáticas en la música para conocer las frecuencias que juntas suenan “bien” (consonancia) de las que suenan “mal” (disonancia).

Para el análisis de estas señales, y de la música en general, existe mucha información por internet. Para empezar, recomiendo visitar en este webinar donde podemos encontrar una buena introducción.

Para tener un concepto más claro de la parte de los sonidos, las escalas y cómo generar distintos sonidos con distintas ondas, se puede ver el siguiente vídeo:

Generando música con Inteligencia Artificial

Ya estamos viendo la complejidad de crear un sonido y solo tenemos 2 segundos de audio, para conseguir una canción completa necesitamos una composición enorme de este tipo de sonidos de distintas duraciones y distintos tonos.

Para esta tarea podríamos empezar pensando en un algoritmo de aprendizaje por refuerzo de forma que éste empezaría ofreciendo tonos y longitudes aleatorias mientras que un usuario elegiría los que le gustan y los que no le gustan. Otra alternativa podría ser, por ejemplo, el uso de algoritmos genéticos. En este caso, se ofrecen distintas melodías, el usuario selecciona las que le gustan y con éstas se origina la nueva generación.

Las opciones arriba mencionadas son unos procesos que podrían llevar días, meses o años para conseguir algo que nos guste. Para que esta tarea pueda ser rápida y eficiente se utilizan algoritmos supervisados combinados con el uso de la transferencia de conocimiento. Partiendo de música ya creada y que es de nuestro gusto, podemos crear nueva música que se parezca a la anterior.

Dos métodos para generar música: GAN y VAE

Para este tipo de generación musical existen distintos tipos de métodos. Los más conocidos son las GAN (anteriormente comentadas) y los VAE (Variational Autoencoder).

  • Las GAN se entrenan como un entorno competitivo donde existe un generador y un discriminador donde cada uno compite para ganar al otro. El generador genera música a partir de ruido aleatorio (música falsa) y el discriminador se entrena con música real y la música falsa del generador. Cuando este discriminador no sea capaz de diferenciar entre la música real y la generada por el generador, significará que tenemos un generador de música “casi” real. Al principio el generador crea música completamente aleatoria, pero con el entrenamiento se va pareciendo cada vez más a las muestras de música real proporcionada.
  • El VAE tiene una estructura de reducción y reconstrucción del espacio latente. Este tipo de generación musical es muy utilizado y es el que utiliza la empresa de OpenAI en su último avance en la creación de música Jukebox. Además, hace uso de la tecnología en redes neuronales más modernas actualmente como son los Transformers (ya comentados) para conseguir calidades de música casi reales. Podemos encontrar un amplio repertorio de ejemplos de canciones creadas con esta tecnología en la propia web https://jukebox.openai.com/.

Estas redes neuronales son muy costosas computacionalmente y difíciles de entrenar sin un buen hardware como GPU o TPU. OpenAI facilita un código de ejemplo para generar música utilizando este modelo en Google Colab.

Gracias a los recursos proporcionados por Google de forma gratuita, podemos entrenar un modelo para crear unos segundos de una canción con el estilo de nuestro cantante favorito y con la letra de la canción que nosotros elijamos.  

Otras librerías y proyectos para crear música

Existen otras librerías o proyectos con la finalidad de crear música como por ejemplo la de Google Magenta donde podemos encontrar muchos ejemplos de creación de música de multitud de formas como las mencionadas GAN, VAE, etc.

Ahora bien, si somos capaces de generar música que se parece a la de ciertos artistas con sus ritmos, bases e incluso con un audio que podría representarles, ¿hasta qué punto puede la inteligencia artificial llegar?, ¿es éticamente correcto el utilizar las creaciones de estos artistas para crear nuevas? ¿los derechos de la música creada se los merece el artista original? Surgen muchas preguntas que probablemente generen discusión y no todos opinaremos lo mismo.

Para más contenido sobre IoT e Inteligencia Artificial, no dudes en leer otros artículos de nuestra serie:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *