用户说完后停止语音识别
Siri在完成发言时如何能够确定。 我想知道的原因是,我想用我的应用程序与苹果的语音识别API实现类似的function。 这是可行的,还是通过用户input知道用户什么时候停止讲话的唯一途径?
你可以使用计时器,我有同样的问题,我不能用一个优雅的方法解决它。
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() } } }) }
并在SFSpeechRecognitionTaskDelegate
public func speechRecognitionTask(_ task: SFSpeechRecognitionTask, didHypothesizeTranscription transcription: SFTranscription) { let result = transcription.formattedString lastString = result }