Separar una canción en diferentes pistas con Spleeter
Tags: python, machinelearning, music, tutorial
Published: 2020-08-26 01:06:12

Como buenos músicos, nos hemos encontrado con la necesidad de practicar nuestra canción favorita con nuestro instrumento favorito.

Este post va dedicado a todos los bajistas, guitarristas, baterístas y cantantes que desean realizar covers de canciones profesionales.
```
Nivel de dificultad: Intermedio
```
---

> Con esta herramienta podremos separar hasta 5 pistas:

* Vocales
* Batería
* Bajo
* Guitarra
* Extras

---

# Temario

1. Dependencias necesarias
2. Instalación
3. Separación de una pista
4. Unión de las pistas (Opcional)


> ⚠️⚠️ Esta herramienta no fue escrita por nosotros, el autor es Deezer y le damos los créditos a ellos ⚠️⚠️

---

## Dependencias necesarias

`Spleeter` es un programa que aplica redes neuronales para entrenar a una _IA_ con la finalidad de separar las pistas de audio a partir de las frecuencias de cada instrumento de la canción original.

`Spleeter` está escrito en #python, por lo que, deberemos de tener *una versión de python 3.6 ó 3.7*

> ⚠️⚠️ Spleeter no funciona en python 3.8 por el momento ⚠️⚠️

Como primer *dependencia* vamos a instalar _ffmpeg_:

* Windows: Descarga FFmpeg [aquí](https://ffmpeg.org/download.html)
* MacOS: Lo instalaremos mediante *[brew](https://brew.sh)*:
```bash
brew install ffmpeg
```
* Linux: `sudo apt install ffmpeg` (Dependerá de la distribución)

La segunda dependencia es *pip*, (Si tienes Python instalado ya tienes pip 😉)

---

## Instalación

Para poder instalar `spleeter` debemos ejecutar el siguiente comando:

```bash
pip install spleeter
```

Será una instalación larga, ten paciencia.


> 🚫 Me salió un error ☹️ 🚫

Si te encuentras con un error como este:

```bash
ERROR: Could not find a version that satisfies the requirement spleeter (from versions: none)
ERROR: No matching distribution found for spleeter
```

Quiere decir que la versión de Python que tienes instalada *no es compatible*, como te mencioné anteriormente, *solo funciona con python 3.6 ó python 3.7*

> Eso es todo 😳


---

## Separación de una pista

Abrimos una terminal `(desgraciadamente spleeter todavía no incluye una GUI o aplicación ejecutable)` y ejecutamos el siguiente comando:

```bash
spleeter separate -i cancion.mp3 -o pistas -p spleeter:4stems
```

> Explicación de cada argumento:

* `splitter separate`: Instrucción para separar una pista
* `-i cancion.mp3`: Seleccionaremos nuestro archivo .mp3 original
* `-o pistas`: Carpeta donde se guardarán las pistas generadas.
* `-p spleeter:4stems`: Modelo entrenado de la red para separar las pistas.

El último argumento indica la cantidad de pistas que obtendrá.

* Si deseas *separar las vocales de la canción*, el último argumento será `-p spleeter:2stems`.
* Si deseas *separar las vocales, bajo, batería y guitarras de la canción*, el último argumento será `-p spleeter:4stems`.
* Si eres más exigente o quieres experimentar con cinco pistas, el último argumento será `-p spleeter:5stems`.

> Ejecución (con imágenes):

![Paso 1](https://dev-to-uploads.s3.amazonaws.com/i/eufuqaquxuuyt5979zbr.png)

Después, descargará una copia del modelo entrenado:

![Descarga del modelo](https://dev-to-uploads.s3.amazonaws.com/i/98c2j4bdunxzppk6y9l3.png)

Posteriormente, hará una verificación de la copia del modelo:

![Analizando al modelo](https://dev-to-uploads.s3.amazonaws.com/i/u6z20uskxyf2et443p36.png)

Y nos mostrará los mensajes de pistas `generadas exitosamente`.

![Pistas separadas](https://dev-to-uploads.s3.amazonaws.com/i/xxffyt56g2u7voewv7do.png)


Si revisamos nuestro directorio, veremos lo siguiente:

![Finder](https://dev-to-uploads.s3.amazonaws.com/i/4fcyq289xvgn8ylhbpum.png)

Dentro de `pistas/cancion/` obtendremos las pistas separadas en formato `.wav`


![Pistas en formato .wav](https://dev-to-uploads.s3.amazonaws.com/i/j7ynb6l1ydpelq0gows1.png)

---

## Unión de las pistas (Opcional)

> Para este paso utilizaremos [Audacity](https://www.audacityteam.org)



![Audacity](https://dev-to-uploads.s3.amazonaws.com/i/squnjjbpbe07iyvnfnsw.png)

Una vez abierta la aplicación, arrastraremos una de las pistas generadas:

![Solo vocales](https://dev-to-uploads.s3.amazonaws.com/i/k0btd7c4y3ru39cqzmko.png)

Ahora, vamos a agregar la pista de la batería:

![Vocales y batería](https://dev-to-uploads.s3.amazonaws.com/i/cd3ei2ija0krmu8ivcrh.png)


Finalmente, daremos clic en el botón de `play` y reproduciremos ambas pistas.

---

> ¡Si te gustó síguenos en nuestra redes sociales y aquí para más contenido!