music / app.py
vinni1484's picture
Update app.py
0793986 verified
import demucs.separate
import subprocess
import os
import uuid
import streamlit as st
from pydub import AudioSegment
import shutil
st.title("Karaoke")
url = st.text_input("Enter spotify song URL")
button = st.button("Process")
if button:
with st.spinner("Processing"):
uuid_str = str(uuid.uuid4())
cmd = f"spotdl {url} --output audio{uuid_str}"
subprocess.run(cmd, shell=True)
files = os.listdir(f"audio{uuid_str}")
audio_files = [
file for file in files if file.endswith((".mp3", ".wav", ".ogg"))
]
old_path = os.path.join(f"audio{uuid_str}", audio_files[0])
new_path = os.path.join(f"audio{uuid_str}", "audio.mp3")
os.rename(old_path, new_path)
demucs.separate.main(
[
"--mp3",
"--two-stems",
"vocals",
"-n",
"htdemucs",
"-d",
"cpu",
new_path,
"-o",
f"output{uuid_str}",
]
)
sound = AudioSegment.from_mp3(f"./output{uuid_str}/htdemucs/audio/no_vocals.mp3")
sound.export("output.mp3", format="mp3", bitrate="192k")
shutil.rmtree(f"audio{uuid_str}")
shutil.rmtree(f"output{uuid_str}")
st.audio("output.mp3", format="audio/mp3")