В настоящее время я работаю над приложением Iphone для людей, страдающих нарушениями зрения. Чтобы получить вводимый текст, приложение использует распознавание голоса.
Приложение работает очень хорошо с активированным Voice-Over, но когда пользователь запускает распознавание голоса, выход Voice-Over переключается на динамик (и это нормально).
Что меня беспокоит, так это то, что, когда весь процесс закончен, выходной динамик не переключается обратно в основной динамик, даже если я заканчиваю все процессы.
Для распознавания голоса я создал экземпляр AVAudioEngine()
, SFSpeechRecognizer()
, SFSpeechAudioBufferRecognitionRequest()
и SFSpeechRecognitionTask?
.
Затем я подключил запрос к узлу оперативного ввода и запустил аудиоинженер.
После того, как пользователь закончил говорить, я позвонил audioEngine.stop()
, request.endAudio()
и recognitionTask?.cancel()
, чтобы остановить все и вернуться к "нормальному" использованию приложения.
Может быть, я что-то упустил, когда все остановил, что-то касалось живого узла ввода:
audioEngine.inputNode.installTap(onBus: 0, bufferSize: 1024, format: recordingFormat) { buffer, _ in self.request.append(buffer)}
Но я пытался removeTap(onBus: 0)
, но ничего не изменилось.
Выходной динамик возвращается в нормальное состояние, только когда я закрываю приложение или перехожу на многозадачность.
Надеюсь, вы поможете мне разобраться!
Спасибо