FUNIX

Mettez un manchot dans votre PC


Encourager FUNIX

La consultation du site est totalement libre et gratuite, sans publicités. Les dons sont néanmoins appréciés pour payer l'hébergement et encourager son auteur


Gérer les métadonnées audio et listes de lecture

[ Présentation   | Taguer ses fichiers audio ( Taguer automatiquement avec MusicBrainz Picard  , taguer manuellement  avec kid3 ) Gérer les listes de lecture ( les formats de liste de lecture , créer ses listes de lecture automatiquement , créer ses listes de lecture manuellement ) ]

Gérer les métadonnées et listes de lecture audio

Dernière modification 25 décembre 2023

Présentation

Cette page a pour objet de vous présenter des outils pour gérer les métadonnées de vos fichiers audio qui vont vous permettre ensuite de créer des listes de lecture.

On part sur le principe que vous avez installé les bibliothèques de base pour faire de la vidéo.

Taguer ses fichiers audio

Tout d'abord juste un petit mot sur le format des métadonnées audio. ID3 est de facto le standard utilisé pour les métadonnées audio qui signifie " IDentify an MP3", mais en fait il ne s'applique pas qu'aux fichiers MP3, cela marche également pour les fichiers FLAC ou OGG. Il se décline en plusieurs versions:
  •     ID3v1: c'est la première version, où on retrouve le titre, l'artiste, l'album, l'année de parution, un commentaire et le genre musical
  •     ID3v1.1: idem avec le numéro de la piste sur l'album
  •    ID3v2: c'est beaucoup plus riche, on peut rajouter à peu près tout et n'importe quoi, en plus de l'image de l'album, on peut aller jusqu'aux paroles de la piste, le compositeur, l'arrangeur, etc. le champ ReplayGain fait son apparition, il donne le volume sonore de la piste et permet à un lecteur audio de normaliser le son. La dernière version de ce standard est la ID3v2.4 qui date de 2000.
ID3 n'est pas le seul format d'encodage des métadonnées audio, sans évoquer les formats propriétaires (iTunes, ASF/Windows media, ...) il existe également les formats documentés et ouverts:
  •     les tags APE qui existent dans les versions APEv1 et APEv2 dont on retrouvera ici la description de l'ensemble des champs, il a le défaut de ne pas embarquer d'image de l'album
  •     les tags vorbis qui peuvent être utilisés pour les fichiers audio Vorbis, FLAC, Theora et Speex, on retrouvera le format des différents champs par
C'est assez difficile de comparer ces différents formats, ils intègrent tous les différents champs qui vont bien dont le ReplayGain, ID3 est le format le plus utilisé et c'est l'assurance que la plupart des lecteurs le reconnaissent même dans sa dernière version, le format APE est donné pour être plus simple et plus flexible avec une meilleure reconnaissance des différentes langues, mais il n'intègre pas les images.
En revanche en se projetant vers l'avenir, on peut constater que la dernière version d'ID3 date de 2000, autant dire un siècle à l'échelle de l'informatique et que le site officiel n'a pas évolué depuis plus de 10ans maintenant, ça sent quand même un peu le sapin et on peut se demander si les autres formats ne vont pas le supplanter à terme, la problématique se pose également pour le format MP3 mais c'est un autre sujet.

Dans tous les cas il faudra éviter le mixte de format de métadonnées rendu possible par le fait que les tags ID3 et APE peuvent se retrouver dans le même fichier au début et à la fin (et vice-versa), ça peut entraîner des conflits et des erreurs de lecture suivant le lecteur.

Taguer automatiquement avec MusicBrainz Picard

Sur la plupart des lecteurs audio modernes quel que soit le support (lecteur mp3, téléphone mobile, etc.), les tags des fichiers audio s’affichent pendant la lecture (artiste, titre, album, image d’illustration, ...) or il peut s'avérer qu'ils soient mal tagué (balisé pour parler correctement le français !) pour x raisons. Par ailleurs l’intérêt des tags est de pouvoir créer des listes de lecture en sélectionnant l’année, l'artiste ou le nom de l'album par exemple.
MusicBrainz Picard est un outil permettant d'identifier les titres audio et de les taguer proprement plus ou moin automatiquement. Pour la petite histoire et les amateurs de Star Trek, le nom Picard vient du nom du commandant du vaisseau Entreprise Jean Luc Picard dans la série Star Trek la nouvelle génération.
Pour l’installation de picard, rien de plus simple, on installera d’abord les packages chromaprint et python3-fasteners, python3-qt5-multimedia puis mutagen, qui est un module python pour manipuler les métadonnées audio, qu’on trouvera par là  https://github.com/quodlibet/mutagen. On le décompresse en tapant:

tar xvfz mutagen-release-1.47.0.tar.gz

puis dans le répertoire mutagen-release-1.47.0 ainsi créé on tape en tant que root:

python setup.py install

Sur le site de picard on récupère l’archive qu’on décompresse en tapant:

tar xvfz picard-2.10.tar.gz

cela donne le répertoire picard-2.10  dans lequel on tape en tant que root:

python setup.py install

Il m’a paru utile de créer un compte sur le site MusicBrainz qui se définit comme une encyclopédie musicale libre qui collecte les métadonnées musicales que tout le monde peut alimenter et enrichir.

On lance picard en tapant simplement picard dans un shell. Dans les options, j’ai indiqué mon compte MusicBrainz, picard me renvoie ensuite sur le site et me donne un code d'activation que je dois saisir alors, au final cela donne cela

J'ai laissé les paramètres par défaut, ou presque, voici quelques pages de configuration intéressantes, tout d'abord sur le format des balises.


Mes fichiers audio sont correctement nommés pour ma part (Artiste - titre.extension), aussi je ne veux pas que picard me les renomme, je l'ai donc explicitement indiqué dans la fenêtre ci-dessous, si c'est le bazard de votre côté, il est sans doute utile de cocher la case Renommer les fichiers à l'enregistrement.


Dans la fenêtre ci-dessous on doit indiquer l'outil pour relever l'empreinte audio d'un fichier c'est à dire fpcalc (acoustID fingerprinter en anglais) on saisit également la clé API qu'on obtiendra en cliquant sur Obtenir la clé d'API

Sur cette page, on peut activer des greffons, pour l'instant je n'ai pas jugé utile d'en rajouter


Voilà une page intéressante, il faut indiquer le port (par défaut 8000) qui servira de lien entre le navigateur par défaut et picard


Voilà la fenêtre principale de picard

A gauche on se déplace dans l’arborescence, on sélectionne les titres à identifier qu’on glisse par drag and drog dans la colonne du milieu, par défaut tous les fichiers sont sans concordance. On les sélectionne et on clique sur Rechercher, picard va rechercher dans sa base les fichiers dont les balises correspondent le mieux aux nôtres, à droite on va voir apparaître tous les albums correspondants que picard aura trouvé. On peut regretter juste que pour beaucoup ce soit des albums de compilation qui apparaissent et non pas l’album d’origine, il y a également des faux positifs, une chanson qui est attribuée à quelqu'un d'autre, mais on verra plus loin comment traiter cela. Pour certains on aura un message impossible de charger l’album, pour résoudre cela il faut sélectionner les albums non chargés et avec le menu accessible par un clic droit choisir Rafraîchir, il ne faut pas hésiter à insister, ça se charge parfois au bout de 4 ou 5 fois. Il reste un certain nombre de fichiers dans la colonne du milieu sans concordance, il faudra à nouveau les sélectionner et faire plusieurs fois Rechercher, car curieusement il continue à identifier des fichiers alors qu’il ne l’avait pas fait auparavant. Pour ceux qu’il n’aurait pas identifié, ça peut venir d’un fichier pas bien balisé à la base ou mal nommé, dans ce cas vérifier et modifier les tags Artist et Title et recommencer. Au final il me reste souvent moins de 5% de fichiers non identifiés ce qui n’est pas énorme, on sélectionne les albums dans le bandeau à droite qui ont été trouvés et on enregistre la totale à partir du menu contextuel. Tous les fichiers vont être modifiés avec les bons tags en rajoutant également une image d’illustration et le tour est joué. Les albums et fichiers non sauvegardés apparaissent dans le bandeau à droite avec une petite étoile sur le disque.

Si vos fichiers sont mal balisés à la base, la recherche peut être plus laborieuse, il faut commencer par les baliser correctement. Ça peut être laborieux de modifier un à un les balise des fichiers, donc s’ils sont bien nommés du style mon artiste – mon titre.mp3. On dispose d’un outil bien pratique qui va faire ça automatiquement, on sélectionne les fichiers, puis on clique sur Outils->Baliser à partir des noms de fichier. Pour le style de nommage ci-dessus, on prendra %artist% – %title% qui permettra de taguer proprement le fichier et de lancer ensuite une recherche plus efficace. Si les fichiers correctement tagués n’ont toujours pas été identifiés, je vous encourage a minima de les enregistrer (sélection des fichiers dans le bandeau du milieu puis enregistrer à partir du menu contextuel.

Quand la recherche devient infructueuse, on peut passer à la recherche à partir de leur signature acoutisque en cliquant sur Analyser, picard va calculter l'empreinte acoustique du fichier en la comparant avec celles présentes sur le serveur d'empreinte.

Pour les fichiers restants, on peut penser qu'ils ne sont pas dans la base de picard, on peut donc l'enrichir et en faire profiter la communauté avec les bonnes balises associées en sélectionnant la piste et en cliquant sur Envoyer AcoustIDs



Vous aurez remarqué que picard classe les fichiers audio par album et non par artiste (par exemple), chaque fichier est rattaché à un album et l'image associée au fichier visible dans le lecteur audio est celle rattachée à l'album. Pour ma part mes mp3 sont rangés dans des répertoires par genre musical, quand je passe d’un répertoire à l’autre je quitte picard et je le relance pour partir d’un écran vierge sans albums préchargés. Dans la philosophie de picard, les fichiers sont classés de base par album, avec un répertoire par album, il faudra dans ce cas plutôt utiliser la fonction Grappes, cette page (en anglais) explique comment faire. En résumé, on sélectionne le répertoire album, on le glisse dans le bandeau du milieu et on clique sur l'outil Regrouper, l'album va se retrouver au niveau de l'arborescence Grappe dans le bandeau du milieu et de la même manière on va cliquer sur Rechercher ou Analyser pour trouver l'album correspondant.

Maintenant que faire des fichiers sans concordance ? Il suffit de sélectionner le fichier correspondant dans le bandeau du milieu puis avec le menu contextuel on choisit Rechercher des pistes similaires


et là normalement on devrait trouver son bonheur, il faut parfois essayer plusieurs entrées, toutes ne sont pas forcément associées à une image de l'artiste ou de l'album. Une fois le fichier associé à une piste, il va basculer automatiquement dans le bandeau de droite, rattaché à l'album correspondant qui va faire son apparition (avec une petite étoile pour montrer qu'il n'a pas encore été sauvegardé).
Autre méthode, on sélectionne la piste puis on clique sur Rechercher dans le navigateur, automatiquement on est renvoyé sur le navigateur qui affiche les pistes concordantes


On sélectionne celle qui nous parait la plus proche et on clique sur le bouton TAGGER, ça nous renvoie alors automatiquement sur picard, le fichier se retrouve automatiquement basculé à droite dans l'arborescence de l'album. Il ne reste plus qu'à le sauvegarder à partir du menu contextuel.



Pour les faux positifs du bandeau à droite, c'est à dire les fichiers qui ont été associés à des mauvaises pistes, dans le bandeau de droite on sélectionnera la piste dans l'album correspondante, et de la même manière à partir du menu contextuel on choisira Rechercher des pistes similaires.
On procédera de la même manière pour les pistes associées à des compilations si vous souhaitez les associer aux albums de l'artiste concerné.

Le problème avec Picard c'est que tout est quasi automatique et qu'il n'y a pas moyen de modifier manuellement les métadonnées audio d'une piste audio, pour cela il faudra préalablement créer ou modifier une entrée directement sur la base du site MusicBrainz. Il y a bien d'autres outils qui permettent de les modifier mais peu permettent d'intégrer une image directement dans le fichier. Je me suis détourné d'easyTAG qui fait tout ça encore de manière automatique sans qu'on ait vraiment la main sur ce qui se passe.
Pour pouvoir vraiment contrôler ce qui se passe, je me suis tourné vers Kid3, qu'on récupérera sur le site https://kid3.kde.org/, je me suis contenté de la version fournie par mon système Mageia pour l'installation. A vrai dire Kid3 est également capable de remplir automatiquement les tags de piste audio mais on l'utilisera pour le faire de manière manuelle pour lequel il est très puissant.
Kid3 ressemble à cela

Une piste audio peut être identifiée par des tags ID3v1.1 et ID3v2.30, les informations sont évidemment bien plus riches avec la dernière version et les champs d'information plus long (notamment pour le nom des artistes et l'album), on y retrouve également l'image de l'album. Les champs des tags ID3v2.30, ils ont été remplis automatiquement par picard.

On notera qu'un certain nombre de pistes sont marquées en rouge, en fait c'est qu'elles ne respectent pas totalement le standard ID3. Si nous regardons la configuration, elles apparaissent car le champ "Marquer des violations de la norme" est coché par défaut.

Par défaut on choisira aussi la version ID3v2.30 qui est mieux reconnue de la plupart des lecteurs que la v2.40 même si celle-ci date de 2000 !

pour le jeu de caractère, on a le choix entre

  • l’ISO-8859-1, qui permet d’enregistrer presque tous les caractères du français ;
  • l’ISO-8859-15, une variation de l’ISO-8859-1, qui rajoute le symbole « euro » et le « l’e dans l’o»
  • l’UTF-8, qui permet théoriquement d’encoder toutes les langues, du français au japonais en passant par l’arabe.

Même si l'UTF-8 est à privilégier aujourd'hui, là aussi on préférera utiliser ISO-8859-1 qui reste encore le plus reconnu par les lecteurs audio.

Revenons à nos pistes dont les métadonnées ne respectent par le format, le champ concerné apparaît en rouge, ce problème pourrait poser problème sur certains lecteurs et il est préférable d'y remédier. Il suffit de sélectionner le champ concerné et de le modifier ou le supprimer (attention en utilisant le bouton Supprimer en bas de la liste, au dessus de l'image et non celui plus haut qui supprime l'ensemble des tags v2.30).


Dans le cas présent on voit que c'est le champ Arrangeur qui pose problème, on va pas le supprimer piste après piste, vous pouvez sélectionner plusieurs pistes et supprimer ce champ Arrangeur de manière globale


De la même manière on pourra modifier n'importe quel champ d'un groupe de piste en une seule manipulation. De la même manière on pourra filtrer les pistes suivant certains critères à partir du menu Outils->Filtre...
Dans le cas ci-dessous on va filtrer uniquement les pistes qui ne disposent pas d'image intégrée.

Le M3U (MPEG version 3.0 URL) est le format le plus courant qui a été créé à l'origine par le logiciel WinPlay3 édité par la société allemande Fraunhofer accessoirement créateur du MP3 et s'est imposé comme standard de fait. Il contient une liste de fichiers multimédia simplement repérés par leur adresse (URL). C'est un bête fichier avec une adresse par ligne avec l’extension .m3u si le texte est encodé avec un encodage non unicode ou avec l’extension .m3u8 si le texte est encodé en unicode UTF-8. L'adresse peut avoir le format suivant:
  • Chemin absolu vers le fichier
  • Chemin relatif vers le fichier par rapport au fichier M3U
  • URL d'un fichier distant
Le M3U étendu (Extended M3U) contient des champs supplémentaires identifiés en début de ligne par un "#" et se terminant avec un ":" s'il y a du texte qui suit, sans être exhaustif, on retrouve par exemple :
  • #EXTM3U - placé en en-tête de fichier indiquant qu'on utilise le format Extended M3U
  • #EXTINF : informations sur la piste
  • #PLAYLIST : Le titre de la playlist

Voilà un exemple de fichier au format M3U étendu

#EXTM3U
#EXTINF:227,Roé - Soledad
/ultra/data/musiques/classement par genre/pop/Roe - soledad.mp3
#EXTINF:141,Al Martino - Volare
/ultra/data/musiques/classement par genre/pop/Al Martino - Volare.mp3
#EXTINF:218,Nek - Laura non c'e
/ultra/data/musiques/classement par genre/pop/Nek and Cerena - Laura non ce.mp3

(...)

/ultra/data/musiques/classement par genre/pop/Manu Chao - Bongo Bong.mp3
#EXTINF:219,Gilberto Gil - Toda menina baiana
/ultra/data/musiques/classement par genre/pop/Gilberto Gil - Toda Menina Baiana.mp3
#EXTINF:248,Umberto Tozzi - tu
/ultra/data/musiques/classement par genre/pop/Umberto Tozzi - tu.mp3

Le chiffre devant le nom de la piste est la durée de la piste en seconde.

Autre format le XSPF c'est une alternative libre à M3U ou d'autres formats propriétaires de liste qu'on n'abordera pas ici comme PLS pour iTunes ou ASX pour Windows Media. Il fonctionne également sur le principe d'une liste d'adresse mais au format XML et supporte l'unicode. Cela donne quelque chose comme cela:

<?xml version="1.0" encoding="UTF-8"?>
<playlist version="1" xmlns="http://xspf.org/ns/0/">
  <trackList>
    <track>
      <location>/ultra/data/musiques/classement par genre/pop/Roe - soledad.mp3</location>
      <title>Soledad</title>
      <creator>Roé</creator>
      <album>Roé</album>
      <duration>227000</duration>
      <trackNum>1</trackNum>
      <image>(embedded)</image>
    </track>
    <track>
      <location>/ultra/data/musiques/classement par genre/pop/Al Martino - Volare.mp3</location>
      <title>Volare</title>
      <creator>Al Martino</creator>
      <album>Best of Al Martino</album>
      <duration>141000</duration>
      <trackNum>1</trackNum>
      <image>(embedded)</image>
    </track>

(...)

    <track>
      <location>/ultra/data/musiques/classement par genre/pop/Umberto Tozzi - tu.mp3</location>
      <title>tu</title>
      <creator>Umberto Tozzi</creator>
      <album>Tu</album>
      <duration>248000</duration>
      <trackNum>1</trackNum>
      <image>(embedded)</image>
    </track>
  </trackList>
</playlist>

Maintenant pour créer automatiquement ses listes de lecture, en partant du principe que les fichiers audio ont été correctement tagués ID3 on pourra le faire automatiquement par script bash. En première approche on peut toujours créer des simples listes de lecture qui ne tiendront pas compte des tags ID3 en se contentant de parcourir un répertoire et sous répertoire et de mettre tous les fichiers audio dans un fichier playlist.m3u

#!/bin/bash
read -p "Chemin absolu ou relatif (par défaut relatif) " chemin
if [ "$chemin" = "absolu" ]
then
    path=$(pwd)
else
    path="."
fi
playlist="playlist.m3u"
rm -f $playlist
IFS=$'\n'
for fichier in $(find $path type f | grep '/*.ogg\|/*.mp3\|/*.flac')
do
      echo "Fichier trouvé $fichier"
      echo $fichier>>$playlist
done;
unset IFS

Ce script a la particularité de laisser le choix entre mettre un chemin absolu ou relatif dans la liste de lecture, le chemin relatif sera intéressant si vous importez votre bibliothèque audio sur un téléphone mobile. Il faudra faire en sorte d'avoir une arborescence relative identique et le fichier de liste de lecture placé au même endroit pour qu'il puisse retrouver les fichiers audio sans se soucier de leur chemin absolu.

Maintenant si on veut exploiter les métadonnées ID3, on pourra utiliser la commande ffprobe qui vient avec la suite ffmpeg, le script ci-dessous va créer automatiquement une liste de lecture en filtrant sur le genre musical, toujours en demandant si l'on souhaite un chemin absolu ou relatif

#!/bin/bash
read -p "Genre musical : " genre
read -p "Chemin absolu ou relatif (par défaut relatif) " chemin
if [ "$chemin" = "absolu" ]
then
    path=$(pwd)
else
    path="."
fi
playlist="playlist-$genre.m3u"
rm -f $playlist
IFS=$'\n'
for fichier in $(find $path type f | grep '/*.ogg\|/*.mp3\|/*.flac')
do
   if ffprobe -loglevel quiet -hide_banner -show_entries format_tags=genre -of default=noprint_wrappers=1:nokey=1 $fichier 2>&1 | grep -i $genre ; then
      echo "Fichier trouvé $fichier"
      echo $fichier>>$playlist
   fi
done;
unset IFS

Pour convertir vos listes de lecture .m3u en .m3u8 ou .xspf qui peuvent être plus portables sur d'autres supports, on pourra simplement utiliser vlc, on charge la liste de lecture au format M3U puis à partir du menu Média->Enregistrer la liste de lecture... on choisira le format de sortie à partir de la liste déroulante.



Pour créer ses listes de lecture manuellement et simplement on pourra utiliser une application, personnellement j'utilise clementine qui intègre une gestion des listes de lecture intelligente multi critères basés sur les métadonnées ID3.



On aura le choix ensuite de sauvegarder sa liste de lecture dans différents formats M3U, XSPF, PLS et ASX comme déjà évoqués ici mais également CUE et WPL.

Quel que soit le format, clementine va sauvegarder les chemins en absolu, pour les convertir en relatif pour la raison évoquée plus haut, on pourra utiliser ce petit script

#!/bin/bash
read -p "Entrez le nom du fichier : " fichier
read -p "Entrez la chaine à remplacer : " chaine1
read -p "Entrez la chaine de remplacement : " chaine2
echo "Traitement de $fichier ..."
fichiertemp=$(basename "$fichier" | cut -d. -f1)
extension="${fichier##*.}"
sed "s|$chaine1|$chaine2|g" $fichier  > "$fichiertemp-relatif.$extension"


[Retour à l'accueil]
[Retour haut de la page]