Android TTS和Lip Sync

时间:2015-11-16 13:03:24

标签: android text-to-speech

我目前正在构建一个由Android驱动的机器人头。我正在使用标准的android.speech.tts.TextToSpeech但是没有任何内容向我跳过关于我如何动画或检测它的内容以便我可以进行嘴巴移动(我知道如何控制硬件)

我能看到的唯一可能有帮助的课程是http://developer.android.com/reference/android/media/audiofx/Visualizer.html

有没有人完成Android TTS唇形同步并可以提供一些建议?

是否有可以挂钩进行唇形同步的回叫方法

这是我的TTS代码

private void speakWords(String speech) {
        //implement TTS here
        if (speech != null && speech.length() > 0) {

            HashMap<String, String> myHashAlarm = new HashMap<String, String>();
            myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_ALARM));
            myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_VOLUME, "1");
            myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "SOME MESSAGE");  
            myTTS.speak(speech, TextToSpeech.QUEUE_FLUSH, myHashAlarm); //QUEUE_ADD

        }
    }

2 个答案:

答案 0 :(得分:1)

您可以使用UtteranceProgressListener,如本文所述 Unable to detect completion of TTS (callback) android.

此博客还介绍了播放完成回调的可选参数 http://android-developers.blogspot.co.uk/2009/09/introduction-to-text-to-speech-in.html

答案 1 :(得分:1)

我建议您为SynthesisCallback添加TextToSpeechService听众。这样做可以让您在不同的时间间隔内接收回调,您可以移动机器人嘴。

有关详细信息,请参阅http://developer.android.com/reference/android/speech/tts/SynthesisCallback.html