私はライブ分析のためにマイクバッファーからのPCMデータでshort[]
アレイを読み取るAndroidプロジェクトを持っています。この機能をiOS Swiftに変換する必要があります。 Androidのでは、それは非常に単純であり、このようになります。..IOSスウィフトリード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に関する多くのドキュメントを読んだことがあります。私が見つけたのはC++/Obj-CとBridging Swift Headerのソリューションでした。それはずっと先進的であり、私のために時代遅れです。
今の私は
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()
AVFoundation
とCAF-ファイルへのPCM-データを読み取ることができますしかし、それは私が探しているものではないのです(または?)。上記のアンドロイドread
機能を実現するエレガントな方法はありますか?私は、マイクロホンのバッファからサンプル配列を取得する必要があります。または、記録されたCAFファイルの読書をする必要がありますか?
ありがとうございます!簡単な説明やコード例で私を助けてください。 IOS用語では、ポイントサンプルと48kHzのフローティング気にしない場合、あなたはすぐにそうようにマイクからの音声データを取得することができ、まだ;-)
私は読書に短い要旨を掲載しましたここでSwift 2のRemoteIO Audio Unitを使用したオーディオサンプル:https://gist.github.com/hotpaw2/ba815fc23b5d642705f2b1dedfaf0107 – hotpaw2