【问题标题】:TextToSpeech with two languages - Android具有两种语言的 TextToSpeech - Android
【发布时间】:2020-06-10 17:31:08
【问题描述】:

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

word1Language1=word1language2
word2Language1=word2Language2
word3Language1=word3Language2

所以,我使用一种方法读取了这些单词,该方法成功地将它们放入前面提到的 ArrayList 中。但现在我希望机器人在我按下按钮时发音这些单词(我希望它在我再次按下按钮时也停止)。这是我目前的代码,“wordsList”是 ArrayList 的名称。我不知道如何告诉机器人在单词之间等待(所以它会正确发音):

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 对我来说完全不受限制,几乎所有语言都可以使用。您可能需要检查您是否在测试设备上下载了所有 tts 包
  • @Lurzapps 谢谢,我应用了您发布的内容并通过为每种语言实例化一个新的语言环境来设法使用其他语言,但我仍然无法让它说出所有单词,因为它没有停在单词之间。
  • 我添加了答案
  • 等我再编辑一下

标签: java android audio


【解决方案1】:

您需要做的是等待 tts 每次拨打tts.speak(...) 时停止说其他单词。你可以用一个听众或一个回调来做,我不知道它是如何被调用的,但只是谷歌“tts on finish speak listener”。当它说完后,您可以输入下一个单词并相应地更改语言环境。您现在正在做的是告诉 tts 同时播放两种语言的所有单词,并且由于 for 循环也不会等待,因此也会输入下一个单词,而无需等待其他输入停止说话.

【讨论】:

  • 谢谢,它成功了。对于任何可能会觉得有用的阅读者:我必须使用“mTTS.setOnUtteranceProgressListener(new UtteranceProgressListener(){}”,并且必须将“QUEUE_FLUSH”更改为“QUEUE_ADD”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-06
  • 2012-12-29
  • 1970-01-01
  • 2012-05-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多