requirements / app.py
Doubleupai's picture
Create app.py
0dead4a verified
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()