AVAudioRecorder
をセットアップする。
import AVFAudio
let recorder = try AVAudioRecorder(url: fileURL, settings: [
// 例
AVFormatIDKey : kAudioFormatLinearPCM,
AVSampleRateKey : 44100,
AVNumberOfChannelsKey : 2,
])
// メータリングを有効
recorder.isMeteringEnabled = true
最新の値を取得する。
// recorderからの最大・平均入力値をリフレッシュ(最新値の取得時に必ず実行)
recorder.updateMeters()
// 0番チャンネルの最大・平均入力それぞれの値を取得(-160〜0のFloat型)
let peak = recorder.peakPower(forChannel: 0)
let average = recorder.averagePower(forChannel: 0)
print("Peak: \(peak), Average: \(average)")
これを繰り返し実行することで、以下のようにリアルタイムな値を取得できる。
Peak: -38.29653 dB, Average: -49.813396 dB
Peak: -38.29653 dB, Average: -45.75203 dB
Peak: -36.77163 dB, Average: -47.29889 dB
Peak: -36.77163 dB, Average: -46.575954 dB
Peak: -36.77163 dB, Average: -46.979954 dB
Peak: -22.248798 dB, Average: -22.248798 dB
Peak: -17.44955 dB, Average: -19.18833 dB
Peak: -13.695625 dB, Average: -19.736965 dB
Peak: -12.488851 dB, Average: -12.488851 dB
Peak: -12.488851 dB, Average: -12.966704 dB
recorder.isMeteringEnabled
を必ず true
に指定しておく必要がある点に注意。デフォルトでは false
のため、最小値を示す-160しか返ってこない。