How to split a .wav file into multiple .wav files?

后端 未结 2 1770
傲寒
傲寒 2020-12-03 01:16

I have a .wav file several minutes long that I would like to split into different 10 second .wav files.

This is my python code so far:

import wave
im         


        
2条回答
  •  悲&欢浪女
    2020-12-03 02:05

    I've written a class to simplify the whole process. Although it's for wav files.

    Here it is:

    from pydub import AudioSegment
    import math
    
    class SplitWavAudioMubin():
        def __init__(self, folder, filename):
            self.folder = folder
            self.filename = filename
            self.filepath = folder + '\\' + filename
            
            self.audio = AudioSegment.from_wav(self.filepath)
        
        def get_duration(self):
            return self.audio.duration_seconds
        
        def single_split(self, from_min, to_min, split_filename):
            t1 = from_min * 60 * 1000
            t2 = to_min * 60 * 1000
            split_audio = self.audio[t1:t2]
            split_audio.export(self.folder + '\\' + split_filename, format="wav")
            
        def multiple_split(self, min_per_split):
            total_mins = math.ceil(self.get_duration() / 60)
            for i in range(0, total_mins, min_per_split):
                split_fn = str(i) + '_' + self.filename
                self.single_split(i, i+min_per_split, split_fn)
                print(str(i) + ' Done')
                if i == total_mins - min_per_split:
                    print('All splited successfully')
    

    Usage

    folder = 'F:\\My Audios\\Khaled'
    file = 'Khaled Speech.wav'
    split_wav = SplitWavAudioMubin(folder, file)
    split_wav.multiple_split(min_per_split=1)
    

    That's it! It will split the single wav file into multiple wav files with 1 minute duration each. The last split audio may have less than 1-minute duration ;)

    Note: If you're in Mac/Linux, then change \\ to /

提交回复
热议问题