用于 AudioKit DSP 的 CoreML

Posted

技术标签:

【中文标题】用于 AudioKit DSP 的 CoreML【英文标题】:CoreML for AudioKit DSP 【发布时间】:2021-10-15 05:18:58 【问题描述】:

我一直在尝试确定是否可以集成 CoreML 模型以创建自定义 AudioKit 效果节点。我很好奇之前是否有人尝试过这个,以及他们是否有一些资源来确保我正确地解决了这个问题。

目前,我创建了一个自定义 AudioKit 节点,它加载我的模型并缓冲帧,直到有足够的帧可用于执行预测。一旦输入有足够的数据,它就会加载到 MLMultiarray 并传递给模型以执行预测......但我相信预测调用会阻塞音频线程,所以这绝对不是正确的方法......我想。

我不确定使用 GCD 是否合适,但我目前正在尝试对此进行测试...

希望有人可能有一些见解或资源来帮助实现这一目标,当然利用 DSP 的神经引擎会很棒 :) 到目前为止我所看到的一切都只是关于分类,而不是 DSP。

【问题讨论】:

【参考方案1】:

神经引擎的问题确实在于您无法控制它将阻塞音频线程的时间。我使用 CPU(不使用 Core ML)在音频线程中执行 ML。

【讨论】:

当您说您在音频线程中使用 CPU 而不是 coreml 进行 ML 时...我认为您不仅仅是将模型配置计算单元设置为 cpu...您能否详细说明您如何在音频线程中处理 ML?顺便说一句,爱你的书……非常有用! 我编写了自己的神经网络代码,因为这是知道您没有阻止任何东西的唯一方法。也许 cpuOnly 模式下的 Core ML 可以正常工作,或者您可以直接使用 BNNS 框架。但是不能保证这些东西不会在你背后分配任何东西,或者以其他方式阻塞。 Matthijs,非常感谢您详细说明这一点。听起来我们可能需要解决这个网络的实现问题,但首先我要尝试检查 BNNS,看看我们是否可以使用该框架获得某个地方。

以上是关于用于 AudioKit DSP 的 CoreML的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在 watchOS 上运行 AudioKit?

如何使用Audiokit对原始值而不是midi音符进行排序

如何在带有 AudioKit 4.6.1 的 AKMIDICallbackInstrument 回调中使用 AKMIDIStatus

AudioKit:调用“AudioKit.stop()”后无法重新启动 AudioKit 频率采样

Audiokit 修剪音频

AudioKit:根据陀螺数据/摆动手机改变声音?