2 pontos por GN⁺ 2024-11-11 | 1 comentários | Compartilhar no WhatsApp
  • Visão geral do projeto

    • Este projeto tem como objetivo criar um programa que converta música em partitura.
    • É um projeto open source que separa uma música em seus instrumentos componentes sem usar bibliotecas externas de separação de instrumentos.
    • A motivação do projeto veio de uma necessidade pessoal e da ausência de algoritmos open source simples.
  • Processo de preparação

    • Os dados dos instrumentos foram obtidos do banco de dados do University of Iowa Electronic Music Studios.
    • A partir desses dados, foram obtidas a transformada de Fourier da forma de onda completa e o envelope da forma de onda.
  • Como funciona

    • A forma de onda sonora dos instrumentos é caracterizada principalmente pela transformada de Fourier e pelo envelope.
    • Com isso, é possível identificar qual instrumento está tocando qual nota.
  • Transformada de Fourier

    • A transformada de Fourier do arquivo de música é realizada a cada 0,1 segundo para gerar um espectrograma.
    • A transformada de Fourier da janela de 0,1 segundo é reconstruída somando as transformadas de Fourier armazenadas de cada instrumento.
    • A magnitude de cada instrumento é obtida por meio da derivada parcial em relação à frequência da função de custo MSE.
  • Envelope

    • O envelope é o limite superior da forma de onda, e é necessário um método robusto a ruído e a certos tipos específicos de forma de onda.
    • O envelope é obtido dividindo a forma de onda em chunks e tomando o valor máximo de cada chunk.
    • O envelope é analisado dividindo-o em ataque, sustentação e liberação.
    • A forma de onda dos instrumentos pode ter decaimento estático ou dinâmico, e para diferenciá-los são analisados o fator de decaimento e sua taxa de variação.
  • Diferentes tipos de forma de onda

    • Para processar o arquivo de música, é aplicado um filtro passa-banda para a frequência de cada nota.
    • Para cada instrumento, o início e o fim de cada nota são encontrados por meio da correlação cruzada do ataque e da liberação, e o custo é obtido calculando o MSE.
    • A magnitude final é obtida multiplicando a magnitude encontrada na etapa da transformada de Fourier pelo inverso do custo.
  • Resultados e exibição

    • A partitura é exibida usando um gráfico de dispersão do matplotlib.
    • Originalmente, tentou-se reconstruir o áudio a partir da magnitude, mas muitos problemas surgiram e a ideia foi abandonada.
    • É útil para reconstrução de partitura e especialmente útil para quem tem dificuldade em identificar tons ou acordes.

1 comentários

 
GN⁺ 2024-11-11
Comentários do Hacker News
  • O título pode ser confuso. Este projeto não é separação de áudio, e sim um algoritmo de detecção de pitch, além de incluir uma função de classificação de instrumentos
    • Corrigir os resultados pode acabar levando mais tempo
  • Transcrição musical automática (áudio -> MIDI) é uma subárea importante de deep learning e recuperação de informação musical
    • O projeto MT3 do Google é citado como um modelo bem-sucedido
    • No caso da transcrição de piano, ele mostra precisão quase perfeita mesmo com áudio de baixa qualidade
  • Se você tem interesse em separação de áudio, vale a pena conferir o RipX
    • Ele permite exportar as faixas separadas como arquivos MIDI
    • Ainda tem alguns problemas, mas funciona bem
    • A separação em stems agora é padrão em softwares de música, e quase toda DAW oferece isso
  • A física real dos instrumentos pode não ser capturada por templates simples de transformada de Fourier
    • Um trompete pode ter espectros harmônicos diferentes quando tocado suavemente e quando tocado alto
    • O conteúdo harmônico pode variar bastante de acordo com a intensidade do instrumento
    • Adicionar templates de Fourier dependentes da intensidade para cada instrumento pode melhorar a precisão
  • Isso trouxe de volta memórias de jogar Audiosurf há 15 anos
  • O vídeo de demonstração no YouTube aparentemente não mostra separação de fontes
  • Ninguém comentou que "separation" foi escrito errado quatro vezes
  • Alguns vídeos parecem não ter áudio
  • Este projeto pode ser trabalho do irmão de Joshua Bird
    • Joshua Bird já vinha fazendo projetos impressionantes
  • Não consigo encontrar o código-fonte, mas o projeto parece interessante