Я пишу приложение для записи одноканального звука со встроенным микрофоном на iPhone 6. Приложения работают так, как ожидалось, когда они настроены для записи на 8000 Гц. Вот кодКак записать на низком образце (около 1000 Гц) на iPhone
// Set up audio session
let session = AVAudioSession.sharedInstance()
// Configure audio session
do {
try session.setCategory(AVAudioSessionCategoryPlayAndRecord)
var recordSettings = [String:AnyObject]()
recordSettings[AVFormatIDKey] = Int(kAudioFormatLinearPCM) as AnyObject
// Set the sampling rate
recordSettings[AVSampleRateKey] = 8000.0 as AnyObject
recordSettings[AVNumberOfChannelsKey] = 1 as AnyObject
recorder = try AVAudioRecorder(url: outputFileURL, settings: recordSettings)
recorder?.delegate = self
recorder?.isMeteringEnabled = true
recorder?.prepareToRecord()
return true
}
catch {
throw Error.AVConfiguration
}
Для снижения требований к хранению, я хотел бы записать на гораздо более низкой частотой дискретизации (в идеале менее 1000 Гц). Если я установил частоту дискретизации до 1000 Гц, приложение записывается с частотой 8000 Гц.
Согласно документации Apple,
Доступный диапазон для частоты дискретизации аппаратных средств зависит от устройства. Обычно он колеблется от 8000 до 48000 герц.
Вопрос ... можно ли использовать AVAudioSession
(или другие рамки) для записи звука при низкой частоте дискретизации?
Почему вы не используете другой формат, такой как aac вместо несжатого pcm? Если вы используете кодек, размер файла резко сократится – manishg
Я предполагаю, что вам действительно нужна * без потерь * запись частот в диапазоне ~ 50-500 Гц (приблизительный предел микрофона до предела nyqvist)? В противном случае это довольно плохой способ экономии места. – Krumelur