python-3.x 重新加入分离的音频段时出现问题

gcxthw6b  于 2022-12-15  发布在  Python
关注(0)|答案(1)|浏览(120)

我正在编写一个脚本,将音频段拆分为2个第二子段,然后重新连接它们。最终目的是在重新连接它们之前对每个段应用一个变换函数,但此时我只是尝试重新连接这些段,而不执行该变换
我正在执行下面的代码:

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
    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,但得到了相同的结果
output file
非常感谢你的阅读,我欢迎任何建议

ccrfmcuu

ccrfmcuu1#

奇怪的是,这个问题似乎是由于在由empty()方法生成的段的顶部合并段而产生的,通过这个调整,我能够使它工作

output = songsegs[0]
for n in range(1,len(songsegs)):
    new_segment = songsegs[n] #leave_only_peaks(songsegs[n])
    #print(new_segment)
    output = output + songsegs[n]
    sys.stdout.write("\r%i segments processed" % n)
    sys.stdout.flush()

还是很想知道你对此的看法,谢谢!

相关问题