Как сделать SFSpeechRecognition и записывать звук одновременно в Swift? - PullRequest
0 голосов
/ 31 января 2019

Итак, я пытался выполнить распознавание речи в Swift, используя встроенный класс SFSpeechRecognition, одновременно понижая частоту и затем записывая аудио в файл, но я не достаточно разбираюсь в AVAudioEngine, чтобы понять это.

Я заставил распознавание речи работать самостоятельно, и я заставил запись аудио работать, но я не могу заставить их работать вместе.

Вот мой существующийкод, в котором я пытаюсь записать - оставшийся код - это просто стандартный тип распознавания речи:

let audioFormat = AVAudioFormat(commonFormat: .pcmFormatFloat32, sampleRate: 16000, channels: 1, interleaved: false)
let mixer = AVAudioMixerNode()
audioEngine.attach(mixer)


audioEngine.connect(inputNode!, to: mixer, format: inputNode!.inputFormat(forBus: 0))

// 1 Connecting Mixer
audioEngine.connect(mixer, to: audioEngine.outputNode, format: audioFormat)

// 2 Recognition
inputNode!.installTap(onBus: 0, bufferSize: 1024, format: recordingFormat) { (buffer, when) in
        print("Testing if this tap works")
        self.recognitionRequest?.append(buffer)
    }

// 3 Downsampling and recording
mixer.installTap(onBus: 0, bufferSize: 1024, format: audioFormat){ (buffer, when) in
        print(buffer)
        try? self.outputFile!.write(from: buffer)
}

Если я закомментирую 3, то распознавание речи работает, но в противном случае 2 даже не запускается -кран ничего не выводит.Я также не могу поставить в поле 3 запрос на распознавание, потому что тогда при распознавании речи возникает ошибка.Я вижу в документах, что у каждого автобуса может быть только одно нажатие - как я могу обойти это?Должен ли я использовать AVConnectionPoint?Я не вижу этого хорошо документированного в документах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...