7

我正在尝试检测 iOS 中音频文件的节拍、音高、起始和快速傅里叶变换 (FFT),我发现aubio提供了这些功能,并且iOS 框架也可用。

到目前为止,我正在使用The Amazing Audio Engine来接收这样的音频Core Audio数据AudioBufferList

id<AEAudioReceiver> receiver = [AEBlockAudioReceiver audioReceiverWithBlock:
                               ^(void                     *source,
                                 const AudioTimeStamp     *time,
                                 UInt32                    frames,
                                 AudioBufferList          *audio) {
    // I don't know how to use audio library.
}];

我可以从这里使用音频AudioBufferList检测节拍、音高、起始和快速傅立叶变换 (FFT)吗?如何检测?如果我走错了路,请给我任何建议?

4

4 回答 4

1

看看aubio下载页面,我相信他们已经将它编译成iOS框架,你可以直接导入到你的Xcode中。

参考:http ://aubio.org/download#ios

于 2014-03-26T06:01:00.700 回答
0

下载页面中有一个可与 iOS 一起使用的编译框架。

您已将库拖放到项目中,请确保您还具有以下框架:

  • 加速框架
  • AudioToolbox.framework

现在,如果您下载 Aubio 的源代码,您将拥有一个示例文件夹。在那里,您将找到用 C 编写的用于检测节拍、音高、起始(还有 FFT)的代码,由于 ObjC 是 C 的超集,因此也可以在您的项目中使用。

于 2015-06-28T22:55:44.007 回答
0

更新 所以看起来 Aubio 的 Cocoa Pod 不是最新的,在我的 Podfile 中,我使用此代码将 Aubio 添加到我的 Xcode 工作区:

pod 'aubio-iOS-SDK', '~> 0.4'

这将安装 Aubio 0.4.1,这不是最新的。一般来说,为 Aubio 查找文档是一个有点晦涩的过程,您需要将多个互联网搜索结果拼凑成一个工作解决方案。

对于 iOS,它更加模糊,如果你去Aubio 下载页面,你会发现 iOS 的 0.4.2 版本,滚动到底部,这是比 Aubio Cocoa Pod 更高的版本。然而,在这里,我在评论中发现了一个后来的 iOS Aubio 模块,0.4.3,这里是可能是最新的 iOS 的 Aubio 的直接下载:

https://aubio.org/bin/tmp/aubio-0.4.3~const.iosuniversal_framework.zip

正如我在原始答案中提到的那样,如果您使用的是 Swift,您仍然需要对 aubio.h 的桥接头引用

原始答案 有用于 aubio 的 CocoaPod,它确实使在 Swift 中引用 aubio 库变得简单。这是 iOS 的 Aubio CocoaPod:

https://cocoapods.org/pods/aubio-iOS-SDK

安装后,请注意,在 Swift 中,您不会编写:

import aubio 

在你的 Swift 文件的顶部。

您需要确保添加一个客观的 C 桥接头以将 aubio C 库公开给 Swift,在该桥接头中您编写以下内容:

#import <aubio/aubio.h>

现在 Swift 将可以访问 aubio 库/框架。

于 2016-07-18T22:47:47.667 回答
0

我的解决方案是将音频缓冲区写入文件,然后将文件发送到 aubio。每当您获得一个新的音频缓冲区时,您可以附加到文件(如果您想分析到目前为止的整个内容),或者如果您只对增量片段感兴趣,则只需覆盖。

于 2015-10-09T12:22:17.303 回答