File size: 1,483 Bytes
c20f7b1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr
import numpy as np
from mega import Mega
import os
import glob

# Load files
spectrogram_path = "ui/temp.npy"
generated_song_path = "ui/temp.wav"

def rate_song(user_id, rating, model_name, song_name, similarity):
    # Log in to Mega
    mega = Mega()
    mega_user_name = os.environ.get('MEGA_USERNAME')
    mega_password = os.environ.get('MEGA_PASSWORD')
    m = mega.login(mega_user_name, mega_password)
    
    # Construct file names and paths for uploading
    dynamic_song_name = f"{user_id}_{model_name}_{song_name}_{similarity}_{rating}.wav"
    dynamic_spec_name = f"{user_id}_{model_name}_{song_name}_{similarity}_{rating}.npy"
    folder = m.find('orpheus_data')

    # Upload files
    m.upload(generated_song_path, folder[0], dest_filename=dynamic_song_name)
    m.upload(spectrogram_path, folder[0], dest_filename=dynamic_spec_name)
    
    return "Files uploaded successfully!"

with gr.Blocks() as rating_demo:
    song_name = gr.Markdown("# Original Song")
    gr.Audio(generated_song_path, label="Generated Song", format="wav")
    rating_slider = gr.Slider(minimum=0, maximum=10, value=3, label="Rating")
    submit_rating_button = gr.Button("Submit Rating")

    # Outputs
    upload_status = gr.Textbox(label="Upload Status")

    # Collect session state and submit rating
    submit_rating_button.click(fn=rate_song, inputs=["user_id", rating_slider, "model_name", "song_name", "similarity"], outputs=upload_status)

rating_demo.launch()