我想要得到AKAmplitudeTracker的音量,但是要得到-inf,我出了什么问题,请帮帮忙。
AKAudioFile.cleanTempDirectory()
AKSettings.audioInputEnabled = true
AKSettings.bufferLength = .medium
AKSettings.defaultToSpeaker = true
AKSettings.playbackWhileMuted = true
AKSettings.enableRouteChangeHandling = true
AKSettings.enableCategoryChangeHandling = true
AKSettings.enableLogging = true
do {
try AKSettings.setSession(category: .playAndRecord, with: .allowBluetoothA2DP)
} catch {
print("error \(error.localizedDescription)")
}
microphone = AKMicrophone()!
tracker = AKAmplitudeTracker(microphone)
booster = AKBooster(tracker, gain: 0)
AudioKit.output = booster
try AudioKit.start()=================
extension AKAmplitudeTracker {
var volume: Decibel {
return 20.0 * log10(amplitude)
}
}=================
OutPut打印(跟踪器。振幅)
0.0发布于 2020-06-05 03:08:51
快速看一下,你似乎遵循了基本的设置,你似乎没有及时正确地跟踪生成的数据!振幅数据是在从麦克风进行计算的时间段内提供的,因此要查看它在时间线中的外观,可以使用计时器,如下所示:
func reset() throws {
do {
self.timer.invalidate()
self.timer = nil
} catch {
throw error
}
}
func microphoneTracker() {
guard self.timer == nil else { return }
self.watcher()
let timer = Timer.scheduledTimer(withTimeInterval: 0.1, repeats: true) { _ in
log.info(self.akMicrophoneAmplitudeTracker.amplitude)
}
self.timer = timer
}将withTimeInterval更改为您希望检查振幅的频率。
我认为我放在那里的内容非常容易阅读,但我将用几个单词来分析它:
在属性中保留对计算的引用,这里我将其命名为akMicrophoneAmplitudeTracker
.amplitude
akMicrophoneAmplitudeTracker
的logger,使用.invalidate方法停止
您可能想要仔细检查代码的其他几件事是确保跟踪器是信号链的一部分,因为这是AVAudioEngine引擎的要求;我还注意到在其他人的代码中调用了AKAmplitudeTracker中的.start方法,如下所示:
akMicrophoneAmplitudeTracker.start()最后,请记住,如果您通过Simulator进行测试,请查看主机的麦克风设置,并预期振幅可能与实际硬件不同。
https://stackoverflow.com/questions/62189011
复制相似问题