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="/",
)