Как установить голландский язык в преобразовании текста в речь?

Я хочу установить голландский язык в своем объекте TTS. Ниже приведен код,

@Override
public void onInit(int status) 
{
    if ( status == TextToSpeech.SUCCESS ) 
    {
        int result = tts.setLanguage(Locale.getDefault());

        System.out.println ( "Result : " + result  + " " + Locale.getDefault().getLanguage() );

        if (result == TextToSpeech.LANG_MISSING_DATA
                || result == TextToSpeech.LANG_NOT_SUPPORTED) 
        {
            Toast.makeText( this , "Please Set your Language to English US.", Toast.LENGTH_LONG ).show();
        }
        else
        {
            tts.speak( "Hoe gaat het",TextToSpeech.QUEUE_FLUSH, null );
        }
    }
}

Следующая строка устанавливает язык в TTS

int result = tts.setLanguage(Locale.getDefault());

Доступные локали в Locale.

введите здесь описание изображения

Теперь, если язык моего телефона голландский, я могу установить язык TTS как голландский, но если язык моего телефона не голландский (например, если он английский), то нет возможности установить язык TTS как голландский.

Может ли кто-нибудь помочь мне установить голландский язык в TTS?


person user2060383    schedule 30.10.2014    source источник


Ответы (3)


Это должно работать

int result = tts.setLanguage(new Locale("nl_NL"));
person Hoan Nguyen    schedule 30.10.2014
comment
С какой стати в голландском языке префикс de, как в Deutschland, вместо nl?? - person Josh; 12.04.2016
comment
Просто для людей, которые изучают это, вам нужно изменить префикс de_NL на nl_NL, чтобы получить правильный голландский язык. - person Carlo Matulessy; 03.10.2018

Вы устанавливаете локаль по умолчанию в setLocale. Вот причина этой проблемы: Теперь, если язык моего телефона голландский, я могу установить язык TTS как голландский язык, но если язык моего телефона не голландский (например, если он английский), тогда нет выбора чтобы установить язык TTS как голландский.

Вместо этого вы должны использовать Locale, который вам нужен. Так что замените

int result = tts.setLanguage(Locale.getDefault());

с

int result = tts.setLanguage(Locale.XYZ);  //XYZ is Locale you want.

Пример:

int result = tts.setLanguage(Locale.GERMAN);

Обратитесь к документации, которая включает доступные локали, которые вы можете установить. ГОЛЛАНДСКИЙ там недоступен.

Хотя в этой статье упоминается, что DUTCH доступен в Locale. Может быть, это не для Android, а для Java, как предложено здесь

Надеюсь это поможет.

person MysticMagicϡ    schedule 30.10.2014
comment
Пожалуйста, проверьте вопрос еще раз, я добавил изображение доступных параметров в Locale. - person user2060383; 30.10.2014

для хинди-индии

newsReaderTTS.setLanguage(новая локаль("hin", "IND", "вариант"));

для английского США

newsReaderTTS.setLanguage(новый язык("eng", "США", "вариант"));

где NewsreaderTTS — это TTS.

person Vikas    schedule 21.04.2016