gpt4 book ai didi

python - Python3 裁剪音频文件时出现 MemoryError

转载 作者:行者123 更新时间:2023-12-01 08:02:05 25 4
gpt4 key购买 nike

我正在尝试使用 pydub 模块从一些有声读物的章节中修剪一些介绍/结尾音频。所有文件的大小都在 9-19MB 范围内。它设法执行一些文件,然后返回 MemoryError。我有 8BG 的 RAM,所以我想我一定是做了一些非常糟糕的事情才导致了这种情况。

我在关闭所有其他程序的情况下运行它,没有任何区别。我尝试在任务管理器中查看内存使用情况。通常在 350MB 左右,偶尔会达到 900-1000MB,特别是在每个文件的末尾。

from pydub import AudioSegment
import os, eyed3

os.chdir(r'C:\Users\User\Music\audiobooks podcasts\Narnia\Edit Testing')

NarniaList = os.listdir()

for i in NarniaList[:10]:
print('Ammending ' + i + '...')
track = AudioSegment.from_mp3(i)
newcut = track[75000:-59000]
newtitle = 'New'+i
newcut.export(newtitle,format="mp3")
audiofile = eyed3.load(i)
newfile = eyed3.load(newtitle)
newfile.tag.artist = audiofile.tag.artist
newfile.tag.album = audiofile.tag.album
newfile.tag.title = audiofile.tag.title
newfile.tag.save()

它每次至少管理2个文件,我最好的是5个。据我所知,我不会在完成后打开以前的文件,但我完全是新手,所以我不太确定。非常感谢任何建议。

最佳答案

代码泄漏内存的一个地方是:

newcut.export(newtitle,format="mp3")

export 返回文件句柄。现在,文档说将 AudioSegment 对象写入文件 - 返回输出文件的文件句柄(不过,您不必对它执行任何操作)。,据我所知,这是不正确的,如所解释的在 this bug report 。文件句柄必须关闭。

目前,在我看来,来自 export 的所有字节都在泄漏。由于您正在加载 mp3,所以数量很多 - 并且您会遇到内存错误。

如果这不起作用,请执行以下操作:

import tracemalloc
from pydub import AudioSegment
import os, eyed3

tracemalloc.start()

os.chdir(r'C:\Users\User\Music\audiobooks podcasts\Narnia\Edit Testing')

NarniaList = os.listdir()

for i in NarniaList[:2]:
print('Ammending ' + i + '...')
track = AudioSegment.from_mp3(i)
newcut = track[75000:-59000]
newtitle = 'New'+i
newcut.export(newtitle,format="mp3")
audiofile = eyed3.load(i)
newfile = eyed3.load(newtitle)
newfile.tag.artist = audiofile.tag.artist
newfile.tag.album = audiofile.tag.album
newfile.tag.title = audiofile.tag.title
newfile.tag.save()

snapshot = tracemalloc.take_snapshot()
top_stats = snapshot.statistics('lineno')

print("[ Top 10 ]")
for stat in top_stats[:10]:
print(stat)

处理两个音频文件后,这将为您提供前 10 位内存消耗者。

关于python - Python3 裁剪音频文件时出现 MemoryError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55689285/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com