Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何确保独立音频文件的帧大小一致?_Python_Python 2.7_Audio_Tensorflow_Librosa - Fatal编程技术网

Python 如何确保独立音频文件的帧大小一致?

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:

我目前正在尝试回归网络,以提取MFCC特征。网络的输入是采样和加帧的音频文件,我似乎在做这件事时遇到了一些问题,或者以一种方式来做,这样我就得到了一致的输出——这意味着一致的帧大小,因为它不能作为神经网络的输入

我目前正在对每个音频文件进行采样和分帧,如下所示:

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帧