.

Unos meses atrás le echaba un ojo a un proyecto recreación de un modelo de emulación de amplificadores de guitarra en tiempo real usando aprendizaje automático y ahora me topo en Hacker News con un par de proyectos que también usan aprendizaje automático para recrear sonido de equipo musical. En concreto, lo que veía apuntado era un enlace a SmartGuitarAmp en GitHub:

Plugin de guitarra hecho con JUCE que utiliza […] un modelo WaveNet para recrear el sonido de de hardware real. La versión actual modela un amplificador de válvulas pequeño, con la capacidad de añadir más opciones en un futuro. Hay un canal limpio/distorsionado, que es equivalente a las configuraciones limpia y de saturación máxima del amplificador. Los controles de ganancia y EQ se añadieron para modular el sonido modelado.

El mismo desarrollador señala otro software complementario, SmartGuitarPedal, también en GitHub, que tiene una finalidad similar pero enfocada a la emulación de pedales como el TS9 Tubescreamer o el Blues Jr. Se utilizan ganancia y nivel como formas sencillas de controlar el sonido. El modelo WaveNet es efectivo en la emulación de efectos de tipo distorsión o amplificadores de tubo.

Hay un par de demostraciones en el canal de YouTube de GuitarML, para los que tengan curiosidad. Cada vez que menciono WaveNet me quedo con las ganas de profundizar más en el tema. Debe resultar muy interesante.

.

Echando la vista atrás, hace tres años hice una primera mención por estos lares al modelo WaveNet de van den Oord et al.. Ahora me vuelvo con el trabajo de este integrante de Google DeepMind en Jukebox, una red neuronal que genera música, incluyendo canto rudimentario, como audio crudo en distintos géneros y estilos de artistas. [Además, han publicado] los pesos y el código del modelo, junto a una herramienta para explorar las muestras generadas.

Esquema del entrenamiento de tres VQ-VAE con resoluciones temporales diferentes. En cada nivel, el audio de entrada es segmentado y codificado en vectores latentes ht, que son cuantificados a los vectores del libro de códigos ezt más cercados. El código zt es una representación discreta del audio sobre la que posteriormente se entrena la previa. El descodificador toma la secuencia de vectores del libro de códigos y reconstruye el audio. El nivel superior aprende el grado más alto de abstracción, dado que está condificando audio más largo por token mientras el tamaño del libro de códigos se mantiene igual. El audio se puede reconstruir utilizando los códigos de cualquiera de los niveles de abstracción, donde los codigos de los niveles inferiores y menos abstractos producen el audio de mayor calidad.
Fuente: Jukebox: A Generative Model for Music

Recientemente vi una mención a modelos generativos VAE para síntesis de música leyendo sobre la I.A. que produce un ritmo a la batería a partir de cualquiera secuencia MIDI de entrada, pero sigo siendo bastante ignorante en lo que se refiere a todas estas tecnologías. Eso no quita (o quizás ayuda a) que me sigan pareciendo muy interesantes.

.

No encuentro ahora el enlace donde vi el artículo en arXiv de un equipo de FAIR titulado «A Universal Music Translation Network», un método para traducir música entre instrumentos, géneros y estilos […] basado en un autocodificador wavenet multi-dominio, con un codificador independiente del dominio y un espacio latente desenredado entrenado de punto a punto con formas de onda. Estoy casi seguro que: a) la traducción dista mucho de ser técnicamente correcta y, b) tampoco aclara qué es lo que se supone que hace ni cómo lo hace.

Leyendo un poco más, se da a entender que esta red puede tomar un sonido en forma de onda como entrada y producir una réplica como si hubiera sido realizada con un conjunto de instrumentos y estilos diferentes al original. Es lo que hacemos los humanos al oír una canción o una composición instrumental y la replicamos tarareando o silbando.

Sobre el cómo lo hacen, mis conocimientos y mi tiempo (ambos limitados) no me han permitido hacer una lectura exhaustiva del artículo. Puedo entenderlo a nivel superficial pero sería muy interesante profundizar en este tipo de proyectos.

Arquitectura de la red de traducción musical universal.

Me parece curioso que, como parte de su proceso de evaluación, aprovecharan de una de las ventajas de NSynth que mencionaban en su presentación, en particular, el corpus de notas musicales que elaboraron.

.

La semana pasada hablaba de un sintetizador neuronal paramétrico de canto y ahora me topo con NSynth, un proyecto de síntesis de audio utilizando Magenta con un modelo basado en WaveNet:

Uno de los objetivos de Magenta es aplicar aprendizaje automático al desarrollo de nuevas formas de expresión humana. Así que hoy estamos orgullosos de anunciar NSynth (Neural Synthesizer), una aproximación novedosa a la síntesis de música diseñada para asistir en el proceso creativo.

A diferencia de sintetizadores tradicionales que generan audio a partir de componentes hechos a mano, como osciladores y tables de ondas, NSynth utiliza redes neuronales profundas para generar sonidos al nivel de muestras individuales. Aprendiendo directamente de los datos, NSynth ofrece a los artistas un control intuitivo sobre el timbre y la dinámica, y la habilidad de explorar nuevos sonidos que sería difícil o imposible de producir con un sintetizador afinado a mano.

Las cualidades acústicas del instrumento aprendido dependen tanto del modelo usado como los datos de entrenamiento disponibles, así que estamos encantados de publicar mejoras de ambos:

Un descripción completa del conjunto de datos y el algoritmo se puede encontrar en nuestra publicación en arXiv.

Visión general del autocodificador WaveNet de NSynth

Aunque no he tenido oportunidad de cacharrear con TensorFlow no es la primera vez que aparece Magenta por aquí: hace unos meses mencionaba unos experimentos musicales con inteligencia artificial que me tentaban a echar un ojo a las herramientas de aprendizaje automático que utilizan. De momento me lo apunto como otra referencia.

.

Al igual que me pasó con los contenidos del lunes, llego vía Hacker News a otro texto bastante curioso, A Neural Parametric Singing Synthesizer:

Avances recientes en modelos generativos para síntesis de voz a partir de texto (en inglés, Text-to-Speech Synthesis o TTS) usando redes neuronales profundas using (en inglés, Deep Neural Networks o DNNs), en particular el modelo WaveNet (van den Oord et al., 2016a), han mostrado que aproximaciones basadas en modelos pueden conseguir una calidad de sonido igual o superior a la de sistemas concatenativos. La capacidad de este modelo para generar con precisión formas de onda de habla demuestra claramente que el sobre-suavizado no es un problema. Aunque modelar directamente la señal de la forma de onda es muy interesante, creemos que para la voz cantada la aproximación más tradicional de usar un vocoder paramétrico es más adecuada.

Visión general de la arquitectura de red propuesta por Merlijn Blaauw y Jordi Bonada.

Los resultados son, por lo menos, curiosos.