修剪音频 returns 个空文件 (Python)
Trimming audio returns empty files (Python)
考虑到不同的起点(秒),我正在尝试 trim 多个 .wav 文件,但是我制作的代码 returns 只有空文件。
这里是考虑到两个文件有两个不同起点的代码:
from pydub import AudioSegment
import os
path = "PATH"
files = os.listdir(path)
#start of first song starts at 20 seconds;
#start of second song starts at 15 seconds
startSec = [20,15]
endSec = []
for s in startSec:
endSec.append(s + 30) # adding thirty seconds
#Set duration in milliseconds
startTimes = []
for s in startSec:
startTime = s*1000
startTimes.append(startTime)
endTimes = []
for e in endSec:
endTime = e*1000
endTimes.append(endTime)
for s, e in startTimes, endTimes:
for f in files:
song = AudioSegment.from_wav(path+'\'+ f)
extract = song[s:e]
extract.export(f+'-extract.mp3', format="mp3")
有谁知道我拥有这些空文件可能会犯什么错误吗?
注意:这是我第一次使用这个库,所以我不知道这是最好的工具还是实现解决方案的最好方法
另一个版本:
for f in files:
song = AudioSegment.from_wav(path+'\'+ f)
extract = song[startTime:endTime]
extract.export(f+'-extract.mp3', format="mp3")
改变最后一个循环,我得到了两个文件,但都是根据定义的第二个起点(15 秒)开始,而不是第一个从 20 开始,第二个从 15 开始。
如果您检查原始版本中最后一个(外部)循环的输出 -
for s, e in startTimes, endTimes:
print(s, e)
你会看到输出是
20000 15000
50000 45000
所以你得到错误的开始和结束时间。
迭代这两个列表的正确方法是使用 zip() function -
for s, e in zip(startTimes, endTimes):
print(s, e)
产生:
20000 50000
15000 45000
所以你的循环应该是这样的 -
for f, s, e in zip(files, startTimes, endTimes):
song = AudioSegment.from_wav(path+'\'+ f)
extract = song[s:e]
extract.export(f+'-extract.mp3', format="mp3")
考虑到不同的起点(秒),我正在尝试 trim 多个 .wav 文件,但是我制作的代码 returns 只有空文件。
这里是考虑到两个文件有两个不同起点的代码:
from pydub import AudioSegment
import os
path = "PATH"
files = os.listdir(path)
#start of first song starts at 20 seconds;
#start of second song starts at 15 seconds
startSec = [20,15]
endSec = []
for s in startSec:
endSec.append(s + 30) # adding thirty seconds
#Set duration in milliseconds
startTimes = []
for s in startSec:
startTime = s*1000
startTimes.append(startTime)
endTimes = []
for e in endSec:
endTime = e*1000
endTimes.append(endTime)
for s, e in startTimes, endTimes:
for f in files:
song = AudioSegment.from_wav(path+'\'+ f)
extract = song[s:e]
extract.export(f+'-extract.mp3', format="mp3")
有谁知道我拥有这些空文件可能会犯什么错误吗?
注意:这是我第一次使用这个库,所以我不知道这是最好的工具还是实现解决方案的最好方法
另一个版本:
for f in files:
song = AudioSegment.from_wav(path+'\'+ f)
extract = song[startTime:endTime]
extract.export(f+'-extract.mp3', format="mp3")
改变最后一个循环,我得到了两个文件,但都是根据定义的第二个起点(15 秒)开始,而不是第一个从 20 开始,第二个从 15 开始。
如果您检查原始版本中最后一个(外部)循环的输出 -
for s, e in startTimes, endTimes:
print(s, e)
你会看到输出是
20000 15000
50000 45000
所以你得到错误的开始和结束时间。
迭代这两个列表的正确方法是使用 zip() function -
for s, e in zip(startTimes, endTimes):
print(s, e)
产生:
20000 50000
15000 45000
所以你的循环应该是这样的 -
for f, s, e in zip(files, startTimes, endTimes):
song = AudioSegment.from_wav(path+'\'+ f)
extract = song[s:e]
extract.export(f+'-extract.mp3', format="mp3")