| from fastapi import FastAPI |
| from fastapi.responses import FileResponse |
| import gradio as gr |
| from generate import generate_music |
|
|
| |
| |
| |
|
|
| 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" |
| ) |
|
|
| |
| |
| |
|
|
| 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 |
| ) |
|
|
|
|
| |
| |
| |
| |
|
|
| app = gr.mount_gradio_app( |
| api, |
| demo, |
| path="/", |
| ) |
|
|