import gradio as gr
import os, subprocess
from pydub import AudioSegment

def convert(input_file):
    # 저장할 경로 지정
    path = "input/audio/"
    os.makedirs(path)

    # pydub를 사용하여 변환
    sound = AudioSegment.from_file(input_file.name)
    sound = sound.set_frame_rate(44100).set_channels(1)
    sound.export("input/audio/upload.wav", format="wav")

    model_name = "bmo-rev2"
    model_path = "models"
    keychange = "0"

    subprocess.run(['python', 'DDSP-SVC/main.py', '-i', "input/audio/upload.wav", '-m', f'{model_path}/{model_name}.pt', '-o', 'result.wav', '-k', keychange, '-eak', '0'])
    
    # pydub를 사용하여 변환
    sound = AudioSegment.from_wav("result.wav")
    sound.export("result.mp3", format="mp3", codec="libmp3lame", bitrate="128k")

    return "result.mp3"

iface = gr.Interface(fn=convert, inputs=gr.File(label="Upload Input Voice"), outputs=gr.File(label="Download Result"))
iface.launch()