- Um aplicativo open source que converte arquivos de música pessoais em formato de karaokê, oferecendo separação de voz, sincronização de letras e pontuação em tempo real
- Usa o modelo UVR Karaoke ou o Demucs para separar vocais e acompanhamento, e o WhisperX para transcrever automaticamente letras no nível de palavra
- Com pontuação de afinação baseada na entrada do microfone e recursos de avaliação por estrelas e histórico por música, mede a habilidade de canto como se fosse um jogo
- Suporta várias interações, como múltiplos perfis de usuário, reprodução de arquivos de vídeo em segundo plano, fundos dinâmicos baseados em shaders de GPU e controle por gamepad
- Funciona em Linux, macOS e Windows e tem uma estrutura autônoma que roda como um único executável, sem necessidade de instalação
Principais recursos
- O recurso de separação vocal (Stem separation) usa o UVR Karaoke ou o Demucs para separar voz e acompanhamento
- É possível ajustar o volume do vocal guia
- O recurso de letras no nível de palavra (Word-level lyrics) usa o WhisperX para alinhar cada palavra ao áudio
- Se já houver letras no LRCLIB, elas serão usadas com prioridade
- O recurso de pontuação de afinação (Pitch scoring) calcula a pontuação em tempo real enquanto você canta no microfone
- Acompanhe seu progresso com avaliação por estrelas e placar por música
Usuário e interface
- O recurso de perfis de jogador (Player profiles) permite que vários usuários mantenham seus próprios registros de pontuação
- Sem perda de dados ao trocar de cantor
- O recurso de suporte a arquivos de vídeo (Video file support) permite carregar arquivos .mp4 ou .mkv e reproduzir o vídeo original como fundo
- Os vocais são separados automaticamente do áudio
- O recurso de fundos dinâmicos (Dynamic backgrounds) usa efeitos de shader de GPU (plasma, aurora, nebulosa etc.), loops de vídeo do Pixabay ou o vídeo original como plano de fundo
- O suporte a gamepad (Gamepad) permite usar o controle para navegar nos menus, escolher músicas e controlar a reprodução
Como funciona
- Na etapa Separate, o UVR Karaoke ou o Demucs separa a faixa em vocais e acompanhamento
- O áudio é extraído automaticamente de arquivos de vídeo
- Na etapa Transcribe, ele busca letras sincronizadas no LRCLIB e, se não houver, faz a transcrição palavra por palavra com o WhisperX
- Na etapa Play, reproduz o acompanhamento exibindo ao mesmo tempo letras destacadas, pontuação de afinação, fundo dinâmico e entrada do gamepad
Plataforma e distribuição
- Pode ser executado em Linux(x86_64, aarch64), macOS(ARM, Intel) e Windows(x86_64)
- Suporta aceleração por GPU via CUDA ou Metal; em ambientes sem suporte, roda na CPU
- ffmpeg, Python, PyTorch e modelos de ML são inicializados automaticamente na primeira execução, formando uma estrutura de binário único que não exige processo de instalação separado
Aviso de atualizações
- É possível receber por e-mail notícias sobre novos lançamentos e atualizações, com opção de cancelar a inscrição a qualquer momento
1 comentários
Comentários do Hacker News
Acabei de baixar o código-fonte, compilar e executar, e me surpreendi porque, logo na primeira execução, ele começou a baixar binários da internet
Mesmo com FFMpeg e Python já instalados, ele tentou instalar tudo de novo
A execução falhou porque o app procurou o Python instalado dentro da pasta
libÉ surpreendente que um erro tão básico tenha ido parar no código de release
Além disso, quando executei o script de build do tarball, ele tentou instalar um container Docker, o que também me pegou de surpresa. Não faz sentido usar Docker para compilar um app desktop
O Krita usa o Python do sistema durante o build, mas inclui seu próprio Python no artefato final
Ainda assim, neste app talvez tivesse sido melhor empacotar tudo em vez de baixar depois
Em termos de segurança, npm e pip também têm riscos parecidos, então isso não é exatamente uma exceção
Então dá para entender por que o desenvolvedor quis criar um ambiente único no qual o app pudesse confiar
Recentemente executei um app em Python e fiquei chocado quando ele tentou instalar Node/NPM
Meu computador é meu espaço de trabalho, então acho que um app instalar coisas por conta própria é um risco de ataque à cadeia de suprimentos e uma falta de respeito com o usuário
O Nightingale que eu criei é um app que, ao apontar uma pasta de músicas, converte automaticamente as faixas em trilhas de karaokê
Ele oferece separação de vocais, sincronização de letras, pontuação de afinação, suporte a gamepad, aceleração por GPU e mais
Todo o processamento acontece localmente, sem conta, assinatura nem telemetria
Na primeira execução, ele configura automaticamente os modelos de ML e o ambiente Python necessários
Foi escrito em Rust com a engine Bevy e é um projeto totalmente open source
Achei interessante ver isso sendo resolvido hoje com redes neurais como o Demucs
Fico curioso se uma abordagem puramente matemática ainda conseguiria competir
Seria bom ter um recurso de pular para frente e para trás durante a reprodução, além de tratamento de pontuação e edição do resultado
Ainda assim, obrigado por lançar isso como FOSS
Fiquei curioso sobre os requisitos mínimos de CUDA e se há planos para suporte a aceleração em iGPU da AMD/Intel
Estou ansioso para ver minha família usando isso
No código, as palavras são separadas com
line_text.split(), mas japonês não usa espaços, então isso não funcionaAcho que seria preciso usar um analisador morfológico como o fugashi
Isso me fez lembrar do antigo Nightingale media player baseado em Firefox
Ele foi desenvolvido como alternativa ao iTunes/Winamp, mas está inativo há mais de 10 anos
Ainda dá para ver vestígios antigos em getnightingale.com
Já fiz no passado um projeto parecido de rastreamento de afinação
Fiquei curioso se a linha de afinação no app atual mostra a próxima nota que deve ser cantada
Vou considerar isso como uma boa sugestão de recurso
Execução local, open source, projeto feito por paixão — realmente emocionante
Notícias assim restauram minha fé na humanidade
Pelo histórico de commits, o ritmo de desenvolvimento foi muito rápido
Parece que houve uso de desenvolvimento assistido por IA
Ao contrário da ideia de que “a IA vai substituir desenvolvedores”, acho que a IA aumentou a viabilidade de pequenos projetos
Eu não tinha entendido exatamente o que o app fazia e achei que ele removesse a letra da música
Tentei várias faixas, mas os vocais ainda eram audíveis. Não entendi como ajustar a remoção de vocais
Veja o manual de controles
Projeto realmente muito legal.
Fiquei curioso se é possível processar a música em um dispositivo e reproduzi-la em outro, ou se ele pode funcionar em modo servidor/cliente
Como músico, sempre pensei que seria bom ter um app que mostrasse a letra acompanhando a música durante apresentações da banda
Hoje eu prendo o celular no pedestal do microfone, mas ele logo sai do lugar