我找過一個解決方案,但是我看到的所有解決方案都很混亂,所以我想我會創建一個新問題。Swift:在沉默x秒後停止語音識別
我正在使用語音庫,並且我希望識別任務在2秒後停止,而無需用戶輸入。我知道我想用一個計時器,但我很難弄清楚在哪裏放置它以及如何更新它。
當按下記錄按鈕時,我開始計時,當按下停止記錄按鈕時,我使其無效。
但我在哪裏檢查用戶是否添加了新的輸入?我正在考慮保存最後一個轉錄並將其與下一個轉錄進行比較:當它們不同時,重置計時器。
這裏是我的代碼如下所示:
recognitionTask = speechRecognizer.recognitionTask(with: recognitionRequest) { result, error in
var isFinal = false
if let result = result {
self.textView.text = result.bestTranscription.formattedString
// Should I compare the result here to see if it changed?
isFinal = result.isFinal
}
// Or should I do it here? In what order is this code even running?
if error != nil || isFinal {
self.result = self.textView.text
self.audioEngine.stop()
inputNode.removeTap(onBus: 0)
self.recognitionRequest = nil
self.recognitionTask = nil
self.recordButton.isEnabled = true
self.recordButton.setTitle("Start Recording", for: [])
}
}