Spaces:
Running on Zero
Running on Zero
Commit Β·
a71591f
1
Parent(s): 1aa3245
well that was easier
Browse files
app.py
CHANGED
|
@@ -140,7 +140,7 @@ def generate_music(wav_filename, prompt_duration, musicgen_model, output_duratio
|
|
| 140 |
|
| 141 |
# ========== MELODYFLOW FUNCTIONS (Via Facebook Space) ==========
|
| 142 |
|
| 143 |
-
def transform_with_melodyflow_api(audio_path, variation, custom_prompt="", solver="euler",
|
| 144 |
"""Transform audio using Facebook/MelodyFlow space API"""
|
| 145 |
if audio_path is None:
|
| 146 |
return None, "β No audio file provided"
|
|
@@ -152,10 +152,13 @@ def transform_with_melodyflow_api(audio_path, variation, custom_prompt="", solve
|
|
| 152 |
# Determine the prompt to use
|
| 153 |
if custom_prompt.strip():
|
| 154 |
prompt_text = custom_prompt.strip()
|
| 155 |
-
status_msg = f"β
Transformed with custom prompt: '{prompt_text}'"
|
| 156 |
else:
|
| 157 |
prompt_text = VARIATION_PROMPTS.get(variation, f"transform this audio to {variation} style")
|
| 158 |
-
status_msg = f"β
Transformed with {variation} style"
|
|
|
|
|
|
|
|
|
|
| 159 |
|
| 160 |
# Call the MelodyFlow API
|
| 161 |
result = client.predict(
|
|
@@ -163,8 +166,8 @@ def transform_with_melodyflow_api(audio_path, variation, custom_prompt="", solve
|
|
| 163 |
text=prompt_text,
|
| 164 |
solver=solver,
|
| 165 |
steps=steps,
|
| 166 |
-
target_flowstep=
|
| 167 |
-
regularize=
|
| 168 |
regularization_strength=0.2,
|
| 169 |
duration=30, # Max duration
|
| 170 |
melody=handle_file(audio_path),
|
|
@@ -248,12 +251,13 @@ with gr.Blocks() as iface:
|
|
| 248 |
choices=["euler", "midpoint"],
|
| 249 |
value="euler"
|
| 250 |
)
|
| 251 |
-
|
| 252 |
-
label="
|
| 253 |
-
minimum=
|
| 254 |
-
maximum=
|
| 255 |
-
step=
|
| 256 |
-
value=
|
|
|
|
| 257 |
)
|
| 258 |
transform_button = gr.Button("ποΈ Transform Audio", variant="secondary", size="lg")
|
| 259 |
|
|
@@ -302,7 +306,7 @@ with gr.Blocks() as iface:
|
|
| 302 |
# Step 2: Transform (using Facebook MelodyFlow API)
|
| 303 |
transform_button.click(
|
| 304 |
transform_with_melodyflow_api,
|
| 305 |
-
inputs=[main_audio, transform_variation, transform_prompt, transform_solver,
|
| 306 |
outputs=[main_audio, transform_status]
|
| 307 |
)
|
| 308 |
|
|
|
|
| 140 |
|
| 141 |
# ========== MELODYFLOW FUNCTIONS (Via Facebook Space) ==========
|
| 142 |
|
| 143 |
+
def transform_with_melodyflow_api(audio_path, variation, custom_prompt="", solver="euler", flowstep=0.12):
|
| 144 |
"""Transform audio using Facebook/MelodyFlow space API"""
|
| 145 |
if audio_path is None:
|
| 146 |
return None, "β No audio file provided"
|
|
|
|
| 152 |
# Determine the prompt to use
|
| 153 |
if custom_prompt.strip():
|
| 154 |
prompt_text = custom_prompt.strip()
|
| 155 |
+
status_msg = f"β
Transformed with custom prompt: '{prompt_text}' (flowstep: {flowstep})"
|
| 156 |
else:
|
| 157 |
prompt_text = VARIATION_PROMPTS.get(variation, f"transform this audio to {variation} style")
|
| 158 |
+
status_msg = f"β
Transformed with {variation} style (flowstep: {flowstep})"
|
| 159 |
+
|
| 160 |
+
# Set steps based on solver (from your original logic)
|
| 161 |
+
steps = 64 if solver == "midpoint" else 128
|
| 162 |
|
| 163 |
# Call the MelodyFlow API
|
| 164 |
result = client.predict(
|
|
|
|
| 166 |
text=prompt_text,
|
| 167 |
solver=solver,
|
| 168 |
steps=steps,
|
| 169 |
+
target_flowstep=flowstep, # This is the key parameter!
|
| 170 |
+
regularize=solver == "euler", # Regularize for euler, not for midpoint
|
| 171 |
regularization_strength=0.2,
|
| 172 |
duration=30, # Max duration
|
| 173 |
melody=handle_file(audio_path),
|
|
|
|
| 251 |
choices=["euler", "midpoint"],
|
| 252 |
value="euler"
|
| 253 |
)
|
| 254 |
+
transform_flowstep = gr.Slider(
|
| 255 |
+
label="Transform Intensity (Flowstep)",
|
| 256 |
+
minimum=0.0,
|
| 257 |
+
maximum=0.15,
|
| 258 |
+
step=0.01,
|
| 259 |
+
value=0.12,
|
| 260 |
+
info="Lower values = more dramatic transformation"
|
| 261 |
)
|
| 262 |
transform_button = gr.Button("ποΈ Transform Audio", variant="secondary", size="lg")
|
| 263 |
|
|
|
|
| 306 |
# Step 2: Transform (using Facebook MelodyFlow API)
|
| 307 |
transform_button.click(
|
| 308 |
transform_with_melodyflow_api,
|
| 309 |
+
inputs=[main_audio, transform_variation, transform_prompt, transform_solver, transform_flowstep],
|
| 310 |
outputs=[main_audio, transform_status]
|
| 311 |
)
|
| 312 |
|