使用 Audiokit v5 实现麦克风分析
Implementing microphone analysis with Audiokit v5
我需要 运行 我的应用程序在 Xcode 12 中使用 AudioKit 作为其库之一,这样我就可以为即将发布的 iOS 14 版本做好准备,因为 Xcode 12 包含对 类 的所有更改,需要我采纳。
然而,当前稳定版本 4.10.1 无法在 Xcode 12 中编译。然后我尝试安装最新的 v5-develop 版本 5.0.b1 并成功编译,但是 API 经历了重大变化 -> 例如 AudioKit.output
已弃用。我找不到有关这些更改的任何文档。我想那是因为它仍处于测试阶段。
我以前使用过从他们的麦克风分析示例中获取的代码:
func setup(completion: @escaping TaskHandler) {
// Setup the microphone
AKSettings.audioInputEnabled = true
mic = AKMicrophone()
tracker = AKFrequencyTracker(mic)
silence = AKBooster(tracker, gain: 0)
// Start the audio engine
AudioKit.output = silence
do {
try AudioKit.start()
completion(true, nil)
} catch {
completion(false, ErrorMessage.microphoneFailedToStart)
AKLog("AudioKit did not start!")
}
}
然后我像这样访问幅度和频率:
timer?.setEventHandler(handler: {
let currentAmp = self.tracker.amplitude
let currentFreq = self.tracker.frequency
// ... some processing here
}
在新版本中,我在 Xcode 中进行了深入研究,发现并尝试让 AKMicrophoneTrackerEngine
工作,我编译了它 运行:
let engine = AKMicrophoneTrackerEngine()
func setup(completion: @escaping TaskHandler) {
engine.start()
completion(true, nil)
}
// ..later in code
timer?.setEventHandler(handler: {
let currentAmp = self.engine.amplitude
let currentFreq = self.engine.frequency
// ... some processing here
}
但是频率(可能还有振幅)略有偏差。使用 4.10.1 播放 1000Hz 测试音产生的输出正好是 1000,但我的新方法产生的值约为 918。
任何人都可以指导我阅读文档或建议我如何使用新的 API 实现相同的功能吗?
谢谢。
https://github.com/AudioKit/AudioKit/issues/2267 这个问题应该可以通过更新到 AudioKit 4.11.1 pod 'AudioKit' , '~> 4.11.1'
来解决。此版本在 Xcode 12 中成功编译。您还需要将所有 AudioKit
实例替换为 AKManager
例如:AudioKit.output = ...
为 AKManager.output = ...
我需要 运行 我的应用程序在 Xcode 12 中使用 AudioKit 作为其库之一,这样我就可以为即将发布的 iOS 14 版本做好准备,因为 Xcode 12 包含对 类 的所有更改,需要我采纳。
然而,当前稳定版本 4.10.1 无法在 Xcode 12 中编译。然后我尝试安装最新的 v5-develop 版本 5.0.b1 并成功编译,但是 API 经历了重大变化 -> 例如 AudioKit.output
已弃用。我找不到有关这些更改的任何文档。我想那是因为它仍处于测试阶段。
我以前使用过从他们的麦克风分析示例中获取的代码:
func setup(completion: @escaping TaskHandler) {
// Setup the microphone
AKSettings.audioInputEnabled = true
mic = AKMicrophone()
tracker = AKFrequencyTracker(mic)
silence = AKBooster(tracker, gain: 0)
// Start the audio engine
AudioKit.output = silence
do {
try AudioKit.start()
completion(true, nil)
} catch {
completion(false, ErrorMessage.microphoneFailedToStart)
AKLog("AudioKit did not start!")
}
}
然后我像这样访问幅度和频率:
timer?.setEventHandler(handler: {
let currentAmp = self.tracker.amplitude
let currentFreq = self.tracker.frequency
// ... some processing here
}
在新版本中,我在 Xcode 中进行了深入研究,发现并尝试让 AKMicrophoneTrackerEngine
工作,我编译了它 运行:
let engine = AKMicrophoneTrackerEngine()
func setup(completion: @escaping TaskHandler) {
engine.start()
completion(true, nil)
}
// ..later in code
timer?.setEventHandler(handler: {
let currentAmp = self.engine.amplitude
let currentFreq = self.engine.frequency
// ... some processing here
}
但是频率(可能还有振幅)略有偏差。使用 4.10.1 播放 1000Hz 测试音产生的输出正好是 1000,但我的新方法产生的值约为 918。
任何人都可以指导我阅读文档或建议我如何使用新的 API 实现相同的功能吗?
谢谢。
https://github.com/AudioKit/AudioKit/issues/2267 这个问题应该可以通过更新到 AudioKit 4.11.1 pod 'AudioKit' , '~> 4.11.1'
来解决。此版本在 Xcode 12 中成功编译。您还需要将所有 AudioKit
实例替换为 AKManager
例如:AudioKit.output = ...
为 AKManager.output = ...