FILALIHicham commited on
Commit
e762271
·
1 Parent(s): ae7df43

add test app

Browse files
Files changed (1) hide show
  1. app.py +42 -0
app.py ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+
3
+ with gr.Blocks() as demo:
4
+ track_count = gr.State(1)
5
+ add_track_btn = gr.Button("Add Track")
6
+
7
+ add_track_btn.click(lambda count: count + 1, track_count, track_count)
8
+
9
+ @gr.render(inputs=track_count)
10
+ def render_tracks(count):
11
+ audios = []
12
+ volumes = []
13
+ with gr.Row():
14
+ for i in range(count):
15
+ with gr.Column(variant="panel", min_width=200):
16
+ gr.Textbox(placeholder="Track Name", key=f"name-{i}", show_label=False)
17
+ track_audio = gr.Audio(label=f"Track {i}", key=f"track-{i}")
18
+ track_volume = gr.Slider(0, 100, value=100, label="Volume", key=f"volume-{i}")
19
+ audios.append(track_audio)
20
+ volumes.append(track_volume)
21
+
22
+ def merge(data):
23
+ sr, output = None, None
24
+ for audio, volume in zip(audios, volumes):
25
+ sr, audio_val = data[audio]
26
+ volume_val = data[volume]
27
+ final_track = audio_val * (volume_val / 100)
28
+ if output is None:
29
+ output = final_track
30
+ else:
31
+ min_shape = tuple(min(s1, s2) for s1, s2 in zip(output.shape, final_track.shape))
32
+ trimmed_output = output[:min_shape[0], ...][:, :min_shape[1], ...] if output.ndim > 1 else output[:min_shape[0]]
33
+ trimmed_final = final_track[:min_shape[0], ...][:, :min_shape[1], ...] if final_track.ndim > 1 else final_track[:min_shape[0]]
34
+ output += trimmed_output + trimmed_final
35
+ return (sr, output)
36
+
37
+ merge_btn.click(merge, set(audios + volumes), output_audio)
38
+
39
+ merge_btn = gr.Button("Merge Tracks")
40
+ output_audio = gr.Audio(label="Output", interactive=False)
41
+
42
+ demo.launch()