W jaki sposób Siri jest w stanie określić, kiedy skończę mówić. Powodem, dla którego chciałbym wiedzieć, jest to, że chciałbym wprowadzić podobną funkcjonalność z Apple Speech Recognition API z moją aplikacją. Czy jest to wykonalne, czy też jedynym sposobem, aby wiedzieć, kiedy użytkownik przestał mówić, jest wejście użytkownika?Zatrzymaj rozpoznawanie mowy po zakończeniu rozmowy przez użytkownika
12
A
Odpowiedz
1
Możesz użyć timera, miałem ten sam problem i nie mogłem go rozwiązać za pomocą eleganckiej metody.
fileprivate var timer:Timer?
func startRecordingTimer() {
lastString = ""
createTimerTimer(4)
}
func stopRecordingTimer() {
timer?.invalidate()
timer = nil
}
fileprivate func whileRecordingTimer() {
createTimerTimer(2)
}
fileprivate var lastString = ""
func createTimerTimer(_ interval:Double) {
OperationQueue.main.addOperation({[unowned self] in
self.timer?.invalidate()
self.timer = Timer.scheduledTimer(withTimeInterval: interval, repeats: false) { (_) in
self.timer?.invalidate()
if(self.lastString.characters.count > 0){
//DO SOMETHING
}else{
self.whileRecordingTimer()
}
}
})
}
aw SFSpeechRecognitionTaskDelegate
public func speechRecognitionTask(_ task: SFSpeechRecognitionTask, didHypothesizeTranscription transcription: SFTranscription) {
let result = transcription.formattedString
lastString = result
}
mojego zrozumienia jest to, że nie trzeba obsłużyć "gdy użytkownik zakończy mówienia". Powinieneś przeczytać przewodnik SiriKit tutaj: https://developer.apple.com/library/content/documentation/Intents/Conceptual/SiriIntegrationGuide/ResolvingandHandlingIntents.html#//apple_ref/doc/uid/TP40016875-CH5-SW1. Zasadniczo SiriKit daje "zamiar" z danymi zebranymi z mowy użytkownika, a ty musisz tylko postępować zgodnie z intencją i wykonywać własne operacje. – volatilevar
Pytanie dotyczy interfejsu API Speech Recognition API, a nie SiriKit. – nathan
Masz szczęście? Sam się z tym zmagam. – alhadhrami