Я использую 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)
}
})