AKAmplitudeTracker 幅度使用 audioKit 获得 0.0

Posted

技术标签:

【中文标题】AKAmplitudeTracker 幅度使用 audioKit 获得 0.0【英文标题】:AKAmplitudeTracker amplitude getting 0.0 using audioKit 【发布时间】:2020-06-04 07:25:38 【问题描述】:

我想获取 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)
    

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

输出打印(跟踪器。振幅)

0.0

【问题讨论】:

【参考方案1】:

看了一眼,好像你按照基本的设置,你似乎没有正确地跟踪及时生成的数据!在从麦克风获取的计算的时间段内提供幅度数据,因此要查看时间线中的情况,您可以使用计时器,如下所示:

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 更改为您希望检查幅度的频率。

我认为我为您放在那里的内容非常可读,但我会用几句话将其分解:

在属性中保留AKAmplitudeTracker 的引用,这里我将其命名为akMicrophoneAmplitudeTracker 为您的定时事件保留一个参考,这将检查一段时间内的幅度值 计算闭包体中的数据,属性持有值为.amplitude 示例中的计算是一个logger,它打印.amplitude 根据需要,使用.invalidate方法停止timer

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

akMicrophoneAmplitudeTracker.start()

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

【讨论】:

以上是关于AKAmplitudeTracker 幅度使用 audioKit 获得 0.0的主要内容,如果未能解决你的问题,请参考以下文章

matlab 画短时平均幅度谱

苹果加速框架——约束幅度而不损失绝对值

单核CPU使用openmp,会大幅度提高计算性能吗?

谐波幅度大于基波幅度

JS 程序将给定的字符串沿指定方向旋转指定幅度

FPGA中使用vhdl核的DFT相位和幅度