java - 两种语言的TextToSpeech-Android

标签 java android audio

我有一个对象“单词”的ArrayList,它具有两个Strings属性,这是一种语言的单词,另一种语言的翻译。这些单词是从txt文件中提取的,这些文件用符号“=”分隔,因此每行中都有一个单词及其翻译。像这样:

word1Language1=word1language2
word2Language1=word2Language2
word3Language1=word3Language2

因此,我使用一种将它们成功放入前面提到的ArrayList中的方法来读取这些单词。但是现在我希望机器人在按下按钮时发音这些单词(并且我也希望在再次按下按钮时也能停止发音)。目前这是我的代码,“wordsList”是ArrayList的名称。我不知道如何告诉bot在单词之间等待(因此它会正确地发音):
mTTS = new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() {
                @Override
            public void onInit(int status) {
                if(status != TextToSpeech.ERROR){
                    mTTS.setLanguage(Locale.US);
                }
            }
        });

        imageButton.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                for(int i=0; i <= wordsList.size(); i++){
                    mTTS.setLanguage(Locale.US);
                    String toSpeak1 = wordsList.get(i).getLanguage1();
                    mTTS.speak(toSpeak1, TextToSpeech.QUEUE_FLUSH, null);
                    mTTS.setLanguage(Locale.ITALIAN);
                    String toSpeak2 = wordsList.get(i).getLanguage2();
                    mTTS.speak(toSpeak2, TextToSpeech.QUEUE_FLUSH, null);
                }
                mTTS.shutdown();
            }
        });

谢谢!

最佳答案

您要做的就是每次您调用tts.speak(...)时,等待tts停止说其他单词。您可以使用侦听器或回调进行操作,但我不知道它的调用方式,而只是使用谷歌“完成语音侦听器的tts”。说完后,您可以输入下一个单词并相应地更改语言环境。您现在正在做的是告诉tts同时播放两种语言中的所有单词,并且由于for循环也不会等待,因此输入下一个单词时无需等待其他输入停止说话。

关于java - 两种语言的TextToSpeech-Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62309617/

相关文章:

java - 无法解析示例 Google VR 项目中的依赖项

android - 自定义具有单选列表项的对话框

android - 为什么最大长度过滤器不起作用?安卓

python - 对音频流使用多处理

java - 带有圆角的 Android Spannablecontent

java - 文本框内的按钮

java - 如何在Python中膨胀相同的数据

java - 是否可以设置操作栏主页按钮和应用程序 Logo 之间的填充?

javascript - 如何通过捕获音频播放器行为来检查外部mp3是否存在

ios - 选项卡式应用程序的全局音频播放器