在 python 中拆分具有不同开始和结束持续时间的 wav 文件
split wav file in python with different start and end duration
我有很多 .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
函数执行此操作?或者我可以使用任何其他功能来执行此操作吗?
来自 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]]
我有很多 .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
函数执行此操作?或者我可以使用任何其他功能来执行此操作吗?
来自 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]]