Python 如何确保独立音频文件的帧大小一致?
我目前正在尝试回归网络,以提取MFCC特征。网络的输入是采样和加帧的音频文件,我似乎在做这件事时遇到了一些问题,或者以一种方式来做,这样我就得到了一致的输出——这意味着一致的帧大小,因为它不能作为神经网络的输入 我目前正在对每个音频文件进行采样和分帧,如下所示:Python 如何确保独立音频文件的帧大小一致?,python,python-2.7,audio,tensorflow,librosa,Python,Python 2.7,Audio,Tensorflow,Librosa,我目前正在尝试回归网络,以提取MFCC特征。网络的输入是采样和加帧的音频文件,我似乎在做这件事时遇到了一些问题,或者以一种方式来做,这样我就得到了一致的输出——这意味着一致的帧大小,因为它不能作为神经网络的输入 我目前正在对每个音频文件进行采样和分帧,如下所示: def load_sound_files(file_paths , data_input): raw_sounds = [] data_output = [] for fp in file_paths:
def load_sound_files(file_paths , data_input):
raw_sounds = []
data_output = []
for fp in file_paths:
y,sr = librosa.load(fp)
X = librosa.util.frame(y)
raw_sounds.append(X)
return raw_sounds
这意味着每个音频都会附加到一个列表中,每个列表中都有一个带帧音频文件的数组
[array([[frame],[frame],...,[frame]],dtype=float32), ...]
我试着打印这个
print raw_sounds[0].shape
print raw_sounds[1].shape
得到了这个结果
(2048, 121)
(2048, 96)
但是为什么我会得到这个结果呢?我没有改变任何关于框架选项的东西,为什么它们不同呢
如果没有办法保持一致,那么如何训练一个能够做到这一点的神经网络,并且输入不一致?音频文件是长度不同的序列 处理可变长度输入有多种方法。通常,您会将固定尺寸的输入多次输入到神经网络,每个音频帧一次。然后,网络使用诸如LSTM或seq2seq(其在变化中,但在contrib/seq2seq中)之类的体系结构从序列中学习。您还可以使用简单的DNN(前馈)体系结构。您的结果
(2048, 121)
(2048, 96)
给出帧长度和帧数。因此帧大小实际上是2048个样本的长度。两者之间的唯一区别是,第一个声音文件有121帧,第二个声音文件有96帧