soundsauce-old / backend.py
mattricesound's picture
Init commit
3d13b69
from flask import Flask, render_template
from flask_socketio import SocketIO, emit
# from flask_cors import CORS
from audiocraft.models import musicgen
import torchaudio
import soundfile as sf
# app = Flask(__name__)
app = Flask(__name__, static_folder="../build", static_url_path="/")
app.debug = True
app.secret_key = "random secret key!"
# CORS(app)
# cors = CORS(app, resource={r"/*": {"origins": "*"}})
socketio = SocketIO(app, cors_allowed_origins="*")
print("Loading model...")
model = musicgen.MusicGen.get_pretrained("melody")
model.set_generation_params(duration=8)
@app.route("/")
def index():
print("HI")
return render_template("index.html")
@socketio.on("connect")
def connect():
print("Client connected")
stream_audio()
@socketio.on("disconnect")
def disconnect():
print("Client disconnected")
def stream_audio(data):
descriptions = ["Film score epic moment"]
melody, sr = torchaudio.load("./asitwas_vocals.wav")
print("Running inference...")
wav = model.generate_with_chroma(descriptions, melody[None].expand(1, -1, -1), sr)
model_sampling_rate = 32000
sf.write("output.wav", wav[0].numpy().T, model_sampling_rate)
chunk_size = 1024
for i in range(0, len(wav[0]), chunk_size):
chunk = wav[0][i : i + chunk_size]# * 500
emit("audio_chunk", chunk.tolist())
if __name__ == "__main__":
socketio.run(app)