import gradio as gr from pydub import AudioSegment from ffmpy import FFmpeg from PIL import Image import torchvision.transforms as transforms import torch import numpy as np import sympy as sp import websockets import asyncio import tomlkit import svgwrite import sniffio import shellingham import semantic_version import ruff import python_multipart import pygments import pydantic_core import orjson import networkx as nx import mdurl import markupsafe import h11 import fonttools import exceptiongroup import annotated_types import aiofiles import uvicorn import pydantic import markdown_it_py import jinja2 import httpcore import anyio import starlette import rich import httpx import typer import safehttpx import gradio_client import fastapi # Функция для обработки аудио def process_audio(audio_file): """ Обрабатывает аудиофайл: увеличивает громкость на 10 dB. """ audio = AudioSegment.from_file(audio_file) audio = audio + 10 # Увеличиваем громкость output_file = "processed_audio.mp3" audio.export(output_file, format="mp3") return output_file # Функция для обработки изображений def process_image(image_file): """ Обрабатывает изображение: изменяет яркость. """ image = Image.open(image_file) transform = transforms.ToTensor() tensor_image = transform(image) tensor_image = tensor_image * 0.5 # Уменьшаем яркость image = transforms.ToPILImage()(tensor_image) output_file = "processed_image.png" image.save(output_file) return output_file # Функция для решения математического уравнения с использованием sympy def solve_equation(equation): """ Решает математическое уравнение с помощью sympy. """ x = sp.symbols('x') solution = sp.solve(equation, x) return str(solution) # Функция для создания графа с использованием networkx def create_graph(): """ Создает и визуализирует простой граф с помощью networkx. """ G = nx.Graph() G.add_edges_from([(1, 2), (2, 3), (3, 4), (4, 1)]) pos = nx.spring_layout(G) nx.draw(G, pos, with_labels=True) output_file = "graph.png" plt.savefig(output_file) return output_file # Функция для генерации SVG с использованием svgwrite def generate_svg(): """ Генерирует простой SVG файл с помощью svgwrite. """ dwg = svgwrite.Drawing('test.svg', profile='tiny') dwg.add(dwg.line((0, 0), (100, 100), stroke=svgwrite.rgb(10, 10, 16, '%'))) dwg.add(dwg.text('Hello, SVG!', insert=(10, 20))) dwg.save() return 'test.svg' # Создание интерфейсов Gradio audio_interface = gr.Interface( fn=process_audio, inputs=gr.Audio(type="filepath"), outputs=gr.Audio(type="filepath"), title="Обработка аудио", description="Увеличиваем громкость аудио на 10 dB." ) image_interface = gr.Interface( fn=process_image, inputs=gr.Image(type="filepath"), outputs=gr.Image(type="filepath"), title="Обработка изображений", description="Изменяем яркость изображения." ) equation_interface = gr.Interface( fn=solve_equation, inputs=gr.Textbox(label="Введите уравнение (например, x**2 - 4)"), outputs=gr.Textbox(label="Решение"), title="Решение уравнений", description="Решает математические уравнения с помощью sympy." ) graph_interface = gr.Interface( fn=create_graph, inputs=None, outputs=gr.Image(type="filepath"), title="Генерация графа", description="Создает и визуализирует простой граф с помощью networkx." ) svg_interface = gr.Interface( fn=generate_svg, inputs=None, outputs=gr.File(label="SVG файл"), title="Генерация SVG", description="Генерирует простой SVG файл с помощью svgwrite." ) # Объединение интерфейсов в одно приложение app = gr.TabbedInterface( [audio_interface, image_interface, equation_interface, graph_interface, svg_interface], ["Обработка аудио", "Обработка изображений", "Решение уравнений", "Генерация графа", "Генерация SVG"] ) # Запуск приложения if __name__ == "__main__": app.launch()