File size: 1,536 Bytes
e990dfa bac782e e990dfa af78cff | 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 78 79 | from fastapi import FastAPI
from fastapi.responses import FileResponse
import gradio as gr
from generate import generate_music
# ======================
# FASTAPI BACKEND
# ======================
api = FastAPI(title="AI Background Music Generator")
@api.get("/health")
def health():
return {"status": "running"}
@api.post("/generate")
async def api_generate(prompt: str, duration: int = 10):
file_path = generate_music(prompt, duration)
return FileResponse(
path=file_path,
media_type="audio/wav",
filename="music.wav"
)
# ======================
# GRADIO UI
# ======================
def ui_generate(prompt, duration):
audio = generate_music(prompt, duration)
return audio
with gr.Blocks(
title="AI Background Music Generator",
theme=gr.themes.Soft(),
) as demo:
gr.Markdown("""
# 🎵 AI Background Music Generator
Generate royalty-free background music instantly.
""")
prompt = gr.Textbox(
label="Music Description",
placeholder="Soft cinematic nasheed style..."
)
duration = gr.Slider(
minimum=5,
maximum=60,
value=10,
step=1,
label="Duration (seconds)"
)
btn = gr.Button("Generate")
output = gr.Audio(type="filepath")
btn.click(
fn=ui_generate,
inputs=[prompt, duration],
outputs=output
)
# ======================
# IMPORTANT FIX
# ======================
# Mount GRADIO as ROOT APP
app = gr.mount_gradio_app(
api,
demo,
path="/",
)
|