Comment StemsPrime fonctionne

Ce n'est pas un mode d'emploi : c'est ce qui se passe sous le capot. Le format .stems d'Engine DJ, sa base de données, la séparation par réseau de neurones. Pour les curieux, et pour ceux qui veulent savoir à qui ils confient leur bibliothèque.
Sommaire 1. Le format .stems, décortiqué 2. La base de données d'Engine 3. La séparation : Demucs sur votre machine 4. Processeur ou carte graphique 5. Ce qui part sur Internet, et ce qui n'y part pas

1. Le format .stems, décortiqué

Un fichier .stems d'Engine DJ est un conteneur MP4 ordinaire — les mêmes boîtes ftyp, mdat, moov qu'une vidéo — dont la piste audio est de l'AAC à huit canaux : deux par partie, quatre parties. Rien d'exotique jusque-là. La particularité est que chaque unité d'accès AAC est chiffrée en AES-128. Le conteneur, lui, reste en clair : n'importe quel outil lit la durée, le débit, le nombre de canaux — il n'entend simplement rien.

Ce que fait StemsPrime. Il encode les quatre parties en AAC huit canaux avec la disposition exacte qu'Engine attend, chiffre chaque unité d'accès, et écrit le conteneur avec la même configuration que celle qu'Engine produit lui-même — au point que l'en-tête audio est identique octet pour octet. C'est ce qui fait qu'Engine OS lit ces fichiers sans distinguer ceux qu'il a faits de ceux que StemsPrime a faits.

Aucun nom de partie n'est écrit dans le fichier : l'ordre des canaux fait foi, et il a été déterminé à l'oreille sur des fichiers produits par Engine. Le nom du fichier est <identifiant de piste> <identifiant de base>.stems, dans le dossier Engine Library/Stems : il n'y a rien d'autre à faire pour qu'Engine le voie. Sa seule présence compte.

2. La base de données d'Engine

Engine DJ range tout dans une base SQLite, Database2/m.db, une par disque : celle de l'ordinateur dans Musique, une à la racine de chaque disque ou clé. Une musique est rangée dans la base du disque où est son fichier. Une playlist est une chaîne d'entrées liées entre elles par l'identifiant de la suivante ; la pochette est un fichier à part, nommé d'après son empreinte.

Pourquoi il faut écrire dans plusieurs tables à la fois. Ajouter une piste, ce n'est pas une ligne : c'est une ligne dans Track, une entrée de playlist recousue dans la chaîne, une pochette déposée et référencée, et des déclencheurs SQL qu'Engine a posés lui-même et qui se rejouent à chaque insertion. StemsPrime rejoue le schéma d'Engine dans son banc d'essai à chaque version, pour que ce qu'il écrit soit exactement ce qu'Engine aurait écrit.

Une règle sans exception : StemsPrime ne touche jamais à la base quand Engine DJ est ouvert. SQLite le refuserait de toute façon, et une base à moitié écrite est le pire qui puisse arriver à une bibliothèque.

3. La séparation : Demucs sur votre machine

Séparer une musique en voix, basse, batterie et mélodie est le travail d'un réseau de neurones, Demucs, entraîné sur des milliers de morceaux dont on connaissait les pistes. StemsPrime l'exécute par ONNX Runtime, une bibliothèque qui fait tourner ces modèles sans Python ni dépendance lourde : le modèle est un fichier de quelques centaines de mégaoctets, téléchargé une seule fois.

Le modèle a été entraîné en 44,1 kHz : StemsPrime fait une copie de travail à cette fréquence, la découpe en segments, les passe au modèle, et recolle les résultats avec un recouvrement pour qu'aucune coupure ne s'entende. Le fichier d'origine n'est jamais modifié.

Deux modèles. Le modèle standard fait le travail en une passe. Le modèle « FT » (fine-tuned) est en réalité quatre modèles, un par partie, chacun spécialisé : le résultat est plus propre, le temps de calcul est multiplié d'autant.

4. Processeur ou carte graphique

Un réseau de neurones, c'est des milliards de multiplications. Un processeur les fait une par une, ou presque ; une carte graphique NVIDIA en fait des milliers en parallèle. StemsPrime emploie la carte quand elle est là, par CUDA, et retombe sur le processeur sinon — le résultat est identique, seule la durée change : quelques secondes contre plusieurs minutes par morceau.

Le moteur CUDA pèse plus de deux gigaoctets ; il s'installe à part, d'un clic, et se laisse désinstaller de même. Il n'a rien de magique : ce sont les bibliothèques de calcul de NVIDIA, posées dans le dossier de StemsPrime.

Et le karaoké ? La fabrication de karaokés (alignement des paroles, chœurs, vidéo) vit désormais dans Karamoov, le logiciel dédié, bâti sur le même moteur de séparation.

5. Ce qui part sur Internet, et ce qui n'y part pas

Aucune musique ne quitte votre ordinateur. Tous les calculs — séparation, alignement, encodage — se font chez vous. StemsPrime ne se connecte que pour trois choses : télécharger les modèles et le moteur CUDA la première fois, vérifier s'il existe une mise à jour, et compter les téléchargements sur le site de l'éditeur — sans rien d'autre que le numéro de version.

Rédigé par l'auteur de StemsPrime, développeur indépendant. Le logiciel est gratuit pour un usage personnel ; tout ce qui est décrit ici a été écrit pour lui, sans bibliothèque de séparation ou de karaoké toute faite.