检测声音在iOS中的持续时间
我正在使用AVFoundation中的音频计量,我想知道是否有办法计算出声音的长度。我的录音机设置如下:检测声音在iOS中的持续时间,ios,swift,Ios,Swift,我正在使用AVFoundation中的音频计量,我想知道是否有办法计算出声音的长度。我的录音机设置如下: func startMeterTimer() { levelTimer?.invalidate() levelTimer = CADisplayLink(target: self, selector: "updateMeter") levelTimer?.frameInterval = 5 levelTimer?.addToRunLoop(NSRunLoop.
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年起
?我不知道这是否有效,因为我一直在录制等待用户发出的声音,无论是拍手还是吹向麦克风。所以我实际上从来没有叫过停止录音。我不知道这是否行得通,因为我一直在录音,等待用户的声音,无论是拍手还是吹入麦克风。所以我从来没有停止录音。