|
from model import PopMusicTransformer |
|
import os |
|
os.environ['CUDA_VISIBLE_DEVICES'] = '-1' |
|
import tensorflow as tf |
|
tf.compat.v1.disable_eager_execution() |
|
import gradio as gr |
|
import requests |
|
import torchtext |
|
import zipfile |
|
|
|
torchtext.utils.download_from_url("https://drive.google.com/uc?id=1gxuTSkF51NP04JZgTE46Pg4KQsbHQKGo", root=".") |
|
torchtext.utils.download_from_url("https://drive.google.com/uc?id=1nAKjaeahlzpVAX0F9wjQEG_hL4UosSbo", root=".") |
|
|
|
with zipfile.ZipFile("REMI-tempo-checkpoint.zip","r") as zip_ref: |
|
zip_ref.extractall(".") |
|
with zipfile.ZipFile("REMI-tempo-chord-checkpoint.zip","r") as zip_ref: |
|
zip_ref.extractall(".") |
|
|
|
url = 'https://github.com/AK391/remi/blob/master/input.midi?raw=true' |
|
r = requests.get(url, allow_redirects=True) |
|
open("input.midi", 'wb').write(r.content) |
|
|
|
|
|
|
|
model = PopMusicTransformer( |
|
checkpoint='REMI-tempo-checkpoint', |
|
is_training=False) |
|
|
|
def inference(midi): |
|
|
|
model.generate( |
|
n_target_bar=4, |
|
temperature=1.2, |
|
topk=5, |
|
output_path='continuation.midi', |
|
prompt=midi.name) |
|
return 'continuation.midi' |
|
|
|
|
|
title = "Pop Music Transformer" |
|
description = "demo for Pop Music Transformer. To use it, simply upload your midi file, or click one of the examples to load them. Read more at the links below." |
|
article = "<p style='text-align: center'><a href='https://arxiv.org/abs/2002.00212'>Pop Music Transformer: Beat-based Modeling and Generation of Expressive Pop Piano Compositions</a> | <a href='https://github.com/YatingMusic/remi'>Github Repo</a></p>" |
|
|
|
examples = [ |
|
['input.midi'] |
|
] |
|
gr.Interface( |
|
inference, |
|
gr.inputs.File(label="Input Midi"), |
|
gr.outputs.File(label="Output Midi"), |
|
title=title, |
|
description=description, |
|
article=article, |
|
examples=examples |
|
).launch() |
|
|