Spaces:
Sleeping
Sleeping
import gradio as gr | |
from pydub import AudioSegment | |
import os | |
def change_volume(audio_file, volume_change): | |
"""Изменение громкости аудио""" | |
audio = AudioSegment.from_file(audio_file) | |
audio = audio + volume_change | |
output_file = "output_volume.mp3" | |
audio.export(output_file, format="mp3") | |
return output_file | |
def trim_audio(audio_file, start_time, end_time): | |
"""Обрезка аудио""" | |
audio = AudioSegment.from_file(audio_file) | |
trimmed_audio = audio[start_time * 1000:end_time * 1000] # Переводим секунды в миллисекунды | |
output_file = "output_trimmed.mp3" | |
trimmed_audio.export(output_file, format="mp3") | |
return output_file | |
def change_speed(audio_file, speed): | |
"""Изменение скорости аудио""" | |
audio = AudioSegment.from_file(audio_file) | |
speeded_audio = audio.speedup(playback_speed=speed) | |
output_file = "output_speed.mp3" | |
speeded_audio.export(output_file, format="mp3") | |
return output_file | |
def convert_format(audio_file, output_format): | |
"""Конвертация аудио в другой формат""" | |
audio = AudioSegment.from_file(audio_file) | |
output_file = f"output_converted.{output_format}" | |
audio.export(output_file, format=output_format) | |
return output_file | |
# Создаем интерфейс Gradio | |
iface = gr.Interface( | |
fn=lambda audio_file, tool, volume_change, start_time, end_time, speed, output_format: ( | |
change_volume(audio_file, volume_change) if tool == "volume" else | |
trim_audio(audio_file, start_time, end_time) if tool == "trim" else | |
change_speed(audio_file, speed) if tool == "speed" else | |
convert_format(audio_file, output_format) if tool == "convert" else | |
None | |
), | |
inputs=[ | |
gr.Audio(type="filepath", label="Загрузите аудиофайл"), | |
gr.Radio( | |
choices=["volume", "trim", "speed", "convert"], | |
label="Выберите инструмент", | |
value="volume" | |
), | |
gr.Slider(minimum=-20, maximum=20, step=1, label="Изменение громкости (dB)", visible=True), | |
gr.Slider(minimum=0, maximum=100, step=1, label="Начало обрезки (секунды)", visible=False), | |
gr.Slider(minimum=0, maximum=100, step=1, label="Конец обрезки (секунды)", visible=False), | |
gr.Slider(minimum=0.5, maximum=2.0, step=0.1, label="Скорость воспроизведения", visible=False), | |
gr.Dropdown( | |
choices=["mp3", "wav", "ogg", "flac"], | |
label="Выберите формат для конвертации", | |
visible=False | |
) | |
], | |
outputs=gr.Audio(label="Результат"), | |
title="Аудио инструменты с Pydub", | |
description="Используйте инструменты для изменения громкости, обрезки, изменения скорости или конвертации аудио." | |
) | |
# Динамическое отображение элементов интерфейса | |
def update_interface(tool): | |
return [ | |
gr.Slider(visible=tool == "volume"), | |
gr.Slider(visible=tool == "trim"), | |
gr.Slider(visible=tool == "trim"), | |
gr.Slider(visible=tool == "speed"), | |
gr.Dropdown(visible=tool == "convert") | |
] | |
iface.launch() |