Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
Remove silences
# From
# remove-silence-at-the-beginning-and-at-the-end-of-wave-files-with-pydub
from pydub import AudioSegment
def detect_leading_silence(sound, silence_threshold=-50.0, chunk_size=10):
sound is a pydub.AudioSegment
silence_threshold in dB
chunk_size in ms
iterate over chunks until you find the first one with sound
trim_ms = 0 # ms
while sound[trim_ms:trim_ms+chunk_size].dBFS < silence_threshold:
trim_ms += chunk_size
return trim_ms
if __name__ == '__main__':
import sys
sound = AudioSegment.from_file(sys.argv[1], format="wav")
start_trim = detect_leading_silence(sound)
end_trim = detect_leading_silence(sound.reverse())
duration = len(sound)
trimmed_sound = sound[start_trim:duration-end_trim]
trimmed_sound.export(sys.argv[1], format="wav")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment