Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检测声音在iOS中的持续时间_Ios_Swift - Fatal编程技术网

检测声音在iOS中的持续时间

检测声音在iOS中的持续时间,ios,swift,Ios,Swift,我正在使用AVFoundation中的音频计量,我想知道是否有办法计算出声音的长度。我的录音机设置如下: func startMeterTimer() { levelTimer?.invalidate() levelTimer = CADisplayLink(target: self, selector: "updateMeter") levelTimer?.frameInterval = 5 levelTimer?.addToRunLoop(NSRunLoop.

我正在使用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())!
}

record和startMeterTImer被调用,当我拍手时,即使我只拍手一次,也会检测到许多打印的拍手语句。我想知道是否有一种方法可以测量方法从第一次调用到最后一次调用的调用时间

使用
AudioRecorderdFinishRecording
委托方法,其参数之一是
AVAudioRecorder
的实例,该实例具有
currentTime
属性:

自录制开始以来的时间(以秒为单位)。 (只读)


如果每次调用
updateMeter()
时都要检查录制时间,请使用
audioRecorder?.currentTime

使用
audiorecorderdFinishRecording
委托方法,其参数之一是
AVAudioRecorder
的一个实例,该实例具有
currentTime
属性:

自录制开始以来的时间(以秒为单位)。 (只读)


如果要检查每次调用
updateMeter()
时的录制时间,请使用
audioRecorder败.TimeIntervals自1970年起
?我不知道这是否有效,因为我一直在录制等待用户发出的声音,无论是拍手还是吹向麦克风。所以我实际上从来没有叫过停止录音。我不知道这是否行得通,因为我一直在录音,等待用户的声音,无论是拍手还是吹入麦克风。所以我从来没有停止录音。