Ich habe diesen Code, wo ich vom iPhone-Mikrofon eingegeben werden soll. Ich möchte die Eingabe zehn Mal pro Sekunde bei einer Abtastrate von 44100 Hz. Der Abgriff muss "alle 4410 Abtastwerte" auftreten. Aber egal, wie ich es mache, das Klopfen erfolgt alle ~ 400 ms, was mir jedes Mal 16384 Samples gibt.Wie ändere ich die Abgrifffrequenz am Eingangsbus?
Wie kann die Abhörfrequenz richtig gesteuert werden?
self.audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setPreferredSampleRate(44100.0)
try audioSession.setPreferredIOBufferDuration(4410.0/44100.0)
try audioSession.setCategory(AVAudioSessionCategoryRecord)
try audioSession.setActive(true)
audioSession.requestRecordPermission() {
[unowned self] (allowed: Bool) -> Void in
if allowed {
self.audioEngine = AVAudioEngine()
self.audioInputNode = self.audioEngine.inputNode!
let format: AVAudioFormat = self.audioInputNode.outputFormatForBus(0)
self.audioInputNode.installTapOnBus(0, bufferSize: UInt32(4410), format: format, block: {
(buffer: AVAudioPCMBuffer!, time: AVAudioTime!) in
// buffer length is 16384
})
do {
try self.audioEngine.start()
} catch {}
} else {...}
}
} catch {...}
Werfen Sie einen Blick auf diese Antwort, es hat einen interessanten Punkt über die Puffergröße in iOS: http://Stackoverflow.com/a/35423008/2227743. Nicht sicher, ob es für Ihren speziellen Fall gilt. – Moritz