3

AVAudioRecorder.peakPowerForChannel(0) から -70 から約 10 までの振幅値を取得しています。0 から 120 までのスケールの値が必要です。オーディオ全体から振幅の最大値を取得する必要があります。インターネットでこのコードを見た

var numver = 20 * log10(audioRecorder.peakPowerForChannel(0))

しかし、これは値nan(数値ではありません)を与えます。正の範囲の振幅の値を取得するにはどうすればよいですか。

4

1 に答える 1

3

関数 peakPowerForChannel() は通常、-160 dB から 0 dB までの対数スケールのデシベル値を返します。

パワーが 0 dB のレベルを超えると、0 より大きい値を返すことがあります。

0 ~ 120 の値を線形スケールに変換するには、次の式を使用してください。

let db = audioRecorder.peakPowerForChannel(0)
let result = pow(10.0, db / 20.0) * 120.0

max() または min() 関数を使用して、120 を超える値を保持するか破棄するかを選択できます。

于 2016-08-12T13:37:07.133 に答える