baakaani commited on
Commit
c20f7b1
·
1 Parent(s): 61961ee

new changes

Browse files
Files changed (5) hide show
  1. README.md +1 -1
  2. requirements.txt +2 -1
  3. ui/app.py +0 -8
  4. ui/gradio_app.py +45 -0
  5. ui/gradio_rating.py +41 -0
README.md CHANGED
@@ -5,7 +5,7 @@ colorFrom: indigo
5
  colorTo: pink
6
  sdk: streamlit
7
  sdk_version: 1.34.0
8
- app_file: ui/app.py
9
  pinned: false
10
  ---
11
 
 
5
  colorTo: pink
6
  sdk: streamlit
7
  sdk_version: 1.34.0
8
+ app_file: ui/gradio_app.py
9
  pinned: false
10
  ---
11
 
requirements.txt CHANGED
@@ -1,7 +1,8 @@
1
  audiodiffusion==1.5.6
2
  huggingface-hub==0.25.2
3
  matplotlib
4
- mega.py
 
5
  pycryptodome==3.17
6
  diffusers==0.17.1
7
  librosa==0.10.1
 
1
  audiodiffusion==1.5.6
2
  huggingface-hub==0.25.2
3
  matplotlib
4
+ mega.py == 1.0.8
5
+ gradio
6
  pycryptodome==3.17
7
  diffusers==0.17.1
8
  librosa==0.10.1
ui/app.py CHANGED
@@ -25,14 +25,6 @@ if 'model_name' not in st.session_state:
25
  if 'song_list' not in st.session_state:
26
  st.session_state['song_list'] = None
27
 
28
- mega = Mega()
29
- mega_user_name = os.getenv('MEGA_USERNAME')
30
- mega_user_name = str(mega_user_name)
31
- mega_password = os.getenv('MEGA_PASSWORD')
32
- mega_password = str(mega_password)
33
- print(mega_user_name,mega_password)
34
- # m = mega.login(mega_user_name,mega_password)
35
-
36
  form1 = st.form(key="form1")
37
  song_default = np.random.choice(["22", "Anti-Hero", "Back-to-december","Blank-Space","Cardigan","Delicate","Lover","Love-Story","Willow","You-Belong-With-Me"])
38
  similarity_default = np.random.uniform(0.8, 0.99).__round__(2)
 
25
  if 'song_list' not in st.session_state:
26
  st.session_state['song_list'] = None
27
 
 
 
 
 
 
 
 
 
28
  form1 = st.form(key="form1")
29
  song_default = np.random.choice(["22", "Anti-Hero", "Back-to-december","Blank-Space","Cardigan","Delicate","Lover","Love-Story","Willow","You-Belong-With-Me"])
30
  similarity_default = np.random.uniform(0.8, 0.99).__round__(2)
ui/gradio_app.py ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import numpy as np
3
+ import librosa
4
+ import os
5
+ import soundfile as sf
6
+ import generation_utilities
7
+
8
+ os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE"
9
+
10
+ # Default song and similarity values
11
+ song_default = np.random.choice(["22", "Anti-Hero", "Back-to-december","Blank-Space","Cardigan","Delicate","Lover","Love-Story","Willow","You-Belong-With-Me"])
12
+ similarity_default = round(np.random.uniform(0.8, 0.99), 2)
13
+
14
+ def generate_song(user_id, song_options, similarity):
15
+ # Load songs
16
+ song_list = [librosa.load(os.path.join(os.getcwd(), f"input_songs/{song}.mp3"), sr=22050)[0] for song in song_options]
17
+
18
+ # Generate spectrogram and song
19
+ spectrogram, generated_song, model_name = generation_utilities.generate_songs(song_list, similarity=similarity, quality=500, merging_quality=100)
20
+
21
+ # Save generated song and spectrogram
22
+ sf.write("ui/temp.wav", generated_song, 22050)
23
+ np.save("ui/temp.npy", spectrogram)
24
+
25
+ # Return user info, generated song path, and link to rating page
26
+ return {
27
+ "user_id": user_id,
28
+ "song_list": song_options,
29
+ "similarity": similarity,
30
+ "model_name": model_name,
31
+ "generated_song": "ui/temp.wav",
32
+ "message": "Song generated! [Click here to go to the rating page](ui/gradio_rating.py)"
33
+ }
34
+
35
+ # Gradio Interface
36
+ with gr.Blocks() as demo:
37
+ user_id = gr.Textbox(label="Enter your user ID")
38
+ 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])
39
+ similarity = gr.Slider(minimum=0.0, maximum=1.0, value=similarity_default, label="Similarity")
40
+
41
+ output = gr.JSON(label="Session Info")
42
+ generate_button = gr.Button("Generate Song")
43
+ generate_button.click(fn=generate_song, inputs=[user_id, song_options, similarity], outputs=output)
44
+
45
+ demo.launch()
ui/gradio_rating.py ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import numpy as np
3
+ from mega import Mega
4
+ import os
5
+ import glob
6
+
7
+ # Load files
8
+ spectrogram_path = "ui/temp.npy"
9
+ generated_song_path = "ui/temp.wav"
10
+
11
+ def rate_song(user_id, rating, model_name, song_name, similarity):
12
+ # Log in to Mega
13
+ mega = Mega()
14
+ mega_user_name = os.environ.get('MEGA_USERNAME')
15
+ mega_password = os.environ.get('MEGA_PASSWORD')
16
+ m = mega.login(mega_user_name, mega_password)
17
+
18
+ # Construct file names and paths for uploading
19
+ dynamic_song_name = f"{user_id}_{model_name}_{song_name}_{similarity}_{rating}.wav"
20
+ dynamic_spec_name = f"{user_id}_{model_name}_{song_name}_{similarity}_{rating}.npy"
21
+ folder = m.find('orpheus_data')
22
+
23
+ # Upload files
24
+ m.upload(generated_song_path, folder[0], dest_filename=dynamic_song_name)
25
+ m.upload(spectrogram_path, folder[0], dest_filename=dynamic_spec_name)
26
+
27
+ return "Files uploaded successfully!"
28
+
29
+ with gr.Blocks() as rating_demo:
30
+ song_name = gr.Markdown("# Original Song")
31
+ gr.Audio(generated_song_path, label="Generated Song", format="wav")
32
+ rating_slider = gr.Slider(minimum=0, maximum=10, value=3, label="Rating")
33
+ submit_rating_button = gr.Button("Submit Rating")
34
+
35
+ # Outputs
36
+ upload_status = gr.Textbox(label="Upload Status")
37
+
38
+ # Collect session state and submit rating
39
+ submit_rating_button.click(fn=rate_song, inputs=["user_id", rating_slider, "model_name", "song_name", "similarity"], outputs=upload_status)
40
+
41
+ rating_demo.launch()