Как завершить 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()
  }

}
Другие вопросы по тегам