How to know when TTS is finished?

前端 未结 6 1055
臣服心动
臣服心动 2020-11-28 08:06

I\'m implementing an Interactive Voice Response application on Android. I would like to know how to determine when the tts.speak() function has done talking so

6条回答
  •  无人及你
    2020-11-28 08:35

    use a SpeakableListener when do text to speak.

    private volatile boolean finished;
    
    private SpeakableListener listener = new SpeakableListener() {
    
        @Override
        public void markerReached(SpeakableEvent arg0) {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public void speakableCancelled(SpeakableEvent arg0) {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public void speakableEnded(SpeakableEvent arg0) {
            TestSpeaker.this.finished = true;
    
        }
    
        @Override
        public void speakablePaused(SpeakableEvent arg0) {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public void speakableResumed(SpeakableEvent arg0) {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public void speakableStarted(SpeakableEvent arg0) {
            TestSpeaker.this.finished = false;
    
        }
    
        @Override
        public void topOfQueue(SpeakableEvent arg0) {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public void wordStarted(SpeakableEvent arg0) {
            // TODO Auto-generated method stub
    
        }
    };
    
    /** Speak the following string. */
    public void sayIt(String str) {
        System.out.print(" " + str + " ");
        /* The the synthesizer to speak. */
        synthesizer.speakPlainText(str, listener);
    

提交回复
热议问题