使用avconv时wav的样本数量不一致

时间:2016-07-23 13:18:34

标签: wav avconv sample-rate

我需要制作一些一致的音乐样本。 有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,以生成一致的数据样本?

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