Как завершить SFSpeechRecognitionTask после нескольких секунд молчания
Я работаю с новой библиотекой Apple Speech и не могу найти команду, чтобы перевернуть isFinal bool и завершить транскрипцию после нескольких секунд молчания. Кто-нибудь знает, как закончить задачу после небольшого молчания?
Вот код, по которому я получаю результаты транскрипции речи.
recognitionRequest.shouldReportPartialResults = true
speechRecogTask = speechRecognizer.recognitionTask(with: recognitionRequest, resultHandler: { (result, error) in
var isFinal = false
if result != nil {
self.textField.text = result?.bestTranscription.formattedString
isFinal = (result?.isFinal)!
}
if error != nil || isFinal {
self.audioEngine.stop()
inputNode.removeTap(onBus: 0)
self.speechRecogRequest = nil
self.speechRecogTask = nil
}
})
Есть идеи?
1 ответ
Лучше всего использовать таймер для определения интервала времени, когда был вызван последний делегат. Посмотрите на эту библиотеку, которая использует NSTimer
if let result = result {
if (isFinal == true) {
self.speechRecogTask?.finish()
}
}