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()