- 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
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 releaseEt 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
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
Donc je comprends que le développeur ait voulu créer un environnement unique sur lequel l’appli puisse s’appuyer
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
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’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
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
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
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 marcherIl 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
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
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
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
Voir le manuel des contrôles
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