11 points par GN⁺ 2026-03-19 | 1 commentaires | Partager sur WhatsApp
  • Application open source qui transforme des fichiers musicaux personnels en karaoké, avec séparation vocale, synchronisation des paroles et score en temps réel
  • Utilise le modèle UVR Karaoke ou Demucs pour séparer les voix et l’accompagnement, puis WhisperX pour transcrire automatiquement les paroles mot par mot
  • Mesure les performances vocales comme dans un jeu grâce à un score de justesse basé sur l’entrée micro, ainsi qu’à un système d’étoiles et un historique par morceau
  • Prend en charge diverses interactions, notamment plusieurs profils utilisateur, la lecture de fichiers vidéo en arrière-plan, des arrière-plans dynamiques basés sur des shaders GPU et le contrôle à la manette
  • Fonctionne sur Linux, macOS et Windows et repose sur une architecture autonome avec exécutable unique, sans installation

Fonctionnalités principales

  • La séparation vocale (Stem separation) utilise le modèle UVR Karaoke ou Demucs pour séparer la voix et l’accompagnement
    • Le volume de la voix guide peut être ajusté
  • Les paroles mot par mot (Word-level lyrics) utilisent WhisperX pour aligner chaque mot sur l’audio
    • Si des paroles existantes sont disponibles sur LRCLIB, elles sont utilisées en priorité
  • Le score de justesse (Pitch scoring) calcule le score en temps réel quand on chante dans le micro
    • La progression est suivie via un système d’étoiles et un tableau des scores par morceau

Utilisateurs et interface

  • Les profils de joueur (Player profiles) permettent à plusieurs utilisateurs de conserver leurs propres historiques de score
    • Aucun risque de perte de données lors du changement de chanteur
  • La prise en charge des fichiers vidéo (Video file support) permet de charger des fichiers .mp4 ou .mkv et de lire la vidéo d’origine en arrière-plan
    • Les voix sont automatiquement séparées à partir de l’audio
  • Les arrière-plans dynamiques (Dynamic backgrounds) peuvent utiliser des effets de shader GPU (plasma, aurore, nébuleuse, etc.), des boucles vidéo Pixabay ou la vidéo d’origine comme fond
  • La prise en charge des manettes (Gamepad) permet de naviguer dans les menus, sélectionner les morceaux et contrôler la lecture avec une manette

Fonctionnement

  • À l’étape Separate, UVR Karaoke ou Demucs sépare la piste en voix et accompagnement
    • L’audio est automatiquement extrait des fichiers vidéo
  • À l’étape Transcribe, l’application cherche des paroles synchronisées sur LRCLIB et, si elle n’en trouve pas, effectue une transcription mot par mot avec WhisperX
  • À l’étape Play, l’accompagnement est lu avec affichage simultané des paroles surlignées, du score de justesse, des arrière-plans dynamiques et des entrées manette

Plateformes et distribution

  • Compatible avec Linux(x86_64, aarch64), macOS(ARM, Intel) et Windows(x86_64)
  • Prend en charge l’accélération GPU via CUDA ou Metal, et fonctionne sur CPU si elle n’est pas disponible
  • ffmpeg, Python, PyTorch et les modèles de ML sont automatiquement initialisés au premier lancement, ce qui permet une architecture en binaire unique sans procédure d’installation séparée

Notifications de mise à jour

  • Il est possible de recevoir par e-mail les nouvelles versions et les annonces de mise à jour, avec désabonnement possible à tout moment

1 commentaires

 
GN⁺ 2026-03-19
Avis Hacker News
  • Je viens de récupérer les sources, de compiler et de lancer l’appli, et j’ai été surpris de voir qu’elle a commencé à télécharger des binaires depuis Internet dès le premier lancement
    Alors que FFMpeg et Python étaient déjà installés, elle a quand même essayé de les réinstaller
    L’exécution a échoué parce que l’appli cherchait le Python installé dans le dossier lib. C’est étonnant de voir ce genre d’erreur élémentaire dans du code de release
    Et quand j’ai lancé le script de build du tarball, il a essayé d’installer un conteneur Docker, ce qui m’a laissé perplexe. Docker pour compiler une appli desktop, je ne comprends pas

    • Beaucoup d’applis embarquent leur propre runtime Python. C’est aussi le cas de Blender, Houdini, Bitwig, Krita, etc.
      Krita utilise le Python du système pendant la compilation, mais embarque son propre Python dans le résultat final
      Cela dit, pour cette appli, il aurait sans doute mieux valu bundler plutôt que télécharger
      Côté sécurité, npm et pip présentent aussi des risques similaires, donc ce n’est pas totalement inédit
    • À la question « pourquoi l’avoir fait comme ça ? », la réponse est probablement : « ça marchait sur ma machine »
    • L’écosystème d’installation de Python est tellement chaotique. Les chemins et méthodes d’installation varient selon les OS, et il y a Conda ainsi que divers gestionnaires de paquets qui se mélangent
      Donc je comprends que le développeur ait voulu créer un environnement unique sur lequel l’appli puisse s’appuyer
    • On voit de plus en plus d’applis qui tentent ce genre d’installation non sollicitée sur le système
      Récemment encore, j’ai lancé une appli Python qui a essayé d’installer Node/NPM, et ça m’a franchement surpris
      Mon ordinateur est mon espace de travail, donc laisser une appli installer ce qu’elle veut est à mes yeux à la fois un risque d’attaque de la chaîne logistique et un manque de respect envers l’utilisateur
    • Au fond, c’est peut-être le début d’un débat sans fin du type liaison statique vs liaison dynamique, vim vs emacs
  • Le Nightingale que j’ai créé est une appli où l’on indique un dossier musical, et les morceaux sont automatiquement convertis en pistes de karaoké
    Elle propose séparation des voix, synchronisation des paroles, score de justesse, prise en charge des gamepads, accélération GPU, etc.
    Tout le traitement se fait en local, sans compte, sans abonnement et sans télémétrie
    Au premier lancement, elle configure automatiquement les modèles de ML et l’environnement Python nécessaires
    C’est écrit en Rust avec le moteur Bevy, et le projet est entièrement open source

    • J’avais étudié le traitement du signal autrefois, et à l’époque la séparation de pistes était difficile
      J’ai trouvé intéressant de voir qu’aujourd’hui on résout ça avec des réseaux de neurones comme Demucs
      Je me demande si une approche purement mathématique pourrait encore être compétitive
    • J’ai testé avec B.E.D - Walk Away, et après 30 secondes la synchro des paroles s’est décalée
      Il faudrait une fonction de saut avant/arrière pendant la lecture, ainsi qu’une meilleure gestion de la ponctuation et une fonction d’édition du résultat
      Merci quand même de l’avoir publié en FOSS
    • C’est un projet vraiment chouette. Il y a très peu d’applis de karaoké côté FOSS, donc c’est une belle avancée
      Je me demande quelles sont les exigences minimales pour CUDA et s’il est prévu de prendre en charge l’accélération iGPU d’AMD/Intel
      J’ai hâte que ma famille puisse l’essayer
    • Je me demande quelle est la différence avec UltraSinger. Quelqu’un a-t-il comparé la qualité ?
    • Je me demande si WhisperX gère bien aussi les paroles en chinois (hanzi)
    • J’ai testé des morceaux en japonais, et l’alignement des paroles ne fonctionne pas du tout
      Dans le code, les mots sont découpés avec line_text.split(), mais comme le japonais n’a pas d’espaces, ça ne peut pas marcher
      Il faudrait sans doute utiliser un analyseur morphologique comme fugashi
  • Ça m’a rappelé l’ancien lecteur multimédia Nightingale basé sur Firefox
    Il avait été développé comme alternative à iTunes/Winamp, mais il n’y a plus eu d’activité depuis plus de dix ans
    On peut encore voir des traces de l’époque sur getnightingale.com

    • Si je me souviens bien, c’était le projet qui avait succédé à Songbird
  • J’avais déjà créé par le passé un projet similaire de suivi de hauteur
    Je me demande si la ligne de hauteur de l’appli actuelle montre aussi la note suivante

    • Pour l’instant, il n’y a qu’une simple fonction de score de justesse, la prédiction de la prochaine note n’est pas encore implémentée
      Je prends ça comme une bonne suggestion de fonctionnalité
  • Exécution locale, open source, projet porté par la passion : c’est vraiment touchant
    Ce genre de news redonne foi en l’humanité

  • En regardant l’historique des commits, on voit que le développement avance très vite
    Le projet semble probablement utiliser du développement assisté par IA
    Contrairement au discours selon lequel « l’IA va remplacer les développeurs », je pense qu’ici l’IA a surtout augmenté la faisabilité des petits projets

    • Un logiciel similaire existait déjà à l’époque de Windows 95. Ça tournait même sur un Pentium 2
  • Je ne comprenais pas exactement ce que faisait l’appli ; je croyais qu’elle supprimait les paroles
    J’ai essayé plusieurs morceaux, mais j’entends toujours la voix. Je ne vois pas comment régler la suppression de la voix

  • Très beau projet.
    Je me demande s’il est possible de traiter les morceaux sur un appareil et de les lire sur un autre, ou si l’appli pourrait fonctionner en mode serveur/client

  • En tant que musicien, je me suis souvent dit qu’il serait utile d’avoir une appli qui affiche les paroles en suivant la musique pendant qu’un groupe joue
    Pour l’instant, je fixe mon téléphone au pied de micro, mais il se décale vite

    • Oui, ce genre de synchronisation en temps réel se trompe souvent, même chez Spotify