【发布时间】:2017-01-27 20:43:49
【问题描述】:
我正在编写一个应用程序来使用 iPhone 6 上的内置麦克风录制单声道音频。当配置为以 8000 Hz 录制时,这些应用程序可以正常工作。这是代码
// 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 Hz)进行录制。如果我将采样率设置为 1000 Hz,则应用以 8000 Hz 记录。
根据 Apple 的文档,
硬件采样率的可用范围取决于设备。它通常在 8000 到 48000 赫兹之间。
问题...是否可以使用AVAudioSession(或其他框架)以低采样率录制音频?
【问题讨论】:
-
你为什么不使用不同的格式,比如 aac 而不是未压缩的 pcm?如果您使用编解码器,文件大小将大大减少
-
我假设您真的需要 无损 记录 ~50-500Hz 范围内的频率(麦克风的近似限制高达 nyqvist 限制)?否则,这是一种非常糟糕的节省空间的方式。
标签: ios audio-recording avaudiosession