マイク入力を記録して保持するアプリケーションに取り組んでいます。AVAudioRecorder
リアルタイムのオーディオ処理が必要なため、の使用はオプションではありませんでした。
AVAudioEngine
入力オーディオへの低レベル アクセスを提供するために使用されます。
let audioEngine = AVAudioEngine()
let inputNode = audioEngine.inputNode
let inputFormat = inputNode.inputFormat(forBus: 0)
inputNode.installTap(onBus: 0, bufferSize: AVAudioFrameCount(inputFormat.sampleRate * sampleInterval), format: inputFormat) { (buffer: AVAudioPCMBuffer, time: AVAudioTime) -> Void in
// sound preprocessing
// writing to audio file
audioFile.write(buffer.floatChannelData![0])
})
私たちの問題は、録音が非常に大きいことです。5 時間の録音の場合、出力オーディオ ファイルは.caf
フォーマットで 1.2GB です。
let audioFile = AVAudioFile(forWriting: recordingPath, settings: [:], commonFormat: .pcmFormatFloat32, interleaved: isInterleaved)
それに書き込むオーディオファイルを圧縮する良い方法はありますか?
デフォルトのサンプリング周波数は 44100Hz です。AVAudioMixerNode を使用して入力を 20Khz にダウンサンプリングします (この場合は低品質でも問題ありません) が、出力のサイズは許容範囲ではありません。
録音には、バックグラウンド ノイズの大きなセグメントが含まれています。
助言がありますか?