Spaces:
Runtime error
Runtime error
from pytube import YouTube | |
import ffmpeg | |
from gradio_client import Client | |
import subprocess | |
import gradio as gr | |
client = Client("abidlabs/music-separation") | |
placeholder_url = "https://www.youtube.com/watch?v=bfATETsvqt4&ab_channel=MiniMuslims" | |
placeholder_file = "example_acapella_video.mp4" | |
def acapellify(url): | |
if url == placeholder_url: | |
return placeholder_file | |
yt = YouTube(url) | |
try: | |
video = yt.streams.get_highest_resolution() | |
video.download(max_retries=5) | |
except: | |
raise gr.Error("YouTube video could not be downloaded. Try clicking Submit again and make sure that the URL is correct.") | |
video_path = video.get_file_path() | |
subprocess.run(['ffmpeg', '-i', video_path, '-vn', '-c:a', 'copy', 'audio.m4a', '-y']) | |
result = client.predict( | |
'audio.m4a', | |
api_name="/predict" | |
) | |
subprocess.call(['ffmpeg', '-y', '-i', video_path, '-i', result[0], '-map', '0:v', '-map', '1:a', '-c:v', 'copy', '-c:a', 'aac', '-strict', 'experimental', 'acapella_video.mp4']) | |
return "acapella_video.mp4" | |
io = gr.Interface(acapellify, gr.Textbox(label="URL to YouTube video", value=placeholder_url), gr.Video(label="Acapella output")) | |
with gr.Blocks() as demo: | |
gr.Markdown("# Acapellify: Get a Vocals-only from any YouTube Video in 1 Click") | |
with gr.Row(): | |
with gr.Column(): | |
gr.Markdown("**Example Original Video**") | |
gr.Video("old_video.mp4") | |
with gr.Column(): | |
gr.Markdown("**Example Acapella Video**") | |
gr.Video(placeholder_file) | |
gr.Markdown("**Try it yourself:** (for now, I recommend short videos <3 minutes)") | |
io.render() | |
demo.launch() |