O projeto Riffusion desenvolve uma variante do sistema de aprendizado de máquina Stable Diffusion, adaptado para gerar música em vez de imagens. A música pode ser sintetizada a partir de uma descrição textual em linguagem natural ou com base em um modelo proposto. Os componentes para a síntese de música são escritos em Python usando o framework PyTorch e estão disponíveis sob a licença MIT. A interface de ligação é implementada em TypeScript e também é distribuída sob a licença MIT. Os modelos treinados são abertos sob a licença permissiva Creative ML OpenRAIL-M, que permite o uso para fins comerciais.
O projeto é interessante porque continua a utilizar modelos de "texto para imagem" e "imagem para imagem" para a geração de música, mas manipula espectrogramas como imagens. Em outras palavras, o clássico Stable Diffusion não foi treinado em fotografias e imagens, mas em representações de espectrogramas, que refletem a variação de frequência e amplitude de uma onda sonora ao longo do tempo. Assim, a saída também é um espectrograma, que é então convertido em uma representação sonora.

O método também pode ser utilizado para modificar composições sonoras existentes e sintetizar música a partir de um modelo, de forma semelhante à modificação de imagens no Stable Diffusion. Por exemplo, durante a geração, podem ser definidos modelos de espectrogramas com um estilo de referência, combinando diferentes estilos, realizando uma transição suave de um estilo para outro ou fazendo alterações em um som existente para resolver tarefas como aumentar o volume de instrumentos individuais, mudar o ritmo e substituir instrumentos. Modelos também são usados para gerar composições de longa duração, compostas por uma série de trechos próximos uns dos outros, mudando um pouco ao longo do tempo. Trechos gerados separadamente são unidos em um fluxo contínuo por meio da interpolação de parâmetros internos do modelo.

Para criar um espectrograma a partir de som, utiliza-se a transformação de Fourier por janela. Ao recriar o som a partir do espectrograma, surge o problema de determinar a fase (no espectrograma, apenas a frequência e a amplitude estão presentes); para reconstruir isso, é utilizado o algoritmo de aproximação de Griffin-Lim.
Fonte: opennet.ru
