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