Я пытаюсь получить значение децибела из AVAudio Recorder. Это мой код в настоящее время. У меня есть метод запуска рекордера, а затем метод для чтения значений децибел.Получение децибел из AVAudioRecorder
var recorder: AVAudioRecorder!
Recorder определен глобально, то здесь используется:
func init_recorder() -> Void
{
let recordersettings = [
AVFormatIDKey: Int(kAudioFormatAppleIMA4),
AVSampleRateKey: 44100,
AVNumberOfChannelsKey: 1 as NSNumber,
AVLinearPCMBitDepthKey: 16,
AVLinearPCMIsFloatKey: false,
AVLinearPCMIsBigEndianKey: false,
//AVEncoderAudioQualityKey: AVAudioQuality.High.rawValue
]
let filename = NSURL(fileURLWithPath: NSTemporaryDirectory().stringByAppendingString("tmp.caf"))
do
{
recorder = try AVAudioRecorder(URL: filename, settings: recordersettings)
recorder.meteringEnabled = true
recorder.prepareToRecord()
recorder.record()
recorder.updateMeters()
}
catch
{
print("error")
}
}
Затем, чтобы получить значение децибел у меня есть
func get_decibels() -> Float
{
recorder.updateMeters()
return recorder.averagePowerForChannel(0)
}
По какой-то причине это возвращающее значение -120.0 каждый раз это называется, и я не слишком уверен, почему. Я прочитал от http://b2cloud.com.au/tutorial/obtaining-decibels-from-the-ios-microphone/ и несколько других потоков переполнения стека, но большинство примеров, похоже, очень похожи на мои.
Любая помощь приветствуется, большое спасибо!
Возможный дубликат [AVAudioRecorder averagePowerForChannel всегда возвращает -120.0] (http://stackoverflow.com/questions/5022514/avaudiorecorder-averagepowerforchannel-always-returns-120-0) –