【问题标题】:Issue on rejoining splitted AudioSegment重新加入拆分的 AudioSegment 的问题
【发布时间】: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 但得到了相同的结果

enter image description here

非常感谢您的阅读,我愿意接受任何建议

【问题讨论】:

    标签: python python-3.x pydub audiosegment


    【解决方案1】:

    代码有几个问题:

    song 变量被多次覆盖,所以前两行代码是多余的。 framecount 变量是在不使用 () 括号的情况下分配方法调用的结果。 max 变量被赋予了 song.max 属性的值,但是没有这样的属性。目前还不清楚代码试图用这个变量做什么。 leng 变量被赋予了 song.duration_seconds 属性的值,但没有这样的属性。目前还不清楚代码试图用这个变量做什么。 for 循环中使用了 countGlobal 变量,但它并未在代码中的任何地方定义。

    【讨论】:

      猜你喜欢
      • 2019-11-21
      • 1970-01-01
      • 2011-12-29
      • 1970-01-01
      • 2011-12-27
      • 2023-03-30
      • 1970-01-01
      • 2019-01-02
      • 1970-01-01
      相关资源
      最近更新 更多