Polymath é uma solução inovadora que utiliza aprendizado de máquina para converter qualquer biblioteca de música, seja de um disco rígido ou do YouTube, em uma biblioteca de amostras para produção musical. Esta ferramenta automatiza a separação de músicas em stems (batidas, baixo, etc.), quantiza-os para o mesmo tempo e grade de batidas (por exemplo, 120bpm), analisa a estrutura musical (como verso, refrão, etc.), a tonalidade (por exemplo, C4, E3, etc.) e outras informações (timbre, volume, etc.), e converte áudio em MIDI. O resultado é uma biblioteca de amostras pesquisável que agiliza o fluxo de trabalho para produtores musicais, DJs e desenvolvedores de áudio para ML.
Casos de uso: Polymath facilita a combinação de elementos de diferentes músicas para criar novas composições únicas: basta pegar uma batida de uma faixa do Funkadelic, uma linha de baixo de uma peça de Tito Puente e trompas adequadas de uma música de Fela Kuti, e integrá-las perfeitamente em sua DAW em tempo recorde. Usando a capacidade de busca do Polymath para descobrir faixas relacionadas, é fácil criar um set de DJ polido e de longa duração. Para desenvolvedores de ML, o Polymath simplifica o processo de criação de um grande conjunto de dados musicais, para treinamento de modelos generativos, etc.
Como funciona? A separação de fontes musicais é realizada com a rede neural Demucs. A segmentação e rotulagem da estrutura musical é feita com a rede neural sf_segmenter. O rastreamento de pitch e detecção de tonalidade são realizados com a rede neural Crepe. A transcrição de música para MIDI é feita com a rede neural Basic Pitch. A quantização e alinhamento musical são realizados com pyrubberband. A recuperação e processamento de informações musicais são realizados com librosa.
Comunidade: Junte-se à comunidade Polymath no Discord.
Requisitos: Você precisa ter o seguinte software instalado em seu sistema: ffmpeg.
Instalação: Você precisa da versão do python >=3.7 e <=3.10. Do seu terminal, execute:
git clone https://github.com/samim23/polymath
cd polymath
pip install -r requirements.txt
Se você encontrar um problema com basic-pitch ao tentar executar o Polymath, execute este comando após sua instalação:
pip install git+https://github.com/spotify/basic-pitch.git
Suporte a GPU: A maioria das bibliotecas que o polymath usa vem com suporte nativo a GPU através do cuda. Siga os passos em para configurar o tensorflow para uso com cuda. Se você seguiu esses passos, tanto o tensorflow quanto o torch irão automaticamente detectar a GPU e usá-la. Isso só se aplica a configurações nativas, para implantações dockerizadas (veja a próxima seção), o suporte a GPU está por vir.
Configuração do Docker: Se você tem o Docker instalado em seu sistema, pode usar o Dockerfile fornecido para construir rapidamente uma imagem docker do polymath (se o seu usuário não faz parte do grupo docker, lembre-se de prefixar sudo ao seguinte comando):
docker build -t polymath ./
Para trocar arquivos de entrada e saída entre o sistema host e o contêiner docker do polymath, você precisa criar os seguintes quatro diretórios:
./input
./library
./processed
./separated
Agora coloque qualquer arquivo que você deseja processar com o polymath na pasta input. Então você pode rodar o polymath através do docker usando o comando docker run e passar quaisquer argumentos que você passaria originalmente para o comando python, por exemplo, se você estiver em um sistema operacional Linux, chame:
docker run \
-v "$(pwd)"/processed:/polymath/processed \
-v "$(pwd)"/separated:/polymath/separated \
-v "$(pwd)"/library:/polymath/library \
-v "$(pwd)"/input:/polymath/input \
polymath python /polymath/polymath.py -a ./input/song1.wav
Executando o Polymath:
- Adicione músicas à Biblioteca Polymath Adicione vídeo do YouTube à biblioteca (download automático)
python polymath.py -a n6DAqMFe97E
Adicione arquivo de áudio (wav ou mp3)
python polymath.py -a /path/to/audiolib/song.wav
Adicione múltiplos arquivos de uma vez
python polymath.py -a n6DAqMFe97E,eaPzCHEQExs,RijB8wnJCN0
python polymath.py -a /path/to/audiolib/song1.wav,/path/to/audiolib/song2.wav
python polymath.py -a /path/to/audiolib/
As músicas são automaticamente analisadas uma vez, o que leva algum tempo. Uma vez no banco de dados, elas podem ser acessadas rapidamente. O banco de dados é armazenado na pasta "/library/database.p". Para resetar tudo, simplesmente delete-o.
- Quantize músicas na Biblioteca Polymath Quantize músicas específicas na biblioteca para o tempo 120 BPM (-q = ID do arquivo de áudio no banco de dados, -t = tempo em BPM)
python polymath.py -q n6DAqMFe97E -t 120
Quantize todas as músicas na biblioteca para o tempo 120 BPM
python polymath.py -q all -t 120
Quantize músicas específicas na biblioteca para o tempo da música (-k)
python polymath.py -q n6DAqMFe97E -k
As músicas são automaticamente quantizadas para o mesmo tempo e grade de batidas e salvas na pasta “/processed”.
- Busque por músicas similares na Biblioteca Polymath Busque por 10 músicas similares baseadas em uma música específica na biblioteca (-s = ID do arquivo de áudio no banco de dados, -sa = quantidade de resultados)
python polymath.py -s n6DAqMFe97E -sa 10
Busque por músicas similares baseadas em uma música específica na biblioteca e quantize todas elas para o tempo 120 BPM
python polymath.py -s n6DAqMFe97E -sa 10 -q all -t 120
Inclua BPM como critério de busca (-st)
python polymath.py -s n6DAqMFe97E -sa 10 -q all -t 120 -st -k
Músicas similares são automaticamente encontradas e opcionalmente quantizadas e salvas na pasta "/processed". Isso facilita a criação, por exemplo, de uma mixagem de uma hora de músicas que combinam perfeitamente uma após a outra.
- Converta Áudio para MIDI Converta todos os arquivos de áudio processados e stems para MIDI (-m)
python polymath.py -a n6DAqMFe97E -q all -t 120 -m
Arquivos MIDI gerados estão atualmente sempre em 120BPM e precisam ser ajustados no tempo em sua DAW. Isso será resolvido em breve. O modelo atual de Audio2Midi dá resultados mistos com bateria/percussão. Isso será resolvido com opções adicionais de modelos audio2midi no futuro.
Características de Áudio Extraídas: Stems A rede neural Demucs tem configurações que podem ser ajustadas no arquivo python
- baixo
- bateria
- guitarra
- outros
- piano
- vocais
Características Extraídas Os extratores de características de áudio têm configurações que podem ser ajustadas no arquivo python
- tempo
- duração
- timbre
- frames de timbre
- pitch
- frames de pitch
- intensidade
- frames de intensidade
- volume
- volume médio
- loudness
- batidas
- limites de segmentos
- rótulos de segmentos
- frames de frequência
- frequência
- tonalidade
Licença: Polymath é lançado sob a licença MIT, conforme encontrado no arquivo LICENSE.