Helia
Helia

Reputation: 228

How to remove a silent chunk from split chunk in python?

I have some speech audio files that I want to split into 30 sec chunks, here is the code

# Split Audios to 30 sec
from pydub import AudioSegment
from pydub.utils import make_chunks

myaudio = AudioSegment.from_file('wav.audios/file_Name.wav' , "wav")
chunk_length_ms = 30000 # pydub calculates in millisec
chunks = make_chunks(myaudio, chunk_length_ms) #Make chunks of one sec

#Export all of the individual chunks as wav files

for i, chunk in enumerate(chunks):
    chunk_name = 'parts/chunk{0}.wav'.format(i)
    print("exporting", chunk_name)
    chunk.export(chunk_name, format="wav")

One chunk of the audio is always a silent chunk (the last one), I want python to detect it and delete it, so I end up with chunk of files that are not silent. How can I do that?

Upvotes: 1

Views: 567

Answers (1)

bhaskarc
bhaskarc

Reputation: 9521

Simply delete the last chunk using - del chunks[-1] as shown below.

from pydub import AudioSegment
from pydub.utils import make_chunks

myaudio = AudioSegment.from_file('wav.audios/file_Name.wav' , "wav")
chunk_length_ms = 30000 # pydub calculates in millisec
chunks = make_chunks(myaudio, chunk_length_ms)
del chunks[-1]

for i, chunk in enumerate(chunks):
    chunk_name = 'parts/chunk{0}.wav'.format(i)
    print("exporting", chunk_name)
    chunk.export(chunk_name, format="wav")

Upvotes: 2

Related Questions