You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 15:38:22