Logo Pandora


Demucs

Antes de comenzar aclaro que el uso de esta herramienta requiere de unos cuántos pasos entre los que vamos a instalar el intérprete de un lenguaje de programación, editar variables de entorno, y ejecutar comandos desde la consola de comandos de Windows. No es algo súper complejo, pero quizás no tan conveniente para recién iniciados en el uso del sistema operativo.


¿Qué es Demucs?

Es una inteligencia artificial capaz de separar la voz, la batería, las guitarras, etc. En definitiva, las diferentes pistas que componen una canción. El creador es Alexandre Défossez, quien ya ha publicado otros proyectos de IA relacionados con la música. Para conseguir la extracción de las diferentes pistas de audio que componen una pieza musical o canción cuenta con la implementación de Demucs y Conv-Tasnet. Estas implementaciones son capaces de separar la batería, el bajo y la voz del resto con resultados sorprendentes, superando los métodos basados en formas de onda o espectrogramas previos. U-Net funciona, a grandes rasgos, tomando los datos de entrada que en este caso va a ser una canción. Esta se comprime y se codifica para después aprender a decodificarlas de la manera en la que nosotros queramos. Cuantas más canciones procese, más aprenderá a diferenciar los sonidos que componen una pieza musical. Este tipo de redes suele ser aplicadas en problemas con imágenes donde buscamos por ejemplo los diferentes elementos que aparecen en ella. Pero en este caso se ha aplicado a un archivo de audio, donde existe una onda sonora. Como una imagen no es lo mismo que un audio porque este último tiene una dimensión temporal, se ha añadido otro módulo que es especialista en este tipo de datos temporales denominado LSTM.


Instalando el intérprete de python y las dependencias necesarias

La versión de python en la que de seguro funciona correctamente por ahora es la 3.7.9, aunque puede que trabaje bien en otras también.

Una vez descargado el instalador equivalente a la arquitectura de Windows, procederemos a ejecutar el archivo para realizar la instalación.
Verificamos la casilla "Add Python 3.7 to PATH", y pulsamos en

Install Now C:\Users\MiUsuario\AppData\Local\Programs\Python\Python37-Arquitectura

Esto instala el intérprete y crea las variables de entorno necesarias.
Ahora procederemos a descargar la librería y dependencias, para ello descargamos
requirements.txt
Una vez descargado lo pegamos en la raíz del directorio usuario, donde están las carpetas descargas, documentos, etcétera. Para llegar allí rápidamente podemos abrir el menú ejecutar con Windows + r, escribir un punto y pulsar intro.
Lo siguiente es abrir el símbolo del sistema o CMD, para ello lo buscamos en el menú de inicio. O escribiendo cmd en el menú ejecutar, y luego intro. Una vez abierto escribiremos y ejecutaremos el siguiente comando. Hay que respetar los espacios y mayúsculas

pip install -U demucs -r requirements.txt

Esto va a tardar su tiempo, por lo que hay que esperar a que finalice y no cerrar la consola antes de que termine el proceso.


FFMPEG

Otro de los elementos importantes es el uso del FFMPEG, el cual es una colección de software libre que puede grabar, convertir (transcodificar) y hacer streaming de audio y vídeo. En este caso Demucs lo necesita para realizar la compresión y converción de los audios.
Descargar FFMPEG
Una vez descargado y descomprimido, tan solo necesitamos los archivos de la carpeta bin;

Estos archivos hay que pegarlos en la carpeta donde vayamos a realizar las extracciones, aunque recomiendo que las añadan a las variables de entorno para que esto no sea necesario. Pueden ver como hacerlo en el artículo siguiente

Variables de entorno. Que son, y como editarlas


Separando canciones

Si todo lo anterior se realizó correctamente, ya estamos listos para utilizar esta maravillosa herramienta, y lo haremos de la siguiente forma:

Aquí ya tendríamos la consola CMD ruteada a la nueva carpeta recién creada, por lo que solo resta explicar algunos comandos. La primera extracción que hagamos va a tardar un buen rato, ya que tiene que descargar unas cuantas cosas. En otras ocasiones también va a tardar mucho, pero un poco menos que la primera vez.
Es importante escribir correctamente el comando antes de pulsar intro. El nombre del archivo debe ser exacto, y es conveniente colocarlo entre comillas por si el mismo contiene espacios en blanco.
Va a crearse una nueva carpeta llamada separated, con una subcarpeta mdx_extra. Dentro de la misma una carpeta más con el nombre de la canción, la cual contendrá los archivos de audio separados.


Separar en 4 pistas (4 voz, batería, bajo, varios)

demucs -n mdx_extra -d cpu "mi archivo.mp3"

reemplazar "mi archivo.mp3" por el nombre del archivo a procesar.

2 pistas (voz, resto de instrumentos)

demucs -n mdx_extra -d cpu --two-stems=vocals "mi archivo.mp3"

Nota:
Podemos modificar el parámetro --two-stems por las siguientes opciones:

Esto va a crear una pista separada con lo seleccionado en el parámetro, y otra con el resto de elementos.

Extracción un poco más rápida, pero de menor calidad

demucs -n mdx_q -d cpu "mi archivo.mp3"

Especificar la cantidad de memoria ram

demucs -n mdx_extra -d cpu -j 3 "mi archivo.mp3"

El número del parámetro j, va duplicando la cantidad de memoria ram utilizada en el proceso


Como ha sido aclarado en varias ocasiones, dependiendo de la potencia de nuestro hardware el proceso suele tardar bastante. Podemos verificar si ha finalizado el trabajo corroborando que hayan sido creados los archivos de audio en la carpeta antes nombrada.


Demo

Este proceso fué aplicado sobre una canción folclórica argentina llamada Circo Criollo, una chacarera de Rali Barrionuevo.

Audio original


Audio procesado con Demucs