我有一個Android項目,通過麥克風緩衝區中的PCM數據讀取short[]
陣列進行實時分析。我需要將此功能轉換爲iOS Swift。在Android中是非常簡單的,看起來像這樣..IOS Swift讀取PCM緩衝區
import android.media.AudioFormat;
import android.media.AudioRecord;
...
AudioRecord recorder = new AudioRecord(MediaRecorder.AudioSource.DEFAULT, someSampleRate, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, AudioRecord.getMinBufferSize(...));
recorder.startRecording();
後,我閱讀
recorder.read(data, offset, length); //data is short[]
緩存(這就是我要找的)
文檔:https://developer.android.com/reference/android/media/AudioRecord.html
我對Swift和iOS非常陌生。我已經閱讀了大量有關AudioToolkit,Core以及其他的文檔。我發現的只是C++/Obj-C和Bridging Swift Header解決方案。這對我來說很先進和過時。
現在我可以讀取PCM-數據爲CAF-文件與AVFoundation
settings = [
AVLinearPCMBitDepthKey: 16 as NSNumber,
AVFormatIDKey: Int(kAudioFormatLinearPCM),
AVLinearPCMIsBigEndianKey: 0 as NSNumber,
AVLinearPCMIsFloatKey: 0 as NSNumber,
AVSampleRateKey: 12000.0,
AVNumberOfChannelsKey: 1 as NSNumber,
]
...
recorder = try AVAudioRecorder(URL: someURL, settings: settings)
recorder.delegate = self
recorder.record()
但是這不是我要找的(或?)。有沒有一種優雅的方式來實現上述的android read
功能?我需要從麥克風緩衝區獲取樣本數組。或者我需要在記錄的CAF文件上進行閱讀?
非常感謝!請幫助我簡單的解釋或代碼示例。 iOS的術語不是我尚未;-)
我貼一個短要點上閱讀在Swift 2中使用RemoteIO Audio Unit進行音頻採樣:https://gist.github.com/hotpaw2/ba815fc23b5d642705f2b1dedfaf0107 – hotpaw2