TextToSpeech setLanguage 不起作用?
TextToSpeech setLanguage not working?
我正在将我的 TextToSpeech 设置为使用特定语言(英语 - 英国),使用区域设置 "en_GB"。但它总是使用我的设备默认语言。没有办法以编程方式设置它吗?我已经下载了该语言所需的文件,当我将 TTS 的默认语言更改为 'English - UK' 时它可以工作,但是当默认语言不同时,编程方法不起作用。我已尽最大努力在网上搜索,但无法解决此问题。
String ttsEngine = "com.google.android.tts";
txt2Speech = new TextToSpeech(this, this, ttsEngine);
//Locale ttsLocale = new Locale("eng", "GBR");
txt2Speech.setLanguage(new Locale("en_GB"));
尝试了几种方法,但 none 有效。
我不能以编程方式设置我的 TTS 语言吗?
谢谢
编辑:回应'A Honey Bustard'
其他代码:
public class MainActivity extends AppCompatActivity implements TextToSpeech.OnInitListener
我的onInit()
public void onInit(int status) {
// TODO Auto-generated method stub
}
另外,我在 onCreate()
中调用 .setLanguage()
,一旦我的 TextToSpeech
初始化。那是对的吗?另外我只调用一次。不需要每次都调用它吧?我也在 GS7
上进行测试
尝试 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)
应该return正确。
Text to Speech Engine 正确初始化后,您需要设置语言。
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;
}
}
应该这样做。
我正在将我的 TextToSpeech 设置为使用特定语言(英语 - 英国),使用区域设置 "en_GB"。但它总是使用我的设备默认语言。没有办法以编程方式设置它吗?我已经下载了该语言所需的文件,当我将 TTS 的默认语言更改为 'English - UK' 时它可以工作,但是当默认语言不同时,编程方法不起作用。我已尽最大努力在网上搜索,但无法解决此问题。
String ttsEngine = "com.google.android.tts";
txt2Speech = new TextToSpeech(this, this, ttsEngine);
//Locale ttsLocale = new Locale("eng", "GBR");
txt2Speech.setLanguage(new Locale("en_GB"));
尝试了几种方法,但 none 有效。 我不能以编程方式设置我的 TTS 语言吗?
谢谢
编辑:回应'A Honey Bustard'
其他代码:
public class MainActivity extends AppCompatActivity implements TextToSpeech.OnInitListener
我的onInit()
public void onInit(int status) {
// TODO Auto-generated method stub
}
另外,我在 onCreate()
中调用 .setLanguage()
,一旦我的 TextToSpeech
初始化。那是对的吗?另外我只调用一次。不需要每次都调用它吧?我也在 GS7
尝试 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)
应该return正确。
Text to Speech Engine 正确初始化后,您需要设置语言。
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;
}
}
应该这样做。