C++封装Essentia提取Mel特征为何慢于Python实现的Librosa?
Essentia提取Mel特征速度偏慢的问题排查
Essentia是一款基于C开发、带有Python封装的音频与音乐分析库。理论上,C实现的Essentia应比纯Python实现的Librosa更快,但我在提取大量Mel特征数据时,运行测试demo后发现处理长音频时Essentia慢于Librosa和Audioflux(一款基于C开发、带有Python封装的音频库)。
随后我采用文档中的Mel特征提取方法,速度依然很慢,怀疑是否存在使用方式错误。以下是我的测试代码:
import time import numpy as np import essentia import essentia.standard as es import librosa import audioflux as af frameSize = 2048 hopSize = 512 sample_rate = 32000 data_len = frameSize + hopSize * 999 windowing = es.Windowing(type='blackmanharris62', zeroPadding=0) spectrum = es.Spectrum(size=frameSize) melbands = es.MelBands(inputSize=frameSize // 2 + 1, sampleRate=sample_rate, numberBands=128,type='power',lowFrequencyBound=0, highFrequencyBound=16000, warpingFormula='slaneyMel') use_time = 0 for _ in range(10): audio = np.random.randn(data_len).astype(np.float32) pool = essentia.Pool() s = time.time() for frame in es.FrameGenerator(audio, frameSize=frameSize, hopSize=hopSize, startFromZero=True, lastFrameToEndOfFile=False): frame_spectrum = spectrum(windowing(frame)) frame_mel = melbands(frame_spectrum) pool.add('mel128', frame_mel) mel128 = np.array(pool['mel128']) use_time += time.time() - s # print(mel128.shape) print('essentia use time:', use_time)
测试耗时:essentia use time: 0.5148606300354004
请问是否因我的使用方式有误导致Essentia提取Mel特征速度偏慢?
内容的提问来源于stack exchange,提问作者dorian111
相关产品推荐
相关产品推荐

