File size: 1,226 Bytes
1c817fd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from flask import jsonify, send_file, request
from main import *
#from main import import musicgen_model, device
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 = 8
    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")