fffiloni commited on
Commit
64f0bfe
·
verified ·
1 Parent(s): 0fbecad
Files changed (1) hide show
  1. app.py +30 -6
app.py CHANGED
@@ -251,7 +251,7 @@ Immediately STOP after that. It should be EXACTLY in this format:
251
  "The song is an instrumental. The song is in medium tempo with a classical guitar playing a lilting melody in accompaniment style. The song is emotional and romantic. The song is a romantic instrumental song. The chord sequence is Gm, F6, Ebm. The time signature is 4/4. This song is in Adagio. The key of this song is G minor."
252
  """
253
 
254
- @spaces.GPU(enable_queue=True)
255
  def get_musical_prompt(user_prompt, chosen_model):
256
 
257
  """
@@ -276,13 +276,35 @@ def get_musical_prompt(user_prompt, chosen_model):
276
  print(f"SUGGESTED Musical prompt: {cleaned_text}")
277
  return cleaned_text.lstrip("\n")
278
 
279
- def infer(image_in, chosen_model, api_status):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
280
  if image_in == None :
281
  raise gr.Error("Please provide an image input")
282
 
283
  if chosen_model == [] :
284
  raise gr.Error("Please pick a model")
285
 
 
 
286
  if api_status == "api not ready yet" :
287
  raise gr.Error("This model is not ready yet, you can pick another one instead :)")
288
 
@@ -440,13 +462,15 @@ with gr.Blocks(css=css) as demo:
440
  fn = check_api,
441
  inputs = chosen_model,
442
  outputs = check_status,
443
- queue = False
 
444
  )
445
 
446
  retry_btn.click(
447
  fn = retry,
448
  inputs = [chosen_model, caption],
449
- outputs = [result]
 
450
  )
451
 
452
  submit_btn.click(
@@ -454,7 +478,7 @@ with gr.Blocks(css=css) as demo:
454
  inputs = [
455
  image_in,
456
  chosen_model,
457
- check_status
458
  ],
459
  outputs =[
460
  caption,
@@ -463,4 +487,4 @@ with gr.Blocks(css=css) as demo:
463
  ]
464
  )
465
 
466
- demo.queue(max_size=16).launch(show_api=False, show_error=True)
 
251
  "The song is an instrumental. The song is in medium tempo with a classical guitar playing a lilting melody in accompaniment style. The song is emotional and romantic. The song is a romantic instrumental song. The chord sequence is Gm, F6, Ebm. The time signature is 4/4. This song is in Adagio. The key of this song is G minor."
252
  """
253
 
254
+ @spaces.GPU()
255
  def get_musical_prompt(user_prompt, chosen_model):
256
 
257
  """
 
276
  print(f"SUGGESTED Musical prompt: {cleaned_text}")
277
  return cleaned_text.lstrip("\n")
278
 
279
+ def infer(image_in, chosen_model):
280
+ """
281
+ Generate music from an input image and selected music generation model.
282
+
283
+ This function performs the following steps:
284
+ 1. Checks that an image and a model have been provided.
285
+ 2. Verifies if the selected model's API is currently available.
286
+ 3. Uses an image captioning model (Kosmos-2) to describe the image.
287
+ 4. Generates a musical prompt from the image caption using a language model.
288
+ 5. Sends the musical prompt to the selected music generation model and retrieves the result.
289
+
290
+ Args:
291
+ image_in: The filepath to an input image. This image is used as inspiration to generate music.
292
+ chosen_model: The name of the model to use for music generation. Supported values include:
293
+ "Mustango", "ACE Step".
294
+
295
+ Returns:
296
+ - A string containing the musical prompt generated from the image.
297
+ - A flag to show the retry button in the UI (for user to edit and retry the generation).
298
+ - The output of the selected model, typically an audio filepath or object depending on model.
299
+ """
300
  if image_in == None :
301
  raise gr.Error("Please provide an image input")
302
 
303
  if chosen_model == [] :
304
  raise gr.Error("Please pick a model")
305
 
306
+ api_status = check_api(chosen_model)
307
+
308
  if api_status == "api not ready yet" :
309
  raise gr.Error("This model is not ready yet, you can pick another one instead :)")
310
 
 
462
  fn = check_api,
463
  inputs = chosen_model,
464
  outputs = check_status,
465
+ queue = False,
466
+ show_api=False
467
  )
468
 
469
  retry_btn.click(
470
  fn = retry,
471
  inputs = [chosen_model, caption],
472
+ outputs = [result],
473
+ show_api=False
474
  )
475
 
476
  submit_btn.click(
 
478
  inputs = [
479
  image_in,
480
  chosen_model,
481
+ #check_status
482
  ],
483
  outputs =[
484
  caption,
 
487
  ]
488
  )
489
 
490
+ demo.queue(max_size=16).launch(show_api=True, show_error=True, ssr_mode=False, mcp_server=True)