我需要制作一些一致的音乐样本。 有1秒长波,采样率为44100,我应该可以得到一个正好44100个样本的数组。不幸的是,事实并非如此。
我的方法如下:
1)产生output.wav,长度为1秒,采样率为44100
avconv -i input.mp3 -ss 00:01:00 -t 00:00:01 -ar 44100 -ac 1 output.wav
2)我读了文件并打印了样本数
meta,song = scipy.io.wavfile.read(path + "/" +file)
assert meta == 44100
print(len(song))
对于input.mp3和起始位置的不同选择,我得到不同的数字: 43776, 43776, 44928, 43776, 43776, 44928
我的问题是,为什么会这样?如何更改步骤1,以生成一致的数据样本?
答案 0 :(得分:0)
avconv不是很精确。歌曲片段应该有一秒钟,实际上有0.983991秒。
要解决这个问题,我们可能会使用sox:
clusterCenters()
sox默认不支持mp3,所以我必须安装
sox input.mp3 -r 44100 -c 1 output.wav --show-progress trim 0 00:01