首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用audioKit获取AKAmplitudeTracker振幅0.0

使用audioKit获取AKAmplitudeTracker振幅0.0
EN

Stack Overflow用户
提问于 2020-06-04 15:25:38
回答 1查看 88关注 0票数 0

我想要得到AKAmplitudeTracker的音量,但是要得到-inf,我出了什么问题,请帮帮忙。

代码语言:javascript
复制
    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()

=================

代码语言:javascript
复制
extension AKAmplitudeTracker {

    var volume: Decibel {
        return 20.0 * log10(amplitude)
    }
}

=================

OutPut打印(跟踪器。振幅)

代码语言:javascript
复制
0.0
EN

回答 1

Stack Overflow用户

发布于 2020-06-05 03:08:51

快速看一下,你似乎遵循了基本的设置,你似乎没有及时正确地跟踪生成的数据!振幅数据是在从麦克风进行计算的时间段内提供的,因此要查看它在时间线中的外观,可以使用计时器,如下所示:

代码语言:javascript
复制
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

  • Keep您的计时事件的引用,它将检查一段时间内的幅值计算计算闭包主体中的数据,属性持有值是.amplitude

  • The

  • 在示例中是打印akMicrophoneAmplitudeTracker

  • Keep

logger,使用.invalidate方法停止

您可能想要仔细检查代码的其他几件事是确保跟踪器是信号链的一部分,因为这是AVAudioEngine引擎的要求;我还注意到在其他人的代码中调用了AKAmplitudeTracker中的.start方法,如下所示:

代码语言:javascript
复制
akMicrophoneAmplitudeTracker.start()

最后,请记住,如果您通过Simulator进行测试,请查看主机的麦克风设置,并预期振幅可能与实际硬件不同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62189011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档