6

ロケール「en_GB」を使用して、特定の言語 (英語 - 英国) を使用するように TextToSpeech を設定しています。しかし、それは常に私のデバイスのデフォルト言語を使用します. プログラムで設定する方法はありませんか?言語に必要なファイルをダウンロードしました。TTS のデフォルト言語を「English - UK」に変更すると機能しますが、デフォルトが異なる場合、プログラムによるアプローチは機能しません。Web を精査しましたが、この問題を解決できません。

    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

}

また、 my が初期化されるとすぐに、.setLanguage()myを呼び出しています。あれは正しいですか?また、私はそれを一度だけ呼び出しています。毎回呼び出す必要はありませんよね?また、GS7でテストしていますonCreate()TextToSpeech

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

次のように 2 つの文字列を取るLocaleの 2 番目のコンストラクターを試してください。

    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) 

true を返す必要があります。

于 2016-07-04T18:03:31.790 に答える