File size: 984 Bytes
195d49a
4e32610
195d49a
4e32610
 
 
04a6916
4e32610
 
 
 
4bcadc0
4f812c8
4e32610
 
195d49a
4e32610
 
 
 
 
 
 
4bcadc0
4e32610
 
4bcadc0
4e32610
 
195d49a
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
from pytubefix import YouTube
import ffmpeg
from gradio_client import Client, handle_file
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(video_path):
    subprocess.run(['ffmpeg', '-i', video_path, '-vn', '-c:a', 'copy', 'audio.m4a', '-y'])

    result = client.predict(
        handle_file('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.Video(label="Original video"), gr.Video(label="Acapella output"))

with gr.Blocks() as demo:
    gr.Markdown("# Acapellify: Get a Vocals-only from any Video in 1 Click")
    io.render()
    
demo.launch()