Spaces:
Running
Running
from flask import jsonify, send_file, request | |
from main import * | |
import torch | |
import soundfile as sf | |
import numpy as np | |
import io | |
def generate_music(prompt, output_path="output_music.wav"): | |
if musicgen_model is None: | |
return "Music generation model not initialized." | |
attributes = [prompt] | |
sample_rate = 32000 | |
duration = 10 | |
audio_values = musicgen_model.sample( | |
attributes=attributes, | |
sample_rate=sample_rate, | |
duration=duration, | |
) | |
output_audio = audio_values.cpu().numpy().squeeze() | |
sf.write(output_path, output_audio, sample_rate) | |
return output_path | |
def musicgen_api(): | |
data = request.get_json() | |
prompt = data.get('prompt') | |
if not prompt: | |
return jsonify({"error": "Prompt is required"}), 400 | |
output_file = generate_music(prompt) | |
if output_file == "Music generation model not initialized.": | |
return jsonify({"error": "Music generation failed"}), 500 | |
with open(output_file, 'rb') as f: | |
audio_content = f.read() | |
return send_file(io.BytesIO(audio_content), mimetype="audio/wav", as_attachment=True, download_name="output.wav") | |