Spaces:
Running
Running
File size: 3,824 Bytes
2e66664 459a21c 2e66664 459a21c 2e66664 459a21c 2e66664 6fc042a 2e66664 6fc042a 2e66664 6fc042a 2e66664 |
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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
import gradio as gr
import torch
import soundfile as sf
import numpy as np
from inference import MasteringStyleTransfer
from utils import download_youtube_audio
from config import config
# Initialize MasteringStyleTransfer
args = type('Args', (), vars(config))()
mastering_transfer = MasteringStyleTransfer(args)
# # Initialize MasteringStyleTransfer
# args = type('Args', (), {
# "model_path": "models/mastering_converter.pt",
# "encoder_path": "models/effects_encoder.pt",
# "sample_rate": 44100,
# "path_to_config": "networks/configs.yaml"
# })()
# mastering_transfer = MasteringStyleTransfer(args)
def process_audio(input_audio, reference_audio, perform_ito):
# Process the audio files
output_audio, predicted_params, ito_output_audio, ito_predicted_params, _, sr, _ = mastering_transfer.process_audio(
input_audio, reference_audio, reference_audio, {}, perform_ito
)
# Save the output audio
sf.write("output_mastered.wav", output_audio.T, sr)
if ito_output_audio is not None:
sf.write("ito_output_mastered.wav", ito_output_audio.T, sr)
# Generate parameter output strings
param_output = mastering_transfer.get_param_output_string(predicted_params)
ito_param_output = mastering_transfer.get_param_output_string(ito_predicted_params) if ito_predicted_params is not None else "ITO not performed"
# Generate top 10 differences if ITO was performed
top_10_diff = mastering_transfer.get_top_10_diff_string(predicted_params, ito_predicted_params) if ito_predicted_params is not None else "ITO not performed"
return "output_mastered.wav", "ito_output_mastered.wav" if ito_output_audio is not None else None, param_output, ito_param_output, top_10_diff
def process_youtube(input_url, reference_url, perform_ito):
input_audio = download_youtube_audio(input_url)
reference_audio = download_youtube_audio(reference_url)
return process_audio(input_audio, reference_audio, perform_ito)
with gr.Blocks() as demo:
gr.Markdown("# Mastering Style Transfer Demo")
with gr.Tab("Upload Audio"):
input_audio = gr.Audio(label="Input Audio")
reference_audio = gr.Audio(label="Reference Audio")
perform_ito = gr.Checkbox(label="Perform ITO")
submit_button = gr.Button("Process")
output_audio = gr.Audio(label="Output Audio")
ito_output_audio = gr.Audio(label="ITO Output Audio")
param_output = gr.Textbox(label="Predicted Parameters", lines=10)
ito_param_output = gr.Textbox(label="ITO Predicted Parameters", lines=10)
top_10_diff = gr.Textbox(label="Top 10 Parameter Differences", lines=10)
submit_button.click(process_audio,
inputs=[input_audio, reference_audio, perform_ito],
outputs=[output_audio, ito_output_audio, param_output, ito_param_output, top_10_diff])
with gr.Tab("YouTube URLs"):
input_url = gr.Textbox(label="Input YouTube URL")
reference_url = gr.Textbox(label="Reference YouTube URL")
perform_ito_yt = gr.Checkbox(label="Perform ITO")
submit_button_yt = gr.Button("Process")
output_audio_yt = gr.Audio(label="Output Audio")
ito_output_audio_yt = gr.Audio(label="ITO Output Audio")
param_output_yt = gr.Textbox(label="Predicted Parameters", lines=10)
ito_param_output_yt = gr.Textbox(label="ITO Predicted Parameters", lines=10)
top_10_diff_yt = gr.Textbox(label="Top 10 Parameter Differences", lines=10)
submit_button_yt.click(process_youtube,
inputs=[input_url, reference_url, perform_ito_yt],
outputs=[output_audio_yt, ito_output_audio_yt, param_output_yt, ito_param_output_yt, top_10_diff_yt])
demo.launch() |