File size: 1,939 Bytes
45e807f
a94ca22
 
fd8ca64
a94ca22
45e807f
a94ca22
45e807f
a94ca22
 
 
fd8ca64
a94ca22
 
 
 
 
 
fd8ca64
a94ca22
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
fd8ca64
45e807f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import gradio as gr
import numpy as np
import librosa
import os
import soundfile as sf

os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE"

# Default song and similarity values
song_default = np.random.choice(["22", "Anti-Hero", "Back-to-december","Blank-Space","Cardigan","Delicate","Lover","Love-Story","Willow","You-Belong-With-Me"])
similarity_default = round(np.random.uniform(0.8, 0.99), 2)

# def generate_song(user_id, song_options, similarity):
#     # Load songs
#     song_list = [librosa.load(os.path.join(os.getcwd(), f"input_songs/{song}.mp3"), sr=22050)[0] for song in song_options]
    
#     # Generate spectrogram and song
#     spectrogram, generated_song, model_name = generation_utilities.generate_songs(song_list, similarity=similarity, quality=500, merging_quality=100)

#     # Save generated song and spectrogram
#     sf.write("ui/temp.wav", generated_song, 22050)
#     np.save("ui/temp.npy", spectrogram)

#     # Return user info, generated song path, and link to rating page
#     return {
#         "user_id": user_id, 
#         "song_list": song_options, 
#         "similarity": similarity, 
#         "model_name": model_name, 
#         "generated_song": "ui/temp.wav", 
#         "message": "Song generated! [Click here to go to the rating page](ui/gradio_rating.py)"
#     }

# Gradio Interface
with gr.Blocks() as demo:
    user_id = gr.Textbox(label="Enter your user ID")
    song_options = gr.CheckboxGroup(["22", "Anti-Hero", "Back-to-december","Blank-Space","Cardigan","Delicate","Lover","Love-Story","Willow","You-Belong-With-Me"], label="Select songs from library", value=[song_default])
    similarity = gr.Slider(minimum=0.0, maximum=1.0, value=similarity_default, label="Similarity")

    output = gr.JSON(label="Session Info")
    generate_button = gr.Button("Generate Song")
    # generate_button.click(fn=generate_song, inputs=[user_id, song_options, similarity], outputs=output)

demo.launch()