【发布时间】:2022-12-08 23:20:02
【问题描述】:
我正在编写一个脚本,该脚本将 AudioSegment 拆分为 2 个第二个子段,然后重新加入它们。这样做的最终目的是在重新加入每个片段之前对每个片段应用一个转换函数,但在这个时候我只是想重新加入片段并让那个 transfor 不在执行中
我正在执行以下代码:
song = Auseg.from_file(sys.argv[1])
song = song.set_channels(1)
song = song.set_frame_rate(12000)
fr = song.frame_rate
max = song.max
leng = song.duration_seconds
framecount = int(song.frame_count())
songsegs = song.dice(2) #split AudioSegment into a list of 2s segments
print(len(songsegs))
print(framecount," Frames")
print("Framerate: ", fr)
print("Preparing...")
output = Auseg.empty()
for n in range(0,len(songsegs)):
new_segment = songsegs[n] #leave_only_peaks(songsegs[n])
#print(new_segment)
output = output + new_segment
countGlobal += 1
sys.stdout.write("\r%i segments processed" % n)
sys.stdout.flush()
print("\nExporting as prepared.wav..")
#print(output.tobytes())
output.export("prepared.wav",format="wav")
我能够确认在单个片段上使用 export() 方法会按预期输出歌曲的 2s 部分,但是当使用上面的代码重新加入所有片段时(技术上应该返回原始歌曲)我得到这个奇怪的文件长达1600小时。我尝试了另一个连接 numpy 数组的实现,然后将结果转换回 AudioSegment 但得到了相同的结果
非常感谢您的阅读,我愿意接受任何建议
【问题讨论】:
标签: python python-3.x pydub audiosegment