这是一个很好的选择,这是为了完成这样的任务而建立的.

为了调整仪器,您需要做的是使用一种估算基准的算法

频率(F0)的声音.有很多算法可以做到这一点,是最新和最好的算法之一

是由Alain de Cheveigne开发的YIN算法.我最近添加了YIN算法

到玛尔斯,使用它是死的简单.

以下是您将在Marsyas中使用的基本代码:

MarSystemManager mng;

// A series to contain everything

MarSystem* net = mng.create("Series", "series");

// Process the data from the SoundFileSource with AubioYin

net->addMarSystem(mng.create("SoundFileSource", "src"));

net->addMarSystem(mng.create("ShiftInput", "si"));

net->addMarSystem(mng.create("AubioYin", "yin"));

net->updctrl("SoundFileSource/src/mrs_string/filename",inAudioFileName);

while (net->getctrl("SoundFileSource/src/mrs_bool/notEmpty")->to()) {

net->tick();

realvec r = net->getctrl("mrs_realvec/processedData")->to();

cout << r(0,0) << endl;

}

此代码首先创建一个我们将添加组件的Series对象.在一个系列中,每个组件

以串行方式接收先前MarSystem的输出.然后我们添加一个SoundFileSource,您可以进行输入

在.wav或.mp3文件中.然后我们添加输出重叠的音频块的ShiftInput对象

然后被馈送到AubioYin对象,该对象估计该音频块的基本频率.

然后我们告诉SoundFileSource我们要在AudioFileName中读取该文件.

然后while语句循环,直到SoundFileSource耗尽数据.在里面

循环,我们获取网络处理的数据并输出(0,0)元素,即

基频估计.

当您使用Marsyas的Python绑定时,这更容易.

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐