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 !

sudo-rs - 40 ans de silence cassés par des astérisques

Si vous utilisez Ubuntu 26.04, vous avez peut-être remarqué un truc bizarre dernièrement en tapant votre mot de passe sudo... Ouiiiiii, y'a des petites étoiles qui apparaissent !! Pas de panique, c'est "normal". Enfin, c'est nouveau...

En effet, sudo-rs, la réécriture en Rust de la bonne vieille commande sudo, a décidé d'activer pwfeedback par défaut. En gros, quand vous faites un sudo apt install bidule, au lieu du trou noir habituel, vous voyez maintenant des ***** défiler pendant la saisie du mot de passe. C'est un changement qui casse une convention vieille de 40 ans... et ça, forcément, ça fait du bruit !

Pour rappel, Ubuntu a basculé sur sudo-rs (le remplaçant en Rust du bon vieux sudo en C) depuis la version 25.10. Ça fait partie du même mouvement de réécriture des outils système en Rust, comme les coreutils dont je vous avais parlé. Et la 26.04 vient de "cherry-picker" comme on dit, un patch upstream qui active le feedback visuel par défaut.

Un bug report sur Launchpad ( #2142721 ) est bien sûr arrivé direct, en mode vénère genre "*ÇA FAIT DES DÉCENNIES qu'on n'affiche pas la longueur du mot de passe pour empêcher le shoulder surfing ! C'est quoi ce bordel !!?? *"

Et la réponse des devs : Won't Fix. Circulez les relous !

En fait, leur argument c'est que le bénéfice sécurité est "infinitésimal". Parce que bon, votre mot de passe sudo c'est le même que celui de votre session (celui que vous tapez à l'écran de login, devant tout le monde). Et le bruit des touches trahit déjà la longueur de toute façon. Du coup, ils ont préféré régler le problème UX qui paume les débutants depuis le début des années 80.

D'ailleurs, en 2013 je vous expliquais comment activer ces étoiles manuellement avec sudo visudo (ça date de fou !!) et maintenant c'est l'inverse, faut expliquer comment les virer ! Linux Mint avait d'ailleurs déjà sauté le pas de son côté depuis un moment.

Perso, le truc qui me gonfle c'est pour les tutos vidéo. Quand vous faites un screencast, les astérisques révèlent la longueur de votre mot de passe à tous vos spectateurs. Du coup faut aller reparamétrer chaque machine avant de filmer ou faire du masquage en post prod. C'est pas la fin du monde, mais bon, la flemme...

Alors pour désactiver ces jolies zétoiles :

sudo visudo

Et ajoutez cette ligne à la fin de /etc/sudoers :

Defaults !pwfeedback

Sauvegardez (Ctrl+X sous nano), et c'est réglé. Attention, ne touchez à rien d'autre dans ce fichier, une erreur de typo et sudo ne marchera plus. Grâce à cette manip, ce sera retour au trou noir ! Youpi !

Source

RustFS - L'alternative Rust à MinIO

MinIO, tout le monde ou presque connaît car c'est LE truc quand on veut du stockage objet S3-compatible auto-hébergé sous Linux. Sauf que voilà... la licence AGPL, ça pique pour pas mal de boîtes qui ne veulent pas se retrouver à devoir ouvrir leur code.

Du coup, y'a un nouveau projet qui débarque dans le tiek et qui devrait en intéresser plus d'un. C'est RustFS , codé en Rust (comme le nom le laisse deviner mes petits Sherlock) et 100% compatible S3. En gros, vous prenez votre stack MinIO existante, vous remplacez par ce truc, et en fait tout continue de fonctionner pareil... Vos buckets, vos applis, vos scripts Python, boto3... tout pareil !

La licence c'est de l'Apache 2.0 comme ça y'a pas de contrainte virale, vous faites ce que vous voulez avec. Et c'est d'ailleurs sûrement la raison numéro un pour laquelle le projet cartonne.

Côté perfs, les devs annoncent 2,3x plus rapide que MinIO sur des petits objets de 4 Ko (testé sur un modeste 2 coeurs Xeon avec 4 Go de RAM). Bon, c'est un benchmark maison, à prendre avec des pincettes hein... mais finalement Rust pour du I/O intensif, ça se tient comme argument, car y'a pas de garbage collector qui vient foutre le bazar.

Pour l'installer, Docker en une ligne :

docker run -d -p 9000:9000 -p 9001:9001 -v $(pwd)/data:/data -v $(pwd)/logs:/logs rustfs/rustfs:latest

Et voilà, l'API tourne sur le port 9000 et la console web sur le 9001 (identifiants par défaut : rustfsadmin/rustfsadmin, changez-les vite fait hein). Y'a aussi du Kubernetes via Helm, un script d'install one-click, du Nix, ou un bon vieux git clone pour compiler vous-même (attention, sur macOS faut un ulimit à 4096 sinon ça ne marche pas).

Le conteneur Docker tourne en non-root (UID 10001), donc c'est plutôt propre niveau sécu. Pensez juste à faire un petit chown -R 10001:10001 data logs sur vos répertoires avant de lancer, sinon ça casse au démarrage.

Petit bonus appréciable, y'a aussi de la détection de corruption intégrée, et même du versioning de buckets pour les plus méfiants côté intégrité des données. D'ailleurs, côté monitoring, c'est déjà câblé pour envoyer vos métriques dans Grafana, vos traces dans Jaeger et le reste dans Prometheus. Un petit docker compose --profile observability up -d et c'est plié.

Par contre, on est encore en alpha et le mode distribué et le KMS sont en phase de test. Donc c'est PAS le genre de truc que vous mettrez en prod demain matin pour vos données critiques... mais pour du dev, du lab, ou des tâches pas trop sensibles... ça tourne impecc !

Bref, si l'AGPL de MinIO vous gave et que vous cherchez une alternative S3-compatible, en Rust, sous licence + permissive, allez jeter un œil à RustFS.

Merci à Lorenper pour le partage !

Tunnelto - Exposez votre serveur local avec inspection du trafic

Si vous avez déjà eu besoin de montrer une app en dev à un client ou de tester un webhook Stripe sans vous farcir une config nginx, y'a de fortes chances que vous connaissiez ngrok .

Hé bien Tunnelto fait sensiblement la même chose, mais en Rust et avec un truc en plus qui fait la différence : un dashboard d'introspection pour voir tout ce qui passe dans le tunnel.

Du coup, vous lancez une commande, vous récupérez une URL publique genre votresite.tunnelto.dev, et hop, votre localhost devient accessible depuis n'importe où. Et surtout, vous pouvez inspecter toutes les requêtes HTTP qui transitent. Super utile quand vous débuguez une API ou que vous essayez de comprendre pourquoi ce foutu webhook ne se déclenche pas.

Pour l'installer, plusieurs options s'offrent à vous :

Sur macOS via Homebrew :

brew install agrinman/tap/tunnelto

Via Cargo :

cargo install tunnelto

Et pour exposer votre app qui tourne sur le port 8000 :

tunnelto --port 8000

C'est tout ! Le service vous file une URL avec un sous-domaine aléatoire. Mais si vous voulez quelque chose de plus mémorable, vous pouvez demander un sous-domaine custom :

tunnelto --port 8000 --subdomain monprojet

Et vous obtenez monprojet.tunnelto.dev. Pas mal pour une démo client, non ?

Bon, si vous avez suivi mes articles sur Bore ou Tunnl.gg , vous vous demandez peut-être la différence. Bore est ultra-minimaliste, Tunnl.gg ne nécessite même pas de client à installer... Tunnelto se situe entre les deux : plus complet que Bore avec son dashboard d'introspection, mais plus léger que ngrok avec son approche open source.

D'ailleurs, y'a un truc cool avec Tunnelto c'est que vous pouvez héberger votre propre serveur si vous ne voulez pas dépendre d'un service tiers. Pratique pour les entreprises qui veulent garder le contrôle sur leurs tunnels. Sous le capot, ça utilise également tokio pour l'async Rust, donc c'est rapide et ça consomme que dalle en ressources.

Bref, si ngrok vous paraît trop usine à gaz et que Bore manque de fonctionnalités pour vous, Tunnelto fera bien le taf surtout avec son module d'inspection du trafic HTTP, qui fait la diff quand on débugue des intégrations...

Source

❌