Update app.py
Browse files
app.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
import gradio as gr
|
2 |
from huggingface_hub import InferenceClient
|
3 |
import PyPDF2
|
4 |
-
from PIL import Image, ImageFont, ImageDraw
|
5 |
import cv2
|
6 |
import numpy as np
|
7 |
from pydub import AudioSegment
|
@@ -16,6 +16,8 @@ import time
|
|
16 |
import requests
|
17 |
import zipfile
|
18 |
import os
|
|
|
|
|
19 |
|
20 |
# Инициализация клиента для модели HuggingFaceH4/zephyr-7b-beta
|
21 |
client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
|
@@ -209,6 +211,49 @@ def generate_text_image(text, font_file, font_size=40, bg_color="#FFFFFF", text_
|
|
209 |
image.save(tmp_file.name)
|
210 |
return tmp_file.name
|
211 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
212 |
# Создание интерфейса
|
213 |
with gr.Blocks() as demo:
|
214 |
# Заголовок с изображением
|
@@ -263,22 +308,35 @@ with gr.Blocks() as demo:
|
|
263 |
convert_button = gr.Button("Конвертировать")
|
264 |
convert_button.click(fn=convert_image, inputs=[img_input, img_format], outputs=img_output)
|
265 |
|
266 |
-
# Вкладка Felguk
|
267 |
-
with gr.Tab("Felguk
|
268 |
-
gr.Markdown("## Felguk
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
generate_button = gr.Button("Сгенерировать изображение")
|
275 |
image_output = gr.Image(label="Результат", type="filepath")
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
282 |
|
283 |
# Интерфейс чата
|
284 |
chat_interface = gr.ChatInterface(
|
|
|
1 |
import gradio as gr
|
2 |
from huggingface_hub import InferenceClient
|
3 |
import PyPDF2
|
4 |
+
from PIL import Image, ImageEnhance, ImageFont, ImageDraw
|
5 |
import cv2
|
6 |
import numpy as np
|
7 |
from pydub import AudioSegment
|
|
|
16 |
import requests
|
17 |
import zipfile
|
18 |
import os
|
19 |
+
import torchaudio
|
20 |
+
from transformers import pipeline
|
21 |
|
22 |
# Инициализация клиента для модели HuggingFaceH4/zephyr-7b-beta
|
23 |
client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
|
|
|
211 |
image.save(tmp_file.name)
|
212 |
return tmp_file.name
|
213 |
|
214 |
+
# Функция для улучшения качества изображения
|
215 |
+
def enhance_image(image, contrast_factor=1.5, brightness_factor=1.2, sharpness_factor=1.5):
|
216 |
+
if image is None:
|
217 |
+
return None
|
218 |
+
|
219 |
+
img = Image.open(image.name)
|
220 |
+
|
221 |
+
# Улучшение контраста
|
222 |
+
enhancer = ImageEnhance.Contrast(img)
|
223 |
+
img = enhancer.enhance(contrast_factor)
|
224 |
+
|
225 |
+
# Улучшение яркости
|
226 |
+
enhancer = ImageEnhance.Brightness(img)
|
227 |
+
img = enhancer.enhance(brightness_factor)
|
228 |
+
|
229 |
+
# Улучшение резкости
|
230 |
+
enhancer = ImageEnhance.Sharpness(img)
|
231 |
+
img = enhancer.enhance(sharpness_factor)
|
232 |
+
|
233 |
+
# Сохраняем изображение во временный файл
|
234 |
+
with tempfile.NamedTemporaryFile(delete=False, suffix=".jpg") as tmp_file:
|
235 |
+
img.save(tmp_file.name)
|
236 |
+
return tmp_file.name
|
237 |
+
|
238 |
+
# Функция для обрезки аудио
|
239 |
+
def trim_audio(file, start_time: float, end_time: float):
|
240 |
+
if file is None:
|
241 |
+
return "Файл не загружен."
|
242 |
+
|
243 |
+
audio = AudioSegment.from_file(file.name)
|
244 |
+
trimmed_audio = audio[start_time * 1000:end_time * 1000]
|
245 |
+
|
246 |
+
# Сохраняем обрезанное аудио во временный файл
|
247 |
+
with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as tmp_file:
|
248 |
+
trimmed_audio.export(tmp_file.name, format="wav")
|
249 |
+
return tmp_file.name
|
250 |
+
|
251 |
+
# Функция для суммаризации текста
|
252 |
+
def summarize_text(text: str, max_length: int = 100):
|
253 |
+
summarizer = pipeline("summarization", model="facebook/bart-large-cnn")
|
254 |
+
summary = summarizer(text, max_length=max_length, min_length=30, do_sample=False)
|
255 |
+
return summary[0]['summary_text']
|
256 |
+
|
257 |
# Создание интерфейса
|
258 |
with gr.Blocks() as demo:
|
259 |
# Заголовок с изображением
|
|
|
308 |
convert_button = gr.Button("Конвертировать")
|
309 |
convert_button.click(fn=convert_image, inputs=[img_input, img_format], outputs=img_output)
|
310 |
|
311 |
+
# Вкладка Felguk-ImageEnhancer
|
312 |
+
with gr.Tab("Felguk-ImageEnhancer"):
|
313 |
+
gr.Markdown("## Felguk-ImageEnhancer: Улучшение качества изображений")
|
314 |
+
image_input = gr.File(label="Загрузите изображение", file_types=["image"])
|
315 |
+
contrast_slider = gr.Slider(label="Контраст", minimum=0.5, maximum=2.0, value=1.5)
|
316 |
+
brightness_slider = gr.Slider(label="Яркость", minimum=0.5, maximum=2.0, value=1.2)
|
317 |
+
sharpness_slider = gr.Slider(label="Резкость", minimum=0.5, maximum=2.0, value=1.5)
|
318 |
+
enhance_button = gr.Button("Улучшить изображение")
|
|
|
319 |
image_output = gr.Image(label="Результат", type="filepath")
|
320 |
+
enhance_button.click(fn=enhance_image, inputs=[image_input, contrast_slider, brightness_slider, sharpness_slider], outputs=image_output)
|
321 |
+
|
322 |
+
# Вкладка Felguk-AudioTrimmer
|
323 |
+
with gr.Tab("Felguk-AudioTrimmer"):
|
324 |
+
gr.Markdown("## Felguk-AudioTrimmer: Обрезка аудиофайлов")
|
325 |
+
audio_input = gr.File(label="Загрузите аудиофайл", file_types=[".mp3", ".wav"])
|
326 |
+
start_time = gr.Number(label="Начало обрезки (сек)", value=0)
|
327 |
+
end_time = gr.Number(label="Конец обрезки (сек)", value=10)
|
328 |
+
trim_button = gr.Button("Обрезать аудио")
|
329 |
+
audio_output = gr.Audio(label="Результат")
|
330 |
+
trim_button.click(fn=trim_audio, inputs=[audio_input, start_time, end_time], outputs=audio_output)
|
331 |
+
|
332 |
+
# Вкладка Felguk-TextSummarizer
|
333 |
+
with gr.Tab("Felguk-TextSummarizer"):
|
334 |
+
gr.Markdown("## Felguk-TextSummarizer: Суммаризация текста")
|
335 |
+
text_input = gr.Textbox(label="Введите текст для суммаризации", lines=5)
|
336 |
+
max_length_slider = gr.Slider(label="Максимальная длина текста", minimum=30, maximum=200, value=100)
|
337 |
+
summarize_button = gr.Button("Суммаризировать")
|
338 |
+
summary_output = gr.Textbox(label="Результат", interactive=False)
|
339 |
+
summarize_button.click(fn=summarize_text, inputs=[text_input, max_length_slider], outputs=summary_output)
|
340 |
|
341 |
# Интерфейс чата
|
342 |
chat_interface = gr.ChatInterface(
|