Vue lecture

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.

Demucs-rs - Séparez vos morceaux en stems depuis le navigateur

Séparer la voix, la batterie ou la basse d'un morceau, ça relevait du rêve d'audiophile il y a encore quelques années. Fallait installer Python, se taper Spleeter, galérer avec les dépendances CUDA... bref, un super truc de barbu. Mais ça, c'était avant, les amis !

Demucs-rs , une réécriture en Rust du modèle HTDemucs v4 de Meta, tourne maintenant directement dans votre navigateur grâce au WebGPU. Batterie, basse, voix, tout le reste..., chaque élément se retrouve ainsi isolé dans son propre fichier WAV. Et y'a rien à installer, puisque tout se passe côté client, sur votre machine.

Pour vous en servir, vous pouvez aller sur la web app , vous glissez-déposez votre fichier MP3 (ou WAV, FLAC, OGG, M4A... ça bouffe à peu près tout), et vous patientez... Le premier lancement télécharge le modèle (~84 Mo pour le standard), donc prévoyez une connexion correcte.

L'interface de la web app - vous glissez votre fichier et c'est parti

Comptez alors quelques minutes selon la durée du morceau. En sortie, vous aurez alors plusieurs fichiers WAV séparés que vous pourrez écouter, jouer en solo ou télécharger individuellement.

Les pistes séparées, prêtes à écouter ou télécharger

Trois modèles sont dispos. Le mode 4 pistes suffit dans 90% des cas. Il y a aussi le modèle 6 stems, ou plutôt htdemucs_6s, qui est pas mal pour du rock ou du jazz. Et pour les obsessionnels de la qualité, y'a le fine-tuned à 333 Mo... mais prévoyez une pause café, parce que ça va être long de fou !

Voilà, comme ça, si vous voulez faire un karaoké maison, vous virez la voix et vous gardez l'instrumental. Ou si votre truc c'est de sampler une ligne de basse d'un vieux morceau de funk ou encore pratiquer la guitare en jouant par-dessus le morceau original sans la partie guitare, c'est entièrement possible !

D'ailleurs, si vous aviez testé Spleeter avec Ableton à l'époque, c'est le même principe mais en BEAUCOUP plus simple !!

Perso, le fait que ça tourne dans le navigateur, c'est top, sans parler du fait que vos morceaux restent sur votre disque.

Maintenant, si la version navigateur vous semble un peu longue, y'a le CLI natif qui exploite Metal sur Mac et Vulkan sur Linux/Windows. Pour l'installer, clonez le repo et lancez make cli (Rust requis) :

git clone https://github.com/nikhilunni/demucs-rs
cd demucs-rs && make cli

Le binaire atterrit dans target/release/demucs, 24 Mo. Le modèle se télécharge au premier lancement.

Côté utilisation, c'est du gâteau :

demucs song.mp3 # 4 pistes dans ./stems/
demucs -s vocals chanson.mp3 # juste la voix
demucs -m htdemucs_6s -s guitar solo.flac # isoler la guitare
demucs -m htdemucs_ft morceau.mp3 # qualité max

En sortie, chaque stem est un fichier WAV. Vous virez le vocals.wav, vous gardez le reste... et tadaaa, karaoké instantané pour votre voix de casserole ! C'est carrément plus rapide qu'en WebAssembly.

Et si vous bossez dans un DAW sur macOS, y'a aussi un plugin VST3/CLAP pour faire la séparation directement dans Logic ou Reaper (sauf que bon, c'est macOS only pour l'instant, quoi).

Après sachez que sur certains passages très chargés, la voix peut baver un peu dans la piste "other" ou inversement mais pour du remix amateur ou du sampling, ça suffit largement !

D'ailleurs, j'sais pas si vous vous souvenez, mais les plugins IA d'Audacity embarquent aussi Demucs v4. Mais là avec Demucs-rs c'est natif et surtout indépendant d'Audacity.

Et bien sûr, tout est open source sous licence Apache 2.0 !

Amusez-vous bien !

Cutia - Montage vidéo open source, direct dans le navigateur

Bon, vous connaissez tous CapCut car TOUT LE MONDE connaît CapCut. Sauf qu'avec ce truc, vos fichiers atterrissent directement sur les serveurs de l'entreprise chinoise ByteDance. Hé bien Cutia , c'est pareil mais en open source, dans le navigateur, et vos vidéos restent chez vous ! Elle est pas belle la vie ?

Cutia c'est donc un éditeur vidéo qui tourne entièrement dans votre browser, genre Chrome ou Firefox et côté fonctionnalités, on a le kit classique bien fichu de la timeline multi-pistes pour empiler de la vidéo, de l'audio, du texte et même des stickers, sans oublier une preview en temps réel, et de l'export en MP4 ou WebM. Y'a pas de watermark et c'est gratuit !

Alors oui, c'est pas Premiere Pro, clairement, mais pour du montage rapide ça fait largement le taf (sauf si vous devez gérer du 4K sur 2 heures, évidemment). Et le truc cool, c'est que tout est local-first. Vos rushs restent sur votre disque, le traitement se fait côté navigateur, et à aucun moment vos fichiers ne transitent par un serveur tiers.

Si vous faites des Reels, des TikTok ou des petites vidéos pour vos projets, c'est donc largement suffisant. Y'a pas besoin de sortir l'artillerie lourde pour couper trois clips et coller du texte par-dessus. D'ailleurs, si vous êtes plutôt du genre à automatiser vos montages vidéo avec CapCut et ChatGPT , j'ai un tuto pour ça.

Y'a aussi des éditeurs vidéo libres comme Shotcut qui existent depuis longtemps, mais ils nécessitent une installation. L'avantage de Cutia, vous l'aurez compris, c'est que vous ouvrez un onglet et c'est parti mon kiki !

Le projet est un fork d' OpenCut , sous licence MIT, et c'est encore jeune donc y'a du boulot sur pas mal de trucs (par exemple l'export rame un peu sur les grosses vidéos et ça ne marche pas encore sur Safari), mais la base est là.

Pour les plus barbus d'entre vous, c'est auto-hébergable avec du Docker ou Vercel en un seul clic. Après sur la home, le site présente l'app comme "AI-native", mais en fait y'a RIEN de visible côté IA pour l'instant. C'est surtout un éditeur vidéo solide dans le navigateur, et c'est déjà pas mal du tout.

Bref, pour du montage rapide sans prise de tête, ça vaut le coup d’œil. Merci à Lorenper pour le partage !

Constrict - Vos vidéos pile à la bonne taille

Vous avez une vidéo trop lourde pour Discord et sa limite pourrie à 10 Mo ? Du coup, vous passez une demi-heure à bidouiller les réglages d'encodage pour trouver le bon bitrate... sauf que ça marche jamais du premier coup.

Constrict , c'est une app GNOME (Linux uniquement, du coup...) qui règle ce problème de la façon la plus logique possible. Vous lui donnez une taille cible en Mo, et elle se débrouille toute seule pour que votre vidéo rentre pile-poil dedans.

C'est le genre de truc indispensable quand Discord vous bloque à 10 Mo en compte gratuit, que Telegram impose aussi ses propres limites, ou que vous voulez envoyer un fichier par mail sans que ça foire.

En gros, au lieu de deviner quel débit binaire il faut, vous dites juste "je veux que ça fasse 8 Mo" et hop, l'outil calcule automatiquement le bitrate, la résolution, le framerate et la qualité audio pour coller à votre objectif.

Côté codecs, c'est plutôt complet puisqu'on a du H.264 pour la compatibilité, HEVC si vous voulez du lourd sans le poids, AV1 pour les plus patients (attention, l'encodage prend nettement plus longtemps que du H.264... mais le ratio qualité/taille est dingue !) et VP9 pour les adeptes des formats ouverts. Du coup, que vous envoyiez votre clip sur un réseau social, une messagerie instantanée ou par mail, y'a toujours un codec adapté !

Et si vous avez tout un dossier de vidéos à réduire, Constrict gère également le traitement par lot. Vous sélectionnez vos fichiers, vous choisissez la taille cible et un répertoire de sortie, et ça mouline tout seul (sauf si vous lancez 50 fichiers en AV1... là, prévoyez beaucoup de café). En tout cas, c'est quand même plus agréable qu'un script FFmpeg bricolé à la main.

Après si vous essayez de faire rentrer un film 4K de 2h dans 8 Mo... ça va être super moche...

L'app fait de son mieux pour garder un max de qualité, mais y'a des limites physiques (hé oui la compression, ça ne marche pas comme de la magie). D'ailleurs, si la réduction demandée est trop violente, l'outil vous préviendra que c'est mort !

L'app est développée en Python avec GTK4 et Libadwaita, du coup l'interface est native et bien intégrée au bureau GNOME. Elle est certifiée GNOME Circle (ce qui est plutôt bon signe côté qualité) et le code est sous licence GPL-3.0, donc gratuit et open source. Pour l'installation, ça passe par Flatpak sur Flathub ... un :

flatpak install flathub io.github.wartybix.Constrict

... et c'est plié !

Si vous cherchez des alternatives dans le même genre, MystiQ fait de la conversion multiformat et Adapter est un bon couteau suisse basé sur FFmpeg. Mais aucun des deux ne propose ce ciblage par taille, et c'est ça le vrai plus de Constrict !

Merci à Lorenper pour la découverte !

FFmpeg - Comment normaliser le volume audio proprement avec loudnorm

Vous avez déjà remarqué comment le volume varie d'une vidéo à l'autre sur YouTube, ou pire, comment certaines pubs sont 10 fois plus fortes que le contenu ? Bah c'est parce que tout le monde n'utilise pas la même norme de volume. Et si vous produisez du contenu audio/vidéo, c'est le genre de détail qui fait la différence entre un truc amateur et un rendu pro.

La bonne nouvelle, c'est que FFmpeg intègre déjà un filtre qui s'appelle loudnorm et qui gère tout ça automatiquement. La norme utilisée, c'est le LUFS (Loudness Units Full Scale), qui est devenue le standard de l'industrie, et YouTube, Spotify, les TV... tout le monde utilise ça maintenant pour mesurer et normaliser le volume audio.

D'ailleurs, si vous débutez complètement avec cet outil, je vous conseille de jeter un œil à mon guide FFmpeg pour les nuls pour bien piger les bases de la ligne de commande.

Allez, c'est partiii ! Temps estimé : 2-5 minutes par fichier (selon la méthode choisie)

Mais, avant de se lancer dans les commandes, un petit point sur les paramètres qu'on va manipuler. Le filtre loudnorm utilise trois valeurs principales. D'abord I (Integrated loudness), c'est le volume moyen global mesuré en LUFS. La valeur standard pour le streaming, c'est -16 LUFS pour YouTube et Spotify, ou -23 LUFS pour la diffusion broadcast. Ensuite TP (True Peak), le niveau maximal que le signal ne doit jamais dépasser. On met généralement -1.5 dB pour avoir une marge de sécurité. Et enfin LRA (Loudness Range), qui définit la plage dynamique autorisée, généralement autour de 11 dB.

Méthode 1 : Normalisation simple (single-pass)

C'est la méthode la plus rapide, parfaite pour du traitement à la volée :

ffmpeg -i entree.wav -af loudnorm=I=-16:TP=-1.5:LRA=11 -ar 48000 sortie.wav

Pourquoi ces valeurs : -16 LUFS c'est le standard YouTube/Spotify, -1.5 dB de true peak évite le clipping, et 11 dB de range dynamique garde un son naturel.

Le truc c'est que cette méthode fait une analyse en temps réel et ajuste à la volée. C'est bien, mais pas parfait. Pour un résultat vraiment précis, y'a mieux.

Méthode 2 : Normalisation en deux passes (dual-pass)

Cette méthode analyse d'abord le fichier complet, puis applique les corrections exactes. C'est plus long mais beaucoup plus précis.

Première passe, on analyse :

ffmpeg -i entree.wav -af loudnorm=I=-16:TP=-1.5:LRA=11:print_format=json -f null -

FFmpeg va vous sortir un bloc JSON avec les mesures du fichier (input_i, input_tp, input_lra, input_thresh). Notez-les bien, car vous allez les injecter dans la deuxième passe.

Deuxième passe, on applique avec les valeurs mesurées (remplacez les chiffres par ceux obtenus à l'étape précédente) :

ffmpeg -i entree.wav -af loudnorm=I=-16:TP=-1.5:LRA=11:measured_I=-24.35:measured_TP=-2.15:measured_LRA=8.54:measured_thresh=-35.21:offset=0:linear=true -ar 48000 sortie.wav

Pourquoi cette méthode ? En fait, en passant les valeurs mesurées, FFmpeg sait exactement de combien ajuster. L'option linear=true force une normalisation linéaire plutôt que dynamique, ce qui préserve mieux la dynamique originale.

Pour les fichiers vidéo

Le principe est le même, on ajoute juste -c:v copy pour garder la vidéo intacte sans la ré-encoder :

ffmpeg -i video.mp4 -c:v copy -af loudnorm=I=-16:TP=-1.5:LRA=11 -ar 48000 video_normalise.mp4

D'ailleurs, pour ceux qui veulent automatiser ça à l'extrême, j'avais parlé de FFmpegfs , un système de fichiers qui transcode automatiquement ce que vous déposez dessus. C'est pratique si vous avez une grosse bibliothèque à gérer.

Traitement par lots avec ffmpeg-normalize

Si vous avez plein de fichiers à traiter, y'a un outil Python qui automatise la méthode dual-pass :

pip install ffmpeg-normalize
ffmpeg-normalize *.wav -o output_folder/ -c:a pcm_s16le

Cet outil fait automatiquement les deux passes et supporte le traitement parallèle. Pratique pour normaliser une bibliothèque entière.

Et en cas de problème ?

Erreur "No such filter: loudnorm" : Votre version de FFmpeg est trop ancienne (il faut la 3.1 minimum). Mettez à jour votre binaire.

Le son est distordu après normalisation : Le fichier source était probablement déjà saturé. Essayez de baisser le target (-18 LUFS au lieu de -16) ou augmentez le headroom du true peak (-2 dB au lieu de -1.5).

Voilà, maintenant vous n'avez plus d'excuse pour avoir des niveaux audio qui varient dans tous les sens. Le LUFS c'est le standard, FFmpeg gère ça nativement, et ça prend 30 secondes.

Vos auditeurs vous remercieront.

Source

❌