如何在Android中同时播放两个TextToSpeech话语?

时间:2015-11-19 16:22:39

标签: android text-to-speech

我正在尝试在Android中同时播放两个TextToSpeech话语(用于研究目的),但我无法做到这一点。我知道它依赖于Queue并且它可以立即(使用TextToSpeech.speak方法)说出文本或将其添加到队列中(使用TextToSpeech.QUEUE_FLUSH和TextToSpeech.QUEUE_ADD)。

我尝试过创建两个TTS实例,如下所示:

public Reader(Context c){

    ttobj=new TextToSpeech(c,
            new TextToSpeech.OnInitListener() {
                @Override
                public void onInit(int status) {
                    if(status != TextToSpeech.ERROR){
                        ttobj.setLanguage(Locale.getDefault());
                    }
                }
            });

    ttobj2=new TextToSpeech(c,
            new TextToSpeech.OnInitListener() {
                @Override
                public void onInit(int status) {
                    if(status != TextToSpeech.ERROR){
                        ttobj.setLanguage(Locale.getDefault());
                    }
                }
            });

}

我还尝试在另一个线程中运行辅助语音,并更改该语音的音频流(到AudioManager.STREAM_RING),因为另一个在AudioManager.STREAM_MUSIC上。线程代码是:

Thread thread = new Thread() {
    @Override
    public void run() {
        HashMap<String, String> myHashSecond = new HashMap();
        myHashSecond.put(TextToSpeech.Engine.KEY_PARAM_STREAM,
                String.valueOf(AudioManager.STREAM_RING));
        ttobj2.speak("Let me speak at the same time!", TextToSpeech.QUEUE_FLUSH, myHashSecond);
    }
};

我没有成功,因为我的所有尝试都会中断或等待第一个话语结束。关于如何启用此类行为的任何想法? 此外,我不想将其保存到文件中,而是直接从TTS播放。

0 个答案:

没有答案