File size: 2,437 Bytes
391222d
e7d2d44
391222d
80449f7
93da42a
391222d
 
1c0a21f
ade087a
 
1c0a21f
e7d2d44
ade087a
 
391222d
1b28bbd
ba26d1c
391222d
 
ade087a
 
 
58498d2
 
ade087a
46e11dd
ade087a
 
 
 
 
 
 
 
d06b9f4
391222d
ade087a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
369ed77
 
 
 
 
 
a6ce55f
 
 
 
369ed77
b6101eb
391222d
54b4948
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import gradio as gr
import os

img_to_text = gr.Blocks.load(name="spaces/pharma/CLIP-Interrogator")
text_to_music = gr.Interface.load("spaces/fffiloni/text-2-music")

def get_prompts(uploaded_image):
  
  print(f"""β€”β€”β€”β€”β€”
  Calling CLIP Interrogator ...
  """)
  
  prompt = img_to_text(uploaded_image, fn_index=1)[0]
  
  music_result = get_music(prompt)
  
  return music_result

def get_music(prompt):
  
  print(f"""β€”β€”β€”β€”β€”
  Calling now MubertAI ...
  β€”β€”β€”β€”β€”β€”β€”
  """)
  
  result = text_to_music(prompt, fn_index=0)
  
  print(f"""β€”β€”β€”β€”β€”
  NEW RESULTS
  prompt : {prompt}
  music : {result}
  β€”β€”β€”β€”β€”β€”β€”
  """)
  
  return result

css = """
#col-container {max-width: 700px; margin-left: auto; margin-right: auto;}
a {text-decoration-line: underline; font-weight: 600;}
"""

with gr.Blocks(css=css) as demo:
  with gr.Column(elem_id="col-container"):
    gr.HTML("""<div style="text-align: center; max-width: 700px; margin: 0 auto;">
              <div
              style="
                  display: inline-flex;
                  align-items: center;
                  gap: 0.8rem;
                  font-size: 1.75rem;
              "
              >
              <h1 style="font-weight: 900; margin-bottom: 7px; margin-top: 5px;">
                  Image to Music
              </h1>
              </div>
              <p style="margin-bottom: 10px; font-size: 94%">
              Sends an image in to <a href="https://huggingface.co/spaces/pharma/CLIP-Interrogator" target="_blank">CLIP Interrogator</a>
              to generate a text prompt which is then run through 
              <a href="https://huggingface.co/Mubert" target="_blank">Mubert</a> text-to-music to generate music from the input image!
              </p>
          </div>""")
    
    
    input_img = gr.Image(type="filepath", elem_id="input-img")
    generate = gr.Button("Generate Music from Image")
  
    music_output = gr.Audio(label="Result", type="filepath", elem_id="music-output")
    
    #with gr.Group(elem_id="share-btn-container"):
    #  community_icon = gr.HTML(community_icon_html, visible=False)
    #  loading_icon = gr.HTML(loading_icon_html, visible=False)
    #  share_button = gr.Button("Share to community", elem_id="share-btn", visible=False)
      
  generate.click(get_prompts, inputs=[input_img], outputs=[music_output])

demo.queue(max_size=32, concurrency_count=20).launch()