python - 在具有不同开始和结束持续时间的python中拆分wav文件

标签 python wav pydub

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

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

我写了一个代码,每十秒分割一次音频文件,并使用与原始文件相同的文件名保存分割文件,扩展编号指定 block 号。例如,第一个 block 的 "originalFileName_00",第二个 block 的 "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 函数执行此操作?或者我可以使用任何其他功能来执行此操作吗?

最佳答案

来自 docs

AudioSegments are slicable using milliseconds. for example:

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

像这样的东西应该可以工作:

for filename in os.listdir(inputdir):
    save_file_name = filename[:-4]
    myaudio = AudioSegment.from_file(inputdir+"/"+filename, "wav") 

    for i in range(len(start_array)):
        chunk_data = myaudio[start_array[i]:start_array[i]+duration_array[i]]

关于python - 在具有不同开始和结束持续时间的python中拆分wav文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51060460/

相关文章:

python - 如何在python中编写多声道wav文件

python - 如何处理 Pandas 数据框中丢失的数据?

python - 是否有迭代方法来创建 tk.Frames 并配置它们?

python - Windows 中的 aiohttp Python 库是否支持 HTTPS?

python - 用python计算每日/每周/每月的增长

javascript - 动态创建的用于下载文件的 iframe 会触发带有 Firebug 的 onload 但并非没有

delphi - 以分钟/秒为单位获取wav音频的长度

c# - 如何在 c# 中使用 ffmpeg 向 wav 文件添加额外的 5 秒持续时间

python - pydub可以设置最大/最小音量吗?

python - 在 PyDub 中导出(但不保存到)音频文件?