[英]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.