ITO-Master / app.py
jhtonyKoo's picture
add config
459a21c
raw
history blame
3.82 kB
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()