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.
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 là
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"