从Apple Watch的麦克风进行实时FFT [关闭]。

问题描述 投票:-1回答:1

我正在开发一个应用程序,会在等待麦克风检测到某个频率时进行监听。据我研究,我认为最好的方法是对实时音频信号进行快速傅里叶变换(如果有人认为有更好的方法,我很想听听你的意见)。它在iOS上工作得很好,但我找不到让它在watchOS上工作的方法。

我实现了著名的 tempi-fft 在iOS和Swift 5上没有任何问题,问题在于不同的库在watchOS SDK上不存在或受到限制,因为我不能使用AudioUnit、AURenderCallback来检测缓冲区中的新数据,不能在WatchOS上调整AudioSession的首选缓冲区持续时间和采样率等等。我根本不是 "音频工程 "方面的专家,所以我不知道该如何解决这个问题。我研究了很多,但我没有在WatchOS上找到这方面的实现。

我只找到了这个项目 加速观察但这是几年前上传的,当时Accelerate框架还没有在watchOS上使用。

任何关于这个的帮助将是非常感激的。

swift fft watchos accelerate-framework vdsp
1个回答
1
投票

我在iOS应用商店里有一个针对Apple Watch的色度调谐器应用,完全在Apple Watch组件内部运行,可以做到这一点。

iOS应用和watchOS手表应用组件都使用一个AVAudioInputNode installTapOnBus来近乎实时地获取AVAudioPCMBuffer麦克风采样缓冲区。 然后,应用将音频采样数据块送入Goertzel例程或Accelerate框架vDSP FFT函数,进行进一步的频率分析。 然后,应用程序对FFT频率数据做进一步的处理,以检测和估计音频音调(通常与FFT频率幅度峰值有很大差异)。 然后使用SpriteKit以帧率对watchOS显示进行动画处理,输出结果。

© www.soinside.com 2019 - 2024. All rights reserved.