我正在尝试使用 essentia 的(phyton 库)OnsetDetectionGlobal 获取音频文件的开始时间。不幸的是,当我尝试将此函数的输出传递给 Onsets 以及时获取位置时,我收到以下错误:
在 convertData raise TypeError('Cannot convert data from type %s (%s) to type %s' % TypeError: Cannot convert data from type VECTOR_REAL (<class 'numpy.ndarray'>) to type MATRIX_REAL
从错误来看,问题似乎是 Onsets 期望随着时间的推移会出现一系列 onsets 函数,而 OnsetDetectionGlobal 只返回一个......我试着玩一下大小(比如将输出重塑为矩阵)但无法解决它。这是导致错误的函数:
def infogain_onset(filename):
audio = MonoLoader(filename=filename)()#load audio
od1 = OnsetDetectionGlobal(method='infogain')#initialize onset algorithm
onsets = Onsets()#initialize onset postprocessing
onset_matrix=od1(audio)#obtain the onset function over time
#onset_matrix=np.reshape(onset_matrix,(len(onset_matrix),1))
onsets_infogain = onsets(onset_matrix, [1])#obtain the onsets location
return (onsets_infogain)