Spaces:
Sleeping
Sleeping
Eyuvaraj
commited on
Commit
·
41cfa9c
1
Parent(s):
2266c59
heygen api video gen, timestamp clipping
Browse files- audio_clips/clip_0.wav +0 -0
- audio_clips/clip_1.wav +0 -0
- audio_clips/clip_10.wav +0 -0
- audio_clips/clip_11.wav +0 -0
- audio_clips/clip_12.wav +0 -0
- audio_clips/clip_13.wav +0 -0
- audio_clips/clip_14.wav +0 -0
- audio_clips/clip_15.wav +0 -0
- audio_clips/clip_16.wav +0 -0
- audio_clips/clip_17.wav +0 -0
- audio_clips/clip_18.wav +0 -0
- audio_clips/clip_19.wav +0 -0
- audio_clips/clip_2.wav +0 -0
- audio_clips/clip_20.wav +0 -0
- audio_clips/clip_21.wav +0 -0
- audio_clips/clip_22.wav +0 -0
- audio_clips/clip_23.wav +0 -0
- audio_clips/clip_24.wav +0 -0
- audio_clips/clip_25.wav +0 -0
- audio_clips/clip_26.wav +0 -0
- audio_clips/clip_27.wav +0 -0
- audio_clips/clip_28.wav +0 -0
- audio_clips/clip_29.wav +0 -0
- audio_clips/clip_3.wav +0 -0
- audio_clips/clip_30.wav +0 -0
- audio_clips/clip_31.wav +0 -0
- audio_clips/clip_32.wav +0 -0
- audio_clips/clip_4.wav +0 -0
- audio_clips/clip_5.wav +0 -0
- audio_clips/clip_7.wav +0 -0
- audio_clips/clip_8.wav +0 -0
- audio_clips/clip_9.wav +0 -0
- audio_clips/clips_metadata.json +194 -0
- clips_metadata.json +194 -0
- male_audio.m4a +0 -0
- process_audio.py +92 -0
audio_clips/clip_0.wav
ADDED
Binary file (15.2 kB). View file
|
|
audio_clips/clip_1.wav
ADDED
Binary file (6.38 kB). View file
|
|
audio_clips/clip_10.wav
ADDED
Binary file (9.84 kB). View file
|
|
audio_clips/clip_11.wav
ADDED
Binary file (14.3 kB). View file
|
|
audio_clips/clip_12.wav
ADDED
Binary file (13.1 kB). View file
|
|
audio_clips/clip_13.wav
ADDED
Binary file (11.9 kB). View file
|
|
audio_clips/clip_14.wav
ADDED
Binary file (12.5 kB). View file
|
|
audio_clips/clip_15.wav
ADDED
Binary file (17.6 kB). View file
|
|
audio_clips/clip_16.wav
ADDED
Binary file (17.3 kB). View file
|
|
audio_clips/clip_17.wav
ADDED
Binary file (11.2 kB). View file
|
|
audio_clips/clip_18.wav
ADDED
Binary file (19.5 kB). View file
|
|
audio_clips/clip_19.wav
ADDED
Binary file (18.1 kB). View file
|
|
audio_clips/clip_2.wav
ADDED
Binary file (7.34 kB). View file
|
|
audio_clips/clip_20.wav
ADDED
Binary file (11.9 kB). View file
|
|
audio_clips/clip_21.wav
ADDED
Binary file (16.9 kB). View file
|
|
audio_clips/clip_22.wav
ADDED
Binary file (15.3 kB). View file
|
|
audio_clips/clip_23.wav
ADDED
Binary file (16.9 kB). View file
|
|
audio_clips/clip_24.wav
ADDED
Binary file (22.9 kB). View file
|
|
audio_clips/clip_25.wav
ADDED
Binary file (22.2 kB). View file
|
|
audio_clips/clip_26.wav
ADDED
Binary file (15.6 kB). View file
|
|
audio_clips/clip_27.wav
ADDED
Binary file (22.9 kB). View file
|
|
audio_clips/clip_28.wav
ADDED
Binary file (13.1 kB). View file
|
|
audio_clips/clip_29.wav
ADDED
Binary file (16.7 kB). View file
|
|
audio_clips/clip_3.wav
ADDED
Binary file (7.48 kB). View file
|
|
audio_clips/clip_30.wav
ADDED
Binary file (11.5 kB). View file
|
|
audio_clips/clip_31.wav
ADDED
Binary file (52.3 kB). View file
|
|
audio_clips/clip_32.wav
ADDED
Binary file (19.5 kB). View file
|
|
audio_clips/clip_4.wav
ADDED
Binary file (11 kB). View file
|
|
audio_clips/clip_5.wav
ADDED
Binary file (5.13 kB). View file
|
|
audio_clips/clip_7.wav
ADDED
Binary file (14.4 kB). View file
|
|
audio_clips/clip_8.wav
ADDED
Binary file (6.19 kB). View file
|
|
audio_clips/clip_9.wav
ADDED
Binary file (18.2 kB). View file
|
|
audio_clips/clips_metadata.json
ADDED
@@ -0,0 +1,194 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{[
|
2 |
+
{
|
3 |
+
"clip_number": 0,
|
4 |
+
"start_time_ms": 0,
|
5 |
+
"end_time_ms": 316,
|
6 |
+
"file_name": "clip_0.wav"
|
7 |
+
},
|
8 |
+
{
|
9 |
+
"clip_number": 1,
|
10 |
+
"start_time_ms": 696,
|
11 |
+
"end_time_ms": 828,
|
12 |
+
"file_name": "clip_1.wav"
|
13 |
+
},
|
14 |
+
{
|
15 |
+
"clip_number": 2,
|
16 |
+
"start_time_ms": 1239,
|
17 |
+
"end_time_ms": 1391,
|
18 |
+
"file_name": "clip_2.wav"
|
19 |
+
},
|
20 |
+
{
|
21 |
+
"clip_number": 3,
|
22 |
+
"start_time_ms": 1822,
|
23 |
+
"end_time_ms": 1977,
|
24 |
+
"file_name": "clip_3.wav"
|
25 |
+
},
|
26 |
+
{
|
27 |
+
"clip_number": 4,
|
28 |
+
"start_time_ms": 2433,
|
29 |
+
"end_time_ms": 2661,
|
30 |
+
"file_name": "clip_4.wav"
|
31 |
+
},
|
32 |
+
{
|
33 |
+
"clip_number": 5,
|
34 |
+
"start_time_ms": 3067,
|
35 |
+
"end_time_ms": 3173,
|
36 |
+
"file_name": "clip_5.wav"
|
37 |
+
},
|
38 |
+
{
|
39 |
+
"clip_number": 7,
|
40 |
+
"start_time_ms": 3803,
|
41 |
+
"end_time_ms": 4103,
|
42 |
+
"file_name": "clip_7.wav"
|
43 |
+
},
|
44 |
+
{
|
45 |
+
"clip_number": 8,
|
46 |
+
"start_time_ms": 4450,
|
47 |
+
"end_time_ms": 4578,
|
48 |
+
"file_name": "clip_8.wav"
|
49 |
+
},
|
50 |
+
{
|
51 |
+
"clip_number": 9,
|
52 |
+
"start_time_ms": 5016,
|
53 |
+
"end_time_ms": 5394,
|
54 |
+
"file_name": "clip_9.wav"
|
55 |
+
},
|
56 |
+
{
|
57 |
+
"clip_number": 10,
|
58 |
+
"start_time_ms": 5772,
|
59 |
+
"end_time_ms": 5976,
|
60 |
+
"file_name": "clip_10.wav"
|
61 |
+
},
|
62 |
+
{
|
63 |
+
"clip_number": 11,
|
64 |
+
"start_time_ms": 6369,
|
65 |
+
"end_time_ms": 6665,
|
66 |
+
"file_name": "clip_11.wav"
|
67 |
+
},
|
68 |
+
{
|
69 |
+
"clip_number": 12,
|
70 |
+
"start_time_ms": 7080,
|
71 |
+
"end_time_ms": 7352,
|
72 |
+
"file_name": "clip_12.wav"
|
73 |
+
},
|
74 |
+
{
|
75 |
+
"clip_number": 13,
|
76 |
+
"start_time_ms": 7809,
|
77 |
+
"end_time_ms": 8056,
|
78 |
+
"file_name": "clip_13.wav"
|
79 |
+
},
|
80 |
+
{
|
81 |
+
"clip_number": 14,
|
82 |
+
"start_time_ms": 8503,
|
83 |
+
"end_time_ms": 8763,
|
84 |
+
"file_name": "clip_14.wav"
|
85 |
+
},
|
86 |
+
{
|
87 |
+
"clip_number": 15,
|
88 |
+
"start_time_ms": 9167,
|
89 |
+
"end_time_ms": 9532,
|
90 |
+
"file_name": "clip_15.wav"
|
91 |
+
},
|
92 |
+
{
|
93 |
+
"clip_number": 16,
|
94 |
+
"start_time_ms": 9951,
|
95 |
+
"end_time_ms": 10311,
|
96 |
+
"file_name": "clip_16.wav"
|
97 |
+
},
|
98 |
+
{
|
99 |
+
"clip_number": 17,
|
100 |
+
"start_time_ms": 10667,
|
101 |
+
"end_time_ms": 10900,
|
102 |
+
"file_name": "clip_17.wav"
|
103 |
+
},
|
104 |
+
{
|
105 |
+
"clip_number": 18,
|
106 |
+
"start_time_ms": 11242,
|
107 |
+
"end_time_ms": 11648,
|
108 |
+
"file_name": "clip_18.wav"
|
109 |
+
},
|
110 |
+
{
|
111 |
+
"clip_number": 19,
|
112 |
+
"start_time_ms": 11998,
|
113 |
+
"end_time_ms": 12374,
|
114 |
+
"file_name": "clip_19.wav"
|
115 |
+
},
|
116 |
+
{
|
117 |
+
"clip_number": 20,
|
118 |
+
"start_time_ms": 12782,
|
119 |
+
"end_time_ms": 13029,
|
120 |
+
"file_name": "clip_20.wav"
|
121 |
+
},
|
122 |
+
{
|
123 |
+
"clip_number": 21,
|
124 |
+
"start_time_ms": 13454,
|
125 |
+
"end_time_ms": 13805,
|
126 |
+
"file_name": "clip_21.wav"
|
127 |
+
},
|
128 |
+
{
|
129 |
+
"clip_number": 22,
|
130 |
+
"start_time_ms": 14243,
|
131 |
+
"end_time_ms": 14561,
|
132 |
+
"file_name": "clip_22.wav"
|
133 |
+
},
|
134 |
+
{
|
135 |
+
"clip_number": 23,
|
136 |
+
"start_time_ms": 14999,
|
137 |
+
"end_time_ms": 15351,
|
138 |
+
"file_name": "clip_23.wav"
|
139 |
+
},
|
140 |
+
{
|
141 |
+
"clip_number": 24,
|
142 |
+
"start_time_ms": 15744,
|
143 |
+
"end_time_ms": 16220,
|
144 |
+
"file_name": "clip_24.wav"
|
145 |
+
},
|
146 |
+
{
|
147 |
+
"clip_number": 25,
|
148 |
+
"start_time_ms": 16632,
|
149 |
+
"end_time_ms": 17093,
|
150 |
+
"file_name": "clip_25.wav"
|
151 |
+
},
|
152 |
+
{
|
153 |
+
"clip_number": 26,
|
154 |
+
"start_time_ms": 17443,
|
155 |
+
"end_time_ms": 17767,
|
156 |
+
"file_name": "clip_26.wav"
|
157 |
+
},
|
158 |
+
{
|
159 |
+
"clip_number": 27,
|
160 |
+
"start_time_ms": 18088,
|
161 |
+
"end_time_ms": 18564,
|
162 |
+
"file_name": "clip_27.wav"
|
163 |
+
},
|
164 |
+
{
|
165 |
+
"clip_number": 28,
|
166 |
+
"start_time_ms": 18970,
|
167 |
+
"end_time_ms": 19241,
|
168 |
+
"file_name": "clip_28.wav"
|
169 |
+
},
|
170 |
+
{
|
171 |
+
"clip_number": 29,
|
172 |
+
"start_time_ms": 19638,
|
173 |
+
"end_time_ms": 19986,
|
174 |
+
"file_name": "clip_29.wav"
|
175 |
+
},
|
176 |
+
{
|
177 |
+
"clip_number": 30,
|
178 |
+
"start_time_ms": 20328,
|
179 |
+
"end_time_ms": 20566,
|
180 |
+
"file_name": "clip_30.wav"
|
181 |
+
},
|
182 |
+
{
|
183 |
+
"clip_number": 31,
|
184 |
+
"start_time_ms": 21078,
|
185 |
+
"end_time_ms": 22167,
|
186 |
+
"file_name": "clip_31.wav"
|
187 |
+
},
|
188 |
+
{
|
189 |
+
"clip_number": 32,
|
190 |
+
"start_time_ms": 22752,
|
191 |
+
"end_time_ms": 23158,
|
192 |
+
"file_name": "clip_32.wav"
|
193 |
+
}
|
194 |
+
]}
|
clips_metadata.json
ADDED
@@ -0,0 +1,194 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[
|
2 |
+
{
|
3 |
+
"clip_number": 0,
|
4 |
+
"start_time_ms": 0,
|
5 |
+
"end_time_ms": 356,
|
6 |
+
"file_name": "1_cut.mp4"
|
7 |
+
},
|
8 |
+
{
|
9 |
+
"clip_number": 1,
|
10 |
+
"start_time_ms": 656,
|
11 |
+
"end_time_ms": 868,
|
12 |
+
"file_name": "2_cut.mp4"
|
13 |
+
},
|
14 |
+
{
|
15 |
+
"clip_number": 2,
|
16 |
+
"start_time_ms": 1199,
|
17 |
+
"end_time_ms": 1431,
|
18 |
+
"file_name": "3_cut.mp4"
|
19 |
+
},
|
20 |
+
{
|
21 |
+
"clip_number": 3,
|
22 |
+
"start_time_ms": 1782,
|
23 |
+
"end_time_ms": 2017,
|
24 |
+
"file_name": "4_cut.mp4"
|
25 |
+
},
|
26 |
+
{
|
27 |
+
"clip_number": 4,
|
28 |
+
"start_time_ms": 2393,
|
29 |
+
"end_time_ms": 2701,
|
30 |
+
"file_name": "5_cut.mp4"
|
31 |
+
},
|
32 |
+
{
|
33 |
+
"clip_number": 5,
|
34 |
+
"start_time_ms": 3027,
|
35 |
+
"end_time_ms": 3213,
|
36 |
+
"file_name": "6_cut.mp4"
|
37 |
+
},
|
38 |
+
{
|
39 |
+
"clip_number": 7,
|
40 |
+
"start_time_ms": 3763,
|
41 |
+
"end_time_ms": 4143,
|
42 |
+
"file_name": "7_cut.mp4"
|
43 |
+
},
|
44 |
+
{
|
45 |
+
"clip_number": 8,
|
46 |
+
"start_time_ms": 4410,
|
47 |
+
"end_time_ms": 4618,
|
48 |
+
"file_name": "8_cut.mp4"
|
49 |
+
},
|
50 |
+
{
|
51 |
+
"clip_number": 9,
|
52 |
+
"start_time_ms": 4976,
|
53 |
+
"end_time_ms": 5434,
|
54 |
+
"file_name": "9_cut.mp4"
|
55 |
+
},
|
56 |
+
{
|
57 |
+
"clip_number": 10,
|
58 |
+
"start_time_ms": 5732,
|
59 |
+
"end_time_ms": 6016,
|
60 |
+
"file_name": "10_cut.mp4"
|
61 |
+
},
|
62 |
+
{
|
63 |
+
"clip_number": 11,
|
64 |
+
"start_time_ms": 6329,
|
65 |
+
"end_time_ms": 6705,
|
66 |
+
"file_name": "20_cut.mp4"
|
67 |
+
},
|
68 |
+
{
|
69 |
+
"clip_number": 12,
|
70 |
+
"start_time_ms": 7040,
|
71 |
+
"end_time_ms": 7392,
|
72 |
+
"file_name": "30_cut.mp4"
|
73 |
+
},
|
74 |
+
{
|
75 |
+
"clip_number": 13,
|
76 |
+
"start_time_ms": 7769,
|
77 |
+
"end_time_ms": 8096,
|
78 |
+
"file_name": "40_cut.mp4"
|
79 |
+
},
|
80 |
+
{
|
81 |
+
"clip_number": 14,
|
82 |
+
"start_time_ms": 8463,
|
83 |
+
"end_time_ms": 8803,
|
84 |
+
"file_name": "50_cut.mp4"
|
85 |
+
},
|
86 |
+
{
|
87 |
+
"clip_number": 15,
|
88 |
+
"start_time_ms": 9127,
|
89 |
+
"end_time_ms": 9572,
|
90 |
+
"file_name": "60_cut.mp4"
|
91 |
+
},
|
92 |
+
{
|
93 |
+
"clip_number": 16,
|
94 |
+
"start_time_ms": 9911,
|
95 |
+
"end_time_ms": 10351,
|
96 |
+
"file_name": "70_cut.mp4"
|
97 |
+
},
|
98 |
+
{
|
99 |
+
"clip_number": 17,
|
100 |
+
"start_time_ms": 10627,
|
101 |
+
"end_time_ms": 10940,
|
102 |
+
"file_name": "80_cut.mp4"
|
103 |
+
},
|
104 |
+
{
|
105 |
+
"clip_number": 18,
|
106 |
+
"start_time_ms": 11202,
|
107 |
+
"end_time_ms": 11688,
|
108 |
+
"file_name": "90_cut.mp4"
|
109 |
+
},
|
110 |
+
{
|
111 |
+
"clip_number": 19,
|
112 |
+
"start_time_ms": 11958,
|
113 |
+
"end_time_ms": 12414,
|
114 |
+
"file_name": "11_cut.mp4"
|
115 |
+
},
|
116 |
+
{
|
117 |
+
"clip_number": 20,
|
118 |
+
"start_time_ms": 12742,
|
119 |
+
"end_time_ms": 13069,
|
120 |
+
"file_name": "12_cut.mp4"
|
121 |
+
},
|
122 |
+
{
|
123 |
+
"clip_number": 21,
|
124 |
+
"start_time_ms": 13414,
|
125 |
+
"end_time_ms": 13845,
|
126 |
+
"file_name": "13_cut.mp4"
|
127 |
+
},
|
128 |
+
{
|
129 |
+
"clip_number": 22,
|
130 |
+
"start_time_ms": 14203,
|
131 |
+
"end_time_ms": 14601,
|
132 |
+
"file_name": "14_cut.mp4"
|
133 |
+
},
|
134 |
+
{
|
135 |
+
"clip_number": 23,
|
136 |
+
"start_time_ms": 14959,
|
137 |
+
"end_time_ms": 15391,
|
138 |
+
"file_name": "15_cut.mp4"
|
139 |
+
},
|
140 |
+
{
|
141 |
+
"clip_number": 24,
|
142 |
+
"start_time_ms": 15704,
|
143 |
+
"end_time_ms": 16260,
|
144 |
+
"file_name": "16_cut.mp4"
|
145 |
+
},
|
146 |
+
{
|
147 |
+
"clip_number": 25,
|
148 |
+
"start_time_ms": 16592,
|
149 |
+
"end_time_ms": 17133,
|
150 |
+
"file_name": "17_cut.mp4"
|
151 |
+
},
|
152 |
+
{
|
153 |
+
"clip_number": 26,
|
154 |
+
"start_time_ms": 17403,
|
155 |
+
"end_time_ms": 17807,
|
156 |
+
"file_name": "18_cut.mp4"
|
157 |
+
},
|
158 |
+
{
|
159 |
+
"clip_number": 27,
|
160 |
+
"start_time_ms": 18048,
|
161 |
+
"end_time_ms": 18604,
|
162 |
+
"file_name": "19_cut.mp4"
|
163 |
+
},
|
164 |
+
{
|
165 |
+
"clip_number": 28,
|
166 |
+
"start_time_ms": 18930,
|
167 |
+
"end_time_ms": 19281,
|
168 |
+
"file_name": "100_cut.mp4"
|
169 |
+
},
|
170 |
+
{
|
171 |
+
"clip_number": 29,
|
172 |
+
"start_time_ms": 19598,
|
173 |
+
"end_time_ms": 20026,
|
174 |
+
"file_name": "1000_cut.mp4"
|
175 |
+
},
|
176 |
+
{
|
177 |
+
"clip_number": 30,
|
178 |
+
"start_time_ms": 20288,
|
179 |
+
"end_time_ms": 20606,
|
180 |
+
"file_name": "100000_cut.mp4"
|
181 |
+
},
|
182 |
+
{
|
183 |
+
"clip_number": 31,
|
184 |
+
"start_time_ms": 21038,
|
185 |
+
"end_time_ms": 22207,
|
186 |
+
"file_name": "Intro_cut.mp4"
|
187 |
+
},
|
188 |
+
{
|
189 |
+
"clip_number": 32,
|
190 |
+
"start_time_ms": 22712,
|
191 |
+
"end_time_ms": 23198,
|
192 |
+
"file_name": "Conclusion_cut.mp4"
|
193 |
+
}
|
194 |
+
]
|
male_audio.m4a
ADDED
Binary file (299 kB). View file
|
|
process_audio.py
ADDED
@@ -0,0 +1,92 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from pydub import AudioSegment
|
2 |
+
from pydub.silence import detect_silence
|
3 |
+
import os
|
4 |
+
import json
|
5 |
+
|
6 |
+
def split_audio_on_silence(input_audio_path, output_dir, silence_thresh=-40, min_silence_len=120, keep_silence=30):
|
7 |
+
"""
|
8 |
+
Splits an audio file into multiple clips when silence is detected and generates a JSON with timestamps.
|
9 |
+
|
10 |
+
:param input_audio_path: Path to the input audio file
|
11 |
+
:param output_dir: Directory to save the output clips
|
12 |
+
:param silence_thresh: Silence threshold in dBFS (default: -40 dBFS)
|
13 |
+
:param min_silence_len: Minimum silence length to detect in milliseconds (default: 500 ms)
|
14 |
+
:param keep_silence: Milliseconds of silence to retain at the beginning and end of each clip (default: 200 ms)
|
15 |
+
"""
|
16 |
+
# Load the audio file
|
17 |
+
audio = AudioSegment.from_file(input_audio_path)
|
18 |
+
|
19 |
+
# Detect silences in the audio
|
20 |
+
silence_ranges = detect_silence(audio, min_silence_len=min_silence_len, silence_thresh=silence_thresh)
|
21 |
+
|
22 |
+
# Adjust silence ranges to keep a bit of silence in each segment
|
23 |
+
adjusted_ranges = [(start - keep_silence, end + keep_silence) for start, end in silence_ranges]
|
24 |
+
adjusted_ranges = [(max(0, start), min(len(audio), end)) for start, end in adjusted_ranges]
|
25 |
+
|
26 |
+
# List to store clip metadata
|
27 |
+
clips_metadata = []
|
28 |
+
|
29 |
+
# If no silences are detected, save the whole audio as one clip
|
30 |
+
if not adjusted_ranges:
|
31 |
+
output_path = os.path.join(output_dir, "clip_0.wav")
|
32 |
+
audio.export(output_path, format="wav")
|
33 |
+
clips_metadata.append({
|
34 |
+
"clip_number": 0,
|
35 |
+
"start_time_ms": 0,
|
36 |
+
"end_time_ms": len(audio),
|
37 |
+
"file_name": "clip_0.wav"
|
38 |
+
})
|
39 |
+
print(f"No silences detected. Entire audio saved as {output_path}")
|
40 |
+
# Save metadata to JSON
|
41 |
+
with open(os.path.join(output_dir, "clips_metadata.json"), "w") as json_file:
|
42 |
+
json.dump(clips_metadata, json_file, indent=4)
|
43 |
+
return
|
44 |
+
|
45 |
+
# Split audio into clips based on silence
|
46 |
+
start_idx = 0
|
47 |
+
for i, (start, end) in enumerate(adjusted_ranges):
|
48 |
+
if start > start_idx:
|
49 |
+
clip = audio[start_idx:start]
|
50 |
+
file_name = f"clip_{i}.wav"
|
51 |
+
output_path = os.path.join(output_dir, file_name)
|
52 |
+
clip.export(output_path, format="wav")
|
53 |
+
print(f"Saved clip: {output_path}")
|
54 |
+
|
55 |
+
# Add metadata for the clip
|
56 |
+
clips_metadata.append({
|
57 |
+
"clip_number": i,
|
58 |
+
"start_time_ms": start_idx,
|
59 |
+
"end_time_ms": start,
|
60 |
+
"file_name": file_name
|
61 |
+
})
|
62 |
+
start_idx = end
|
63 |
+
|
64 |
+
# Save the last segment after the final silence
|
65 |
+
if start_idx < len(audio):
|
66 |
+
file_name = f"clip_{len(adjusted_ranges)}.wav"
|
67 |
+
output_path = os.path.join(output_dir, file_name)
|
68 |
+
audio[start_idx:].export(output_path, format="wav")
|
69 |
+
print(f"Saved clip: {output_path}")
|
70 |
+
|
71 |
+
# Add metadata for the last clip
|
72 |
+
clips_metadata.append({
|
73 |
+
"clip_number": len(adjusted_ranges),
|
74 |
+
"start_time_ms": start_idx,
|
75 |
+
"end_time_ms": len(audio),
|
76 |
+
"file_name": file_name
|
77 |
+
})
|
78 |
+
|
79 |
+
# Save metadata to JSON
|
80 |
+
json_path = os.path.join(output_dir, "clips_metadata.json")
|
81 |
+
with open(json_path, "w") as json_file:
|
82 |
+
json.dump(clips_metadata, json_file, indent=4)
|
83 |
+
print(f"Clip metadata saved to {json_path}")
|
84 |
+
|
85 |
+
|
86 |
+
if __name__ == "__main__":
|
87 |
+
input_audio = "male_audio.m4a"
|
88 |
+
output_directory = "audio_clips"
|
89 |
+
|
90 |
+
os.makedirs(output_directory, exist_ok=True)
|
91 |
+
|
92 |
+
split_audio_on_silence(input_audio, output_directory)
|