标签: aubio

使用Aubio实时采样音频,无需停止录制音频和视频iPhone/iPad

  • Swift 2.2
  • Xcode 7.3
  • Aubio 0.4.3(aubio-0.4.3~const.iosuniversal_framework)
  • iOS 9.3目标
  • 测试设备 - iPad Air
  • bufferSize:2048
  • numSamplesInBuffer:1024
  • 采样率:44100

注意事项:

  • 我故意在我即将发布的代码示例中留下AVCaptureVideo代码,以便任何人更简单地阅读我的问题都不会忘记我尝试使用相同的录制AvCaptureSession捕获音频和视频并实时采样音频
  • 我已经完全测试了Aubio - > Onset,特别是使用了sample.caf(核心音频格式)声音文件以及使用AvAudioRecorder保存到文件(也是.caf)的录音,它可以在真实设备上正常工作(iPad Air) ).Aubio在测试中工作的一个非常重要的考虑因素是我使用new_aubio_source创建了一个基于URI或文件的样本.在我的"真实"版本中,我试图在不将音频数据保存到文件的情况下对声音缓冲区进行采样.
  • 使用Aubio的可能替代方法.如果我可以开始将AudioBuffers存储为有效的核心音频格式(.caf)文件,Aubio会工作,不确定使用基于文件的解决方案是否足够快,但经过数天的研究后我还没想出如何存储func captureOutput(captureOutput: AVCaptureOutput, didOutputSampleBuffer sampleBuffer: CMSampleBufferRef, fromConnection connection: AVCaptureConnection)CmSampleBufferRefs提交.这包括使用NSData,它永远不会将有效的.caf存储到文件中.
  • 与之前的警告相关,我还没有找到一种方法来使用AvFoundation超级有用的对象,如AVAudioRecorder(它将存储一个很好的.caf文件),因为它取决于你停止录制/捕获会话.
  • 如果您删除所有视频捕获代码,您可以在模拟器上运行,请在下面评论,如果您希望您没有Apple设备,我将准备一个模拟器版本的代码.必须在实时设备上测试相机功能.

以下代码成功启动了音频和视频AVCaptureSession,AVCaptureSession委托func captureOutput(captureOutput: AVCaptureOutput, didOutputSampleBuffer sampleBuffer: CMSampleBufferRef, fromConnection connection: AVCaptureConnection)正在为音频和视频调用.当一个.提供音频CMSampleBufferRef示例我试图将该示例转换为AudioBuffer并传递给Aubio方法aubio_onset_do.我正在使用单例aubio_onset COpaquePointer.

在这段代码中,我尝试用两种不同的方式用音频缓冲区数据调用aubio_onset_do.

  1. 方法1 - 下面代码的当前方式是let useTimerAndNSMutableData = false.这意味着在我的prepareAudioBuffer函数中我将audioBuffer.mData传递给sampleAudioForOnsets.这种方法永远不会失败,但也没有检测到任何启动,我怀疑因为样本量不够大.
  2. 方法2如果let useTimerAndNSMutableData = truesampleAudioForOnsets每隔1秒调用一次最终调用,允许有时间使用AudioBuffer.mDatas构建NSMutableData.使用这种方法,我试图给aubio_onset_do一个足够大的样本来检测onsets,使用一个计时器和NSMutableData这个方法导致aubio_onset_do很快崩溃:

    (EXC_BAD_ACCESS(code = 1))

    import UIKit
    import AVFoundation
    
    class …
    Run Code Online (Sandbox Code Playgroud)

audio objective-c ios aubio swift

9
推荐指数
0
解决办法
712
查看次数

如何在iOS中使用aubio框架?

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

到目前为止,我使用神奇的音频引擎来讲接收音频数据Core AudioAudioBufferList是这样的:

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

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

audio core-audio ios aubio audiobufferlist

7
推荐指数
1
解决办法
1712
查看次数

Hop_Size 在 aubio 中的含义

我正在尝试使用aubio(https://aubio.org)库进行音高检测。我正在尝试使用 C 语言的 API,该new_aubio_pitch函数的参数之一是hop_size. 是什么hop_size意思以及如何选择?

c audio aubio

7
推荐指数
1
解决办法
7568
查看次数

aubio是否可以为iPhone/Android/ARM交叉编译?

任何人都知道:

  1. 用于iPhone/ARM处理器的Aubio库的构建?

  2. 一个介绍到交叉编译的资源,所以我可以自己尝试一下?

iphone audio cross-compiling aubio

5
推荐指数
1
解决办法
1495
查看次数

Aubio用于Android上的BPM跟踪

我正在开发一个需要BPM跟踪的Android音频项目.我决定编写自己的不是一个好主意,在环顾四周之后,我发现了一些可以进行BPM跟踪的库,例如aubio,vamp,echonest等.出了很多,aubio似乎是一个不错的选择.问题是我找不到可以帮助理解我如何使用库的好文档,例如,哪种输入音频格式是兼容的(我应该在将音频传递给函数之前对其进行预处理)等.

你能指点我一些开源项目的文档或aubio的实现(在android上会是一个奖励).

如果你认为有更简单的方法(另一个算法/库)来移植到android(最好是在c),请告诉我.

谢谢.

c android audio-processing aubio beat-detection

5
推荐指数
1
解决办法
1506
查看次数

使用aubio读取文件时在Swift中的ExtAudioFileOpenURL中获取错误代码('wht?')

我正在使用aubio来分析音频文件,但是当我尝试像这样使用 new_aubio_source 函数时:

let source = new_aubio_source(StringToUnsafeMutablePointerChar_t(url.absoluteString), 0, 512)
Run Code Online (Sandbox Code Playgroud)

我总是收到这些错误。

AUBIO ERROR: source_apple_audio: Failed opening file:///var/mobile/Containers/Data/Application/C11B42E5-02B5-4373-8302-0728B2CB2296/Documents/music.m4a, error in ExtAudioFileOpenURL ('wht?')
AUBIO ERROR: source_wavread: Failed opening file:///var/mobile/Containers/Data/Application/C11B42E5-02B5-4373-8302-0728B2CB2296/Documents/music.m4a (System error: No such file or directory)
AUBIO ERROR: source: failed creating aubio source with file:///var/mobile/Containers/Data/Application/C11B42E5-02B5-4373-8302-0728B2CB2296/Documents/music.m4a at samplerate 0 with hop_size 512
Run Code Online (Sandbox Code Playgroud)

我 100% 确定路径是正确的,但我无法找出这些错误发生的原因。我认为问题出在第一条错误消息(source_apple_audio)中。

source_apple_audio 在这里定义:

source_apple_audio

其中使用了这个函数:ExtAudioFileOpenURL,并得到了错误代码('wht?')

非常感谢您的帮助!

extaudiofile ios aubio swift

5
推荐指数
1
解决办法
1437
查看次数

如何使用 aubio 找到 .wav 的节奏?

我想在 python 3.6 中检测音频文件的速度,但我不太了解关于 aubio 的文档。有人可以指出如何使用aubio或其他图书馆提取节奏吗?

python audio analysis tempo aubio

3
推荐指数
1
解决办法
3435
查看次数