Swift Speech Framework транскрипция Array всегда содержит только одну транскрипцию - PullRequest
0 голосов
/ 10 января 2020

Я использую Speech Framework для расшифровки ответа пользователя в викторине. Мы представляем изображение животного, и пользователь должен сказать имя животного. Когда я оцениваю ответ пользователя ... "result.transcription" имеет только 1 транскрипцию, так же, как и "result.bestTranscription". Есть ли решение, чтобы получить несколько вариантов ответа?

Вот мой код


       if recognitionTask != nil {
            recognitionTask?.finish()
            recognitionTask = nil
        }

        do {
            try AVAudioSession.sharedInstance().setCategory(.playAndRecord, mode: .default, options: .mixWithOthers)
            try AVAudioSession.sharedInstance().overrideOutputAudioPort(AVAudioSession.PortOverride.speaker)
            try AVAudioSession.sharedInstance().setActive(true, options: .notifyOthersOnDeactivation)
        } catch {
            print("audioSession properties weren't set because of an error.")
        }

        recognitionRequest = SFSpeechAudioBufferRecognitionRequest()

        let inputNode = audioEngine.inputNode

        guard let recognitionRequest = recognitionRequest else {
            fatalError("Unable to create an SFSpeechAudioBufferRecognitionRequest object")
        }

        recognitionRequest.shouldReportPartialResults = true

        recognitionTask = speechRecognizer?.recognitionTask(with: recognitionRequest, resultHandler: { [weak self] result, error in

            if let error = error {
                debugPrint(error)
            }

            guard let result = result else { return }

            if result.bestTranscription.formattedString.lowercased() == self.searchTerm.lowercased() {
                    found = true
                    self.response = result.bestTranscription.formattedString
            } else {
                    result.transcriptions.forEach { transcription in
                        if transcription.formattedString.lowercased() == self.searchTerm.lowercased() {
                            self.response = transcription.formattedString
                            found = true
                        }
                        debugPrint("Transcription")
                        debugPrint(transcription.formattedString)
            }
        })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...