Tippen Sie auf Mikrofon-Eingang Mit AVAudioEngine in Swift

Ich bin wirklich begeistert über die neue AVAudioEngine. Es scheint wie eine gute API-wrapper um die audio-Einheit. Leider ist die Dokumentation bisher nicht existent, und ich habe Probleme damit, ein einfaches Diagramm zu arbeiten.

Mithilfe der folgenden einfachen code zum einrichten einer audio-engine Grafik, Tippen Sie auf block nie aufgerufen. Es ahmt einige der Beispiel-code im Umlauf im web, obwohl diese auch nicht funktioniert.

let inputNode = audioEngine.inputNode
var error: NSError?
let bus = 0

inputNode.installTapOnBus(bus, bufferSize: 2048, format: inputNode.inputFormatForBus(bus)) { 
    (buffer: AVAudioPCMBuffer!, time: AVAudioTime!) -> Void in
    println("sfdljk")
}

audioEngine.prepare()
if audioEngine.startAndReturnError(&error) {
    println("started audio")
} else {
    if let engineStartError = error {
        println("error starting audio: \(engineStartError.localizedDescription)")
    }
}

Alle ich bin auf der Suche nach der raw-pcm-Puffer für die Analyse. Ich brauche keine Effekte oder die Ausgabe. Nach der WWDC sprechen "502 Audio-Engine in der Praxis", das setup sollte funktionieren.

Nun, wenn Sie wollen, um das erfassen von Daten aus der input-Knoten, können Sie einen Knoten Tippen Sie auf, und wir haben darüber gesprochen.

Aber was interessant an diesem Beispiel ist, wenn ich arbeiten wollte, nur mit dem input-node, sagen Sie einfach-capture-Daten aus dem Mikrofon und vielleicht untersuchen Sie, analysieren Sie in Echtzeit oder vielleicht schreiben Sie es aus, um die Datei, die ich direkt installieren können, Tippen Sie auf die Eingabe-Knoten.

Und Tippen Sie auf die Arbeit, ziehen die input-Knoten für Daten, Füllung es in den Puffer und dann wieder zurück an die Anwendung.

Sobald Sie den Daten, die Sie tun können, was Sie brauchen, zu tun.

Hier sind einige links, die ich ausprobiert:

  1. http://hondrouthoughts.blogspot.com/2014/09/avfoundation-audio-monitoring.html
  2. http://jamiebullock.com/post/89243252529/live-coding-audio-with-swift-playgrounds (SIGABRT Spielplatz auf startAndReturnError)

Edit: Dies ist die Implementierung basiert auf Thorsten Karrer ' s Vorschlag. Es funktioniert leider nicht.

class AudioProcessor {
    let audioEngine = AVAudioEngine()

    init(){
        let inputNode = audioEngine.inputNode
        let bus = 0
        var error: NSError?

        inputNode.installTapOnBus(bus, bufferSize: 2048, format:inputNode.inputFormatForBus(bus)) {
            (buffer: AVAudioPCMBuffer!, time: AVAudioTime!) -> Void in
                println("sfdljk")
        }

        audioEngine.prepare()
        audioEngine.startAndReturnError(nil)
        println("started audio")
    }
}
InformationsquelleAutor brodney | 2014-11-29
Schreibe einen Kommentar