SFSpeechRecognizer - detect end of utterance

前端 未结 4 1488
耶瑟儿~
耶瑟儿~ 2020-12-05 14:16

I am hacking a little project using iOS 10 built-in speech recognition. I have working results using device\'s microphone, my speech is recognized very accurately.

M

4条回答
  •  没有蜡笔的小新
    2020-12-05 14:39

    It seems that isFinal flag doesn't became true when user stops talking as expected. I guess this is a wanted behaviour by Apple, because the event "User stops talking" is an undefined event.

    I believe that the easiest way to achieve your goal is to do the following:

    • You have to estabilish an "interval of silence". That means if the user doesn't talk for a time greater than your interval, he has stopped talking (i.e. 2 seconds).

    • Create a Timer at the beginning of the audio session:

    var timer = NSTimer.scheduledTimerWithTimeInterval(2, target: self, selector: "didFinishTalk", userInfo: nil, repeats: false)

    • when you get new transcriptions in recognitionTaskinvalidate and restart your timer

      timer.invalidate() timer = NSTimer.scheduledTimerWithTimeInterval(2, target: self, selector: "didFinishTalk", userInfo: nil, repeats: false)

    • if the timer expires this means the user doesn't talk from 2 seconds. You can safely stop Audio Session and exit

提交回复
热议问题