6

我正在使用语言环境“en_GB”将我的 TextToSpeech 设置为使用特定语言(英语 - 英国)。但它总是使用我的设备默认语言。有没有办法以编程方式设置它?我已经下载了该语言所需的文件,当我将 TTS 的默认语言更改为“英语 - 英国”时,它可以工作,但是当默认值不同时,程序化方法不起作用。我已尽我所能搜索网络,但无法解决此问题。

    String ttsEngine = "com.google.android.tts";
    txt2Speech = new TextToSpeech(this, this, ttsEngine);
    //Locale ttsLocale = new Locale("eng", "GBR");
    txt2Speech.setLanguage(new Locale("en_GB"));

尝试了几种方法,但都没有奏效。我不能以编程方式设置我的 TTS 语言吗?

谢谢你

编辑:回应“蜂蜜鸨”

其他代码:

public class MainActivity extends AppCompatActivity implements TextToSpeech.OnInitListener

我的onInit()

public void onInit(int status) {
    // TODO Auto-generated method stub

}

我也正在调用.setLanguage()my onCreate(),只要 myTextToSpeech初始化。那是对的吗?另外我只调用一次。不需要每次都调用它吧?我也在GS7上测试

4

2 回答 2

4

正确初始化文本到语音引擎后,您需要设置语言。

public void onInit(int status) {

    switch (status) {

        case SUCCESS:
        // Set the language here
        break;
        case ERROR:
         // Something went wrong. You can't set the language
        break;
    }
}

那应该这样做。

于 2016-07-05T09:25:20.303 回答
3

尝试来自Locale的第二个构造函数,它需要两个这样的字符串:

    txt2Speech.setLanguage(new Locale("en", "GB"));

编辑 :

是的,通常可以在 onCreate 中对其进行实例化,并且通常只需要并且应该执行一次。

我所能做的就是向您展示我的工作代码,我在 onCreate() 实例化后设置默认语言:

    textToSpeech = new TextToSpeech(getApplicationContext(), this);

    textToSpeech.setLanguage(Locale.getDefault());

在我的应用程序中有一些按钮,您可以在其中更改语言,这会触发此代码(例如英式英语):

  textToSpeech.setLanguage(new Locale("en", "GB"));

也许它以某种方式不可用,如果语言和国家/地区可用,您可以进行一些检查。你可能会在那里发现你的错误。

 if (textToSpeech.isLanguageAvailable(new Locale("en", "GB")) == TextToSpeech.LANG_COUNTRY_AVAILABLE
   && textToSpeech.isLanguageAvailable(new Locale("en", "GB")) == TextToSpeech.LANG_AVAILABLE) 

应该返回真。

于 2016-07-04T18:03:31.790 回答