Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
##fix overlap
|
2 |
|
3 |
import spaces
|
4 |
import gradio as gr
|
@@ -11,14 +11,21 @@ from pathlib import Path
|
|
11 |
from pydub.silence import detect_nonsilent
|
12 |
from pydub import AudioSegment
|
13 |
|
14 |
-
def strip_silence(audio: AudioSegment, silence_thresh=-40, min_silence_len=100):
|
15 |
from pydub.silence import detect_nonsilent
|
|
|
16 |
nonsilent = detect_nonsilent(audio, min_silence_len=min_silence_len, silence_thresh=silence_thresh)
|
|
|
17 |
if not nonsilent:
|
18 |
-
|
19 |
-
|
20 |
start_trim = nonsilent[0][0]
|
21 |
end_trim = nonsilent[-1][1]
|
|
|
|
|
|
|
|
|
|
|
22 |
return audio[start_trim:end_trim]
|
23 |
|
24 |
|
|
|
1 |
+
##fix overlap, remove silence, leave a tiny bit of silence
|
2 |
|
3 |
import spaces
|
4 |
import gradio as gr
|
|
|
11 |
from pydub.silence import detect_nonsilent
|
12 |
from pydub import AudioSegment
|
13 |
|
14 |
+
def strip_silence(audio: AudioSegment, silence_thresh=-40, min_silence_len=100, silence_padding_ms=100):
|
15 |
from pydub.silence import detect_nonsilent
|
16 |
+
# Detect non-silent regions
|
17 |
nonsilent = detect_nonsilent(audio, min_silence_len=min_silence_len, silence_thresh=silence_thresh)
|
18 |
+
# If no speech is detected, return a small silent audio (not totally empty)
|
19 |
if not nonsilent:
|
20 |
+
return AudioSegment.silent(duration=silence_padding_ms)
|
21 |
+
# Start and end of the first and last non-silent segments
|
22 |
start_trim = nonsilent[0][0]
|
23 |
end_trim = nonsilent[-1][1]
|
24 |
+
# Add padding before and after the trimmed audio
|
25 |
+
# Ensure the padding doesn't exceed the trimmed boundaries
|
26 |
+
start_trim = max(0, start_trim - silence_padding_ms) # Ensure no negative start
|
27 |
+
end_trim = min(len(audio), end_trim + silence_padding_ms) # Ensure end doesn't go past audio length
|
28 |
+
# Return the trimmed and padded audio
|
29 |
return audio[start_trim:end_trim]
|
30 |
|
31 |
|