Afin de pouvoir chanter ou jouer d'un instrument par-dessus une chanson de votre choix, il vous faut une musique sans la voix, sans l'instrument principal ou avec la partition à côté. À moins de disposer d'une version spéciale fournie par le producteur, il n'est pas du tout évident de réussir un tel projet. Cet article vous explique la méthode moderne dopée à l'intelligence artificielle. Tous les logiciels évoqués dans l'article sont gratuits et ne requièrent aucune maîtrise de la programmation.
Il s'agit d'une musique sans parole, sans voix, sans chanteur. Il est possible d'appliquer des filtres coupe-bande pour réduire la voix dans la bande de fréquences de la voix humaine, mais cela détériore la musique, car la voix et la musique sont superposées. On voudrait plutôt baisser le volume de la voix (à l'infini pour la supprimer) sans toucher à la musique.
Auparavant, avec quelques hautes compétences musicales, il était possible de reconstruire toute la structure d'une chanson dans un fichier MIDI. Internet regorge de ces fichiers trouvables avec l'aide de Van Basco. Un tel fichier est très compact, peut contenir des paroles et sont souvent très réussis. Un quidam moyen n'a pas les compétences de faire cela.
L'opération consistant à transformer une musique en partition s'appuie sur la transformée de Fourier. C'est un algorithme très connu et très puissant qui permet de retrouver les caractéristiques de chaque sinusoïde d'un signal. Ces sinusoïdes vont donner les harmoniques, donc les notes, donc leur durée, donc leur place dans la partition.
Le problème est qu'une musique est naturellement très riche en sinusoïdes : le décodeur n'est pas capable de bien reconnaître l'intégralité des notes, ni l'instrument qui les a produites. Une première approche consiste à filtrer la musique dans une bande de fréquences (filtre coupe-bande) pour réduire les interactions. Même si on n'aura pas la ligne de basses, les harmoniques supérieures risquent d'être altérées et le résultat final aussi.
Il existe des plugins dans FL Studio appelés EQ2 et Edison. En combinant les deux, il est possible d'isoler une partie du morceau et d'en déduire la partition. Néanmoins, cette méthode s'avère insuffisante en pratique. Si on pouvait n'analyser que l'instrument qui nous intéresse alors le résultat serait beaucoup plus convaincant.
Pour améliorer les résultats, c'est là qu'intervient l'excellent Demucs. Il s'agit d'un logiciel développé par les chercheurs de Facebook. Son objectif est de découper n'importe quelle chanson en 4 sous-chansons (voix, basses, percussions et lead). En recombinant ces 4 sous-chansons, on retrouve à peu près la chanson originale. Vous pouvez ainsi éliminer ou garder certaines parties d'une musique, ce qui résout notre problème de karaoké ou d'extraction de la partition.
Ayant lu la publication sur le sujet, voici son fonctionnement dans les grandes lignes. L'algorithme a été entraîné à partir de 800 chansons déjà découpées par le producteur original. Cela a permis de faire converger un modèle de reconnaissance vers des paramètres intelligents qui, en fournissant une chanson combinée, renvoient 4 sous-chansons les plus proches de la version originale. C'est grâce à ce corpus d'entraînement que l'algorithme est capable de découper n'importe quelle chanson. L'algorithme réalise donc une approximation musicale pour minimiser l'erreur de ressemblance. Précisément, il y a 3 techniques : la méthode spectrale est à 2 dimensions, la méthode waveform est à 1 dimension, et la méthode hybride combine les deux. La transformée de Fourier à court terme (STFT) est massivement utilisée et reste très gourmande en calculs. Une chanson est découpée en petits segments de quelques secondes que et que traite l'algorithme. La publication indique enfin que Demux a en général de bonnes performances, mais il peut être parfois moins bon que Band-Split RNN (une solution concurrente).
Ce produit est étonnamment gratuit et très simple d'installation. Vous pouvez l'utiliser en payant sur des sites comme Melody.ml, sinon vous pouvez l'installer sur votre ordinateur :
pip install --upgrade demucs PySoundFile
Pour analyser une chanson, c'est ensuite très simple : demucs monfichier.wav
Un sous-dossier sera créé avec 4 fichiers correspondants aux différents éléments de la chanson. Il existe le paramètre --two-stems vocals
pour n'isoler que la voix du reste du morceau. Il n'en faut pas plus :
Faites l'essai et vous verrez comment cet outil est spectaculaire grâce à l'essor des technologies, des logiciels et des algorithmes. L'algorithme ici présent ne fait pas peur, car il n'est pas génératif : il ne produit des données qu'à partir de ce que vous lui donnez à manger.