PleaseWork / app.py
Plasmati's picture
Update app.py
01ac216 verified
raw
history blame
1.15 kB
pip install gradio
pip install librosa
import gradio as gr
import librosa
import numpy as np
from pydub import AudioSegment
# Function to synchronize vocal and beat
def synchronize_audio(vocal_file, beat_file):
# Load audio files
vocal_audio = AudioSegment.from_file(vocal_file, format="mp3")
beat_audio, sr = librosa.load(beat_file, sr=None)
# Convert vocal audio to numpy array
vocal_array = np.array(vocal_audio.get_array_of_samples())
# Resize beat to match vocal duration
beat_duration = len(vocal_array) / vocal_audio.frame_rate
beat_resized = librosa.effects.trim(beat_audio, duration=beat_duration)[0]
# Combine vocal and beat
synchronized_audio = vocal_array + beat_resized
return synchronized_audio
# Gradio Interface
iface = gr.Interface(
fn=synchronize_audio,
inputs=[
gr.File("Vocal File", type="audio", accept=".mp3"),
gr.File("Beat File", type="audio", accept=".mp3"),
],
outputs="audio",
live=True,
title="Audio Synchronization",
description="Upload a vocal file and a beat to synchronize them.",
)
# Launch Gradio interface
iface.launch()