簡體   English   中英

檢測iOS中的聲音有多長時間

[英]Detect how long a sound is in iOS

我在AVFoundation中使用音頻計量,我想知道是否有一種方法可以計算出聲音多長時間。 我的錄音機設置如下:

func startMeterTimer() {
    levelTimer?.invalidate()
    levelTimer = CADisplayLink(target: self, selector: "updateMeter")
    levelTimer?.frameInterval = 5
    levelTimer?.addToRunLoop(NSRunLoop.currentRunLoop(), forMode: NSRunLoopCommonModes)
}

func stopMeterTimer() {
    levelTimer?.invalidate()
    levelTimer = nil
}

func updateMeter() {
    readLevels()
    let avgPower = audioRecorder?.averagePowerForChannel(0)
    let peakPower = audioRecorder?.peakPowerForChannel(0)

    if peakPower >= -2 {
        print("CLAP DETECTED")
        soundLogicDelegate?.clapDetected()
    }
 //        print("\(avgPower) + \(peakPower)")
}

func record() -> Bool {
    return (audioRecorder?.record())!
}

記錄和startMeterTImer被調用,並且當我拍手時,即使我只拍過一次,我也會得到很多CLAP DETECTED的打印語句。 我想知道是否有一種方法可以衡量從第一次調用到最后一次調用該方法的時間。

使用audioRecorderDidFinishRecording委托方法,它的參數之一是具有currentTime屬性的AVAudioRecorder實例:

自錄制開始以來的時間(以秒為單位)。 (只讀)

如果您想在每次調用updateMeter()時檢查記錄時間,請使用audioRecorder?.currentTime

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM