繁体   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