Spaces:
Build error
Build error
import gradio as gr | |
from rembg import remove | |
from PIL import Image | |
import numpy as np | |
import librosa | |
import soundfile as sf | |
from spleeter.separator import Separator | |
import cv2 | |
from pytube import YouTube | |
import requests | |
# Функция для удаления фона с изображения | |
def remove_background(image): | |
output = remove(image) | |
return output | |
# Функция для удаления вокала из аудио | |
def remove_vocal(audio_path): | |
separator = Separator('spleeter:2stems') | |
separator.separate_to_file(audio_path, 'output') | |
return 'output/vocals.wav' | |
# Функция для удаления объекта на фото (пример: удаление объекта по маске) | |
def delete_object(image, mask): | |
image = np.array(image) | |
mask = np.array(mask) | |
result = cv2.inpaint(image, mask, inpaintRadius=3, flags=cv2.INPAINT_TELEA) | |
return Image.fromarray(result) | |
# Функция для загрузки видео с YouTube, Facebook, Vimeo, Dailymotion и Instagram | |
def download_video(url, platform): | |
if platform == "youtube": | |
yt = YouTube(url) | |
stream = yt.streams.get_highest_resolution() | |
stream.download(output_path="downloads", filename="video.mp4") | |
elif platform == "facebook": | |
# Используйте библиотеку youtube-dl или другую для загрузки с Facebook | |
pass | |
elif platform == "vimeo": | |
# Используйте библиотеку youtube-dl или другую для загрузки с Vimeo | |
pass | |
elif platform == "dailymotion": | |
# Используйте библиотеку youtube-dl или другую для загрузки с Dailymotion | |
pass | |
elif platform == "instagram": | |
# Используйте библиотеку youtube-dl или другую для загрузки с Instagram | |
pass | |
return "downloads/video.mp4" | |
# Создание интерфейса Gradio | |
with gr.Blocks() as demo: | |
with gr.Tab("AI Remove Background"): | |
image_input = gr.Image(label="Upload Image") | |
image_output = gr.Image(label="Result") | |
remove_bg_button = gr.Button("Remove Background") | |
remove_bg_button.click(remove_background, inputs=image_input, outputs=image_output) | |
with gr.Tab("Vocal Remover"): | |
audio_input = gr.Audio(label="Upload Audio", type="filepath") | |
audio_output = gr.Audio(label="Result") | |
remove_vocal_button = gr.Button("Remove Vocal") | |
remove_vocal_button.click(remove_vocal, inputs=audio_input, outputs=audio_output) | |
with gr.Tab("Delete Object in Photo"): | |
image_input_obj = gr.Image(label="Upload Image") | |
mask_input = gr.Image(label="Upload Mask", type="numpy") | |
image_output_obj = gr.Image(label="Result") | |
delete_object_button = gr.Button("Delete Object") | |
delete_object_button.click(delete_object, inputs=[image_input_obj, mask_input], outputs=image_output_obj) | |
with gr.Tab("Download Videos"): | |
url_input = gr.Textbox(label="Video URL") | |
platform_input = gr.Dropdown(label="Platform", choices=["youtube", "facebook", "vimeo", "dailymotion", "instagram"]) | |
download_button = gr.Button("Download Video") | |
download_output = gr.Video(label="Downloaded Video") | |
download_button.click(download_video, inputs=[url_input, platform_input], outputs=download_output) | |
demo.launch() |