Как получить частоту звука от AVAudioEngine - PullRequest
0 голосов
/ 01 июля 2019

Я реализую модуль распознавания речи для приложения. Это прекрасно работает, однако есть некоторые дополнительные вещи, которые мне нужно сделать. Например, мне нужно знать, говорит ли пользователь или кричит. Я знаю, я могу достичь этого, зная частоту звука. Вот как я это реализую:

let audioEngine = AVAudioEngine()
let speechRecognizer: SFSpeechRecognizer? = SFSpeechRecognizer()
let request = SFSpeechAudioBufferRecognitionRequest()
var recognitionTask = SFSpeechRecognitionTask()

func recordAndRecognizeSpeech() {
    let node = audioEngine.inputNode
    let recordingFormat = node.outputFormat(forBus: 0)
    node.installTap(onBus: 0, bufferSize: 1024, format: recordingFormat) { (buffer, _) in
        self.request.append(buffer)
    }

    audioEngine.prepare()
    do {
        try audioEngine.start()
    } catch {
        return print(error)
    }

    guard let myRecoginizer = SFSpeechRecognizer() else {
        return
    }

    if !myRecoginizer.isAvailable {
        return
    }

    recognitionTask = (speechRecognizer?.recognitionTask(with: request, resultHandler: { (result, error) in
        //Handling speech recognition tasks here
    }))!

}

Это прекрасно работает для распознавания речи, но как я могу получить значение частоты или амплитуды звука?

...