在python中以不同的开始和结束时间分割wav文件

时间:2018-06-27 10:27:40

标签: python wav pydub

我有很多.wav音频文件,我想根据对应的.wav文件可用的片段信息进行分割。下面是一个音频文件的片段信息的示例。数组中的数字以毫秒为单位指定。

start_array = [1285, 19967, 30227, 41823]
duration_array = [14423, 7437, 10000, 6454]

我编写了一个代码,该代码每十秒钟分割一次音频文件,然后将分割后的文件保存为与原始文件相同的文件名,并使用扩展名指定块号。例如,其"originalFileName_00"用于第一个块,"originalFileName_01"用于第二个块,依此类推。

下面是代码:

# read file from input dir and split them
for filename in os.listdir(inputdir):
    save_file_name = filename[:-4]
    myaudio = AudioSegment.from_file(inputdir+"/"+filename, "wav") 
    chunk_length_ms = 10000 # pydub calculates in millisec
    chunks = make_chunks(myaudio, chunk_length_ms) #Make chunks of ten sec
    # saving then to output dir.
    for i, chunk in enumerate(chunks):
        chunk_name = save_file_name+"_{0}.wav".format(i)
        #print(chunk_name)
        parts = chunk_name.split('_')  
        a = parts[-1].split('.')
        b = a[0]
        if(len(b) == 1):
            b = "0"+b
        chunk_name = parts[0]+"_"+parts[1]+"_"+b+".wav"
        #print(chunk_name)
        print "exporting", chunk_name
        chunk.export(outputdir+"/"+chunk_name, format="wav")

现在,我想根据片段的开始和结束(开始+持续时间会给我该片段的结束)信息来分割音轨。如何使用make_chunks函数执行此操作?还是我可以使用其他任何功能?

1 个答案:

答案 0 :(得分:1)

来自docs

  

AudioSegments的可分割时间为毫秒。例如:

data() {
    return {
       model: {
        date: ''
      },
      DatePickerFormat: 'dd/MM/yyyy'
    }
  }

类似的东西应该起作用:

a = AudioSegment.from_mp3(mp3file) 
first_second = a[:1000] # get the first second of an mp3 
slice = a[5000:10000] # get a slice from 5 to 10 seconds of an mp3