0

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

4

1 回答 1

0

avconv 不是很精确。应该有1秒的歌曲片段,实际上有0.983991秒。

为了解决这个问题,我们可能会使用 sox:

sox input.mp3 -r 44100 -c 1 output.wav  --show-progress trim 0 00:01

sox默认不支持mp3,所以我不得不安装

sudo apt-get install libsox-fmt-mp3
于 2016-07-23T17:44:25.423 回答