如何使用Marsyas创建MEL滤波器组?

时间:2012-12-09 14:10:32

标签: c++ audio filter mel

我正在使用Marsyas库开发应用程序。

我将一些MarSystems添加到“系列”-MarSystem中。现在我想添加MEL或BARK 滤波器组 (带通滤波器)来计算之后每个频段的能量。我会使用“ TriangularFilterBank ”来解决此问题,但如何正确使用此MarSystem设置MEL滤波器组?

之后我想一次访问两个连续帧的每个波段 。你是怎么做到的?

所述方案的代码:

Marsyas::MarSystem *net = manager.create("Series", "net");
net->addMarSystem(manager.create("SoundFileSource","src"));

// ... 

net->addMarSystem(manager.create("Windowing", "ham")); // creates "frames"
net->addMarSystem(manager.create("Spectrum", "spec"));
net->addMarSystem(manager.create("PowerSpectrum", "powerSpec"));

// How to add a mel filter band here? <---

net->addMarSystem(manager.create("Energy", "en"));

// ...  

while (net->getctrl("SoundFileSource/src/mrs_bool/hasData")->to<Marsyas::mrs_bool>()) 
{
    // This processes one frame at a time at the moment:
    net->tick(); 
    Marsyas::mrs_realvec vec = net->getctrl("mrs_realvec/processedData")->to<Marsyas::mrs_realvec>(); 

    // How can I access the pocessed data of EACH band of WTO consecutive 
    // frames at ONCE here? <--    -

}

1.。)如何在系统中添加mel滤镜带?

2.。)如何一次访问两个连续窗口的每个频段的pocessed数据?

0 个答案:

没有答案