MuseNet

Criamos MuseNet, uma rede neural profunda que pode gerar composições musicais de 4 minutos com 10 instrumentos diferentes, e pode combinar estilos do país ao Mozart e aos Beatles. MuseNet não foi explicitamente programado com a nossa compreensão da música, mas sim descobriu padrões de harmonia, ritmo e estilo ao aprender a prever o próximo símbolo em centenas de milhares de arquivos MIDI. MuseNet usa a mesma tecnologia não supervisionada de propósito geral do GPT-2, um modelo de transformador de larga escala treinado para prever o próximo token numa sequência, seja de áudio ou texto.

Amostras

Desde que MuseNet conhece muitos estilos diferentes, podemos misturar gerações de novas formas. Aqui o modelo recebe as primeiras 6 notas de um Chopin Nocturne, mas é pedido para gerar uma peça em estilo pop com piano, bateria, baixo e guitarra. O modelo consegue misturar os dois estilos de forma convincente, com a banda completa se juntando em torno da marca de 30 segundos:

Try MuseNet

Estamos animados em ver como músicos e não-músicos usarão MuseNet para criar novas composições!

No modo simples (mostrado por padrão), você ouvirá samples aleatórios não curados que nós pré-geramos. Escolha um compositor ou estilo, um início opcional de uma peça famosa, e comece a gerar. Isto permite explorar a variedade de estilos musicais que o modelo pode criar. No modo avançado, você pode interagir diretamente com o modelo. As terminações demoram mais tempo, mas você estará criando uma peça inteiramente nova.

Algumas das limitações da MuseNet incluem:

  • Os instrumentos que você pede são sugestões fortes, não requisitos. MuseNet gera cada nota através do cálculo das probabilidades em todas as notas e instrumentos possíveis. O modelo muda para fazer suas escolhas de instrumentos mais prováveis, mas sempre há uma chance de escolher outra coisa.
  • MuseNet tem um tempo mais difícil com paragens estranhas de estilos e instrumentos (como o Chopin com baixo e bateria). Gerações serão mais naturais se você escolher instrumentos mais próximos ao estilo usual do compositor ou banda.

Fichas de composição e instrumentação

Criamos fichas de composição e instrumentação para dar mais controle sobre os tipos de amostras que a MuseNet gera. Durante o tempo de treinamento, esses compositores e fichas de instrumentação foram preparados para cada amostra, para que o modelo aprendesse a usar essa informação para fazer previsões de anotações. No momento da geração, podemos então condicionar o modelo para criar samples num estilo escolhido, começando com um prompt como Rachmaninoff piano start:

Or prompted with the band Journey, com piano, baixo, guitarra e bateria:

Podemos visualizar as incorporações do MuseNet para obter uma visão do que o modelo aprendeu. Aqui usamos o t-SNE para criar um mapa em 2-D da semelhança cosseno de vários compositores musicais e estilos embeddings.

Passe o mouse sobre um compositor ou estilo específico para ver como ele se relaciona com outros.

Estrutura a longo prazo

MuseNet usa os kernels recomputados e optimizados do Sparse Transformer para treinar uma rede de 72 camadas com 24 cabeças de atenção – com atenção total sobre um contexto de 4096 fichas. Este contexto longo pode ser uma das razões pelas quais ele é capaz de lembrar estruturas de longo prazo em uma peça, como no seguinte exemplo imitando Chopin:

Ele também pode criar estruturas melódicas musicais, como neste exemplo imitando Mozart:

Geração de música é um domínio útil para testar o Transformador Espartoso, pois ele fica no meio entre o texto e as imagens. Ele tem a estrutura de fichas fluida do texto (em imagens você pode olhar para trás N fichas e encontrar a linha acima, enquanto na música não há um número fixo para olhar para trás para a medida anterior). No entanto, podemos facilmente ouvir se o modelo está capturando a estrutura a longo prazo na ordem de centenas a milhares de fichas. É muito mais óbvio se um modelo de música desorganiza a estrutura alterando o ritmo, de uma forma menos clara se um modelo de texto for numa breve tangente.

Dataset

Recolhemos dados de treino para a MuseNet a partir de muitas fontes diferentes. ClassicalArchives e BitMidi doaram suas grandes coleções de arquivos MIDI para este projeto, e também encontramos várias coleções online, incluindo os estilos jazz, pop, africano, indiano e árabe. Além disso, usamos o conjunto de dados MAESTRO.

O transformador é treinado em dados sequenciais: dado um conjunto de notas, pedimos-lhe para prever a próxima nota. Experimentamos várias formas diferentes de codificar os ficheiros MIDI em fichas adequadas para esta tarefa. Primeiro, uma abordagem cordwise que considerava cada combinação de notas soando ao mesmo tempo como um “acorde” individual, e atribuía um token a cada acorde. Segundo, tentamos condensar os padrões musicais focando apenas nos inícios das notas, e tentamos comprimir ainda mais aquele usando um esquema de codificação de par de bytes.

Tentamos também dois métodos diferentes de marcar a passagem do tempo: ou fichas que foram escaladas de acordo com o tempo da peça (para que as fichas representassem um ritmo musical ou uma fração de um ritmo), ou fichas que marcassem o tempo absoluto em segundos. Aterramos em uma codificação que combina expressividade com concisão: combinando as informações de tom, volume e instrumento em uma única ficha.

 bach piano_strings start tempo90 piano:v72:G1 piano:v72:G2 piano:v72:B4 piano:v72:D4 violin:v80:G4 piano:v72:G4 piano:v72:B5 piano:v72:D5 wait:12 piano:v0:B5 wait:5 piano:v72:D5 wait:12 piano:v0:D5 wait:4 piano:v0:G1 piano:v0:G2 piano:v0:B4 piano:v0:D4 violin:v0:G4 piano:v0:G4 wait:1 piano:v72:G5 wait:12 piano:v0:G5 wait:5 piano:v72:D5 wait:12 piano:v0:D5 wait:5 piano:v72:B5 wait:12 
Codificação de amostra que combina tom, volume e instrumento.

Treinamento, we:

  1. Transposição das notas subindo e descendo os tons (mais tarde no treinamento, reduzimos a quantidade de transposição para que as gerações permaneçam dentro das faixas individuais dos instrumentos).
  2. Augmentar os volumes, aumentando ou diminuindo os volumes totais das várias amostras.
  3. Augment timing (quando se usa o tempo absoluto em codificação de segundos), efetivamente diminuindo ligeiramente ou acelerando as peças.
  4. Utilizar mixup no espaço de incorporação de fichas

Criamos também uma crítica interna: o modelo é solicitado durante o tempo de treinamento para prever se uma determinada amostra é realmente do conjunto de dados ou se é uma das próprias gerações passadas do modelo. Esta pontuação é usada para selecionar amostras no momento da geração.

Embeddings

Adicionamos vários tipos diferentes de embeddings para dar ao modelo um contexto mais estrutural. Além das incrustações posicionais padrão, adicionamos uma incrustação aprendida que rastreia a passagem do tempo em uma determinada amostra. Desta forma, todas as notas que soam ao mesmo tempo recebem o mesmo tempo de embedding. Adicionamos então uma incorporação para cada nota num acorde (isto imita a atenção relativa, uma vez que será mais fácil para o modelo aprender que a nota 4 precisa de olhar para trás na nota 3, ou então na nota 4 do acorde anterior). Finalmente, adicionamos duas incrustações estruturais que dizem ao modelo onde se encontra uma determinada amostra musical dentro da peça musical maior. Uma incorporação divide a peça maior em 128 partes, enquanto a segunda codificação é uma contagem decrescente de 127 para 0 à medida que o modelo se aproxima do símbolo (fim).

Estamos entusiasmados por ouvir o que as pessoas criam! Se você criar uma peça que você gosta, você pode carregá-la para um serviço gratuito como o Instaudio e depois nos twittar o link (a demo do MuseNet tem um botão tweet para ajudar com isso).

Se você estiver interessado em aprender mais sobre o trabalho musical do OpenAI, considere a possibilidade de se inscrever para fazer parte da nossa equipe. Por favor, sinta-se à vontade para nos enviar um e-mail com sugestões para a demo da MuseNet. Nós também gostaríamos de ouvir de você se você está interessado em compor com MuseNet em mais profundidade, ou se você tem arquivos MIDI que você gostaria de adicionar ao conjunto de treinamento.

MuseNet tocou um concerto experimental em 25 de abril de 2019, animado no canal Twitch do OpenAI, no qual nenhum humano (incluindo nós) tinha ouvido as peças antes.

Deixe uma resposta

O seu endereço de email não será publicado.