我正在尝试在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播放。