2

AVAudioEngineでリアルタイムマイク入力のfloatデータを取得しようとしています。fft と fft の後に特別なアルゴリズムを実行します。

コードをコンパイルすると、コンソールに次の出力が表示されます: 0x0000000000000000

私は何を間違っていますか?助けてくれてありがとう

float データを取得するコードは次のとおりです。

let audioEngine  = AVAudioEngine()


override func loadView() {
    super.loadView()

    let inputNode = audioEngine.inputNode
    let bus = 0
    inputNode!.installTapOnBus(bus, bufferSize: 2048, format: inputNode!.inputFormatForBus(bus)) {
        (buffer: AVAudioPCMBuffer!, time: AVAudioTime!) -> Void in
        print(buffer.floatChannelData[50])
    }

    audioEngine.prepare()
    do{
        try audioEngine.start()
    }catch{

        print("Error")

    }


}
4

1 に答える 1

2

floatChannelDataはポインターへのポインターであるため、最初のチャンネルが必要な場合 (ステレオ マイクを接続しない限り、iOS で取得できるのはこれだけです)、次のようにすることができます。

let firstChannel = buffer.floatChannelData[0]
let arr = Array(UnsafeBufferPointer(start: firstChannel, count: Int(buffer.frameLength)))
// Do something with your array of Floats
于 2015-11-16T01:29:59.620 に答える