Doubleupai commited on
Commit
cfb22fa
·
verified ·
1 Parent(s): 732933e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +60 -14
app.py CHANGED
@@ -3,29 +3,75 @@ from pydub import AudioSegment
3
  import os
4
 
5
  def change_volume(audio_file, volume_change):
6
- # Загружаем аудиофайл
7
  audio = AudioSegment.from_file(audio_file)
8
-
9
- # Изменяем громкость
10
  audio = audio + volume_change
11
-
12
- # Сохраняем измененный аудиофайл
13
- output_file = "output_audio.mp3"
14
  audio.export(output_file, format="mp3")
15
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
  return output_file
17
 
18
  # Создаем интерфейс Gradio
19
  iface = gr.Interface(
20
- fn=change_volume,
 
 
 
 
 
 
21
  inputs=[
22
  gr.Audio(type="filepath", label="Загрузите аудиофайл"),
23
- gr.Slider(minimum=-20, maximum=20, step=1, label="Изменение громкости (dB)")
24
- ],
25
- outputs=gr.Audio(label="Измененный аудиофайл"),
26
- title="Изменение громкости аудио с помощью Pydub",
27
- description="Загрузите аудиофайл и измените его громкость."
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  )
29
 
30
- # Запускаем интерфейс
 
 
 
 
 
 
 
 
 
31
  iface.launch()
 
3
  import os
4
 
5
  def change_volume(audio_file, volume_change):
6
+ """Изменение громкости аудио"""
7
  audio = AudioSegment.from_file(audio_file)
 
 
8
  audio = audio + volume_change
9
+ output_file = "output_volume.mp3"
 
 
10
  audio.export(output_file, format="mp3")
11
+ return output_file
12
+
13
+ def trim_audio(audio_file, start_time, end_time):
14
+ """Обрезка аудио"""
15
+ audio = AudioSegment.from_file(audio_file)
16
+ trimmed_audio = audio[start_time * 1000:end_time * 1000] # Переводим секунды в миллисекунды
17
+ output_file = "output_trimmed.mp3"
18
+ trimmed_audio.export(output_file, format="mp3")
19
+ return output_file
20
+
21
+ def change_speed(audio_file, speed):
22
+ """Изменение скорости аудио"""
23
+ audio = AudioSegment.from_file(audio_file)
24
+ speeded_audio = audio.speedup(playback_speed=speed)
25
+ output_file = "output_speed.mp3"
26
+ speeded_audio.export(output_file, format="mp3")
27
+ return output_file
28
+
29
+ def convert_format(audio_file, output_format):
30
+ """Конвертация аудио в другой формат"""
31
+ audio = AudioSegment.from_file(audio_file)
32
+ output_file = f"output_converted.{output_format}"
33
+ audio.export(output_file, format=output_format)
34
  return output_file
35
 
36
  # Создаем интерфейс Gradio
37
  iface = gr.Interface(
38
+ fn=lambda audio_file, tool, volume_change, start_time, end_time, speed, output_format: (
39
+ change_volume(audio_file, volume_change) if tool == "volume" else
40
+ trim_audio(audio_file, start_time, end_time) if tool == "trim" else
41
+ change_speed(audio_file, speed) if tool == "speed" else
42
+ convert_format(audio_file, output_format) if tool == "convert" else
43
+ None
44
+ ),
45
  inputs=[
46
  gr.Audio(type="filepath", label="Загрузите аудиофайл"),
47
+ gr.Radio(
48
+ choices=["volume", "trim", "speed", "convert"],
49
+ label="Выберите инструмент",
50
+ value="volume"
51
+ ),
52
+ gr.Slider(minimum=-20, maximum=20, step=1, label="Изменение громкости (dB)", visible=True),
53
+ gr.Slider(minimum=0, maximum=100, step=1, label="Начало обрезки (секунды)", visible=False),
54
+ gr.Slider(minimum=0, maximum=100, step=1, label="Конец обрезки (секунды)", visible=False),
55
+ gr.Slider(minimum=0.5, maximum=2.0, step=0.1, label="Скорость воспроизведения", visible=False),
56
+ gr.Dropdown(
57
+ choices=["mp3", "wav", "ogg", "flac"],
58
+ label="Выберите формат для конвертации",
59
+ visible=False
60
+ )
61
+ ],
62
+ outputs=gr.Audio(label="Результат"),
63
+ title="Аудио инструменты с Pydub",
64
+ description="Используйте инструменты для изменения громкости, обрезки, изменения скорости или конвертации аудио."
65
  )
66
 
67
+ # Динамическое отображение элементов интерфейса
68
+ def update_interface(tool):
69
+ return [
70
+ gr.Slider(visible=tool == "volume"),
71
+ gr.Slider(visible=tool == "trim"),
72
+ gr.Slider(visible=tool == "trim"),
73
+ gr.Slider(visible=tool == "speed"),
74
+ gr.Dropdown(visible=tool == "convert")
75
+ ]
76
+
77
  iface.launch()