Ich habe nach einer Lösung gesucht, aber alle die ich gesehen habe, sind verwirrend, also dachte ich, ich würde eine neue Frage erstellen.Swift: Stoppen Sie die Spracherkennung nach x Sekunden Stille
Ich verwende die Sprachbibliothek und ich möchte, dass die Erkennungsaufgabe nach 2 Sekunden ohne Eingabe vom Benutzer beendet wird. Ich weiß, dass ich einen Timer verwenden möchte, aber ich habe Probleme herauszufinden, wo ich ihn hinstellen und wie ich ihn aktualisieren kann.
Ich starte den Timer, wenn die Aufnahmetaste gedrückt wird, und ich mache ihn ungültig, wenn die Stopptaste gedrückt wird.
Aber wo überprüfe ich, ob der Benutzer neue Eingaben hinzugefügt hat? Ich dachte daran, die letzte Transkription zu speichern und sie mit der nächsten zu vergleichen: Wenn sie anders sind, setze den Timer zurück.
Hier ist, was mein Code wie folgt aussieht:
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: [])
}
}