Конфигурация преобразования текста в речь Android и варианты

В настоящее время я разрабатываю приложение, которое интенсивно использует преобразование текста в речь (я использую android.speech.tts.TextToSpeech). Мне удалось интегрировать TTS в свой голос, и в настоящее время американский американский голос по умолчанию - это то, что читает вслух мой текст.

Я хотел бы знать, как внести изменения в конфигурацию речевого движка. Например, хотелось бы уменьшить скорость чтения текста, поменять местами мужские и женские голоса и даже обеспечить поддержку разных языков. Может ли кто-нибудь помочь мне с этой информацией. Заранее спасибо :)

[Ниже приведен код, который я сейчас использую (любезно предоставлено: очень хорошо написанный базовый блог по Android TTS), все переменные были объявлены, я не копирую весь код, и этот фрагмент кода работает отлично.]

btnSpeak = (ImageButton) findViewById(R.id.ttsIB);    
btnSpeak.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                speakOut();
            }

        });

@Override
    public void onDestroy() {
        // to shutdown TTS
        if (tts != null) {
            tts.stop();
            tts.shutdown();
        }
        super.onDestroy();
    }

    @Override
    public void onInit(int status) 
    {

        if (status == TextToSpeech.SUCCESS) 
        {
            int result = tts.setLanguage(Locale.US);

            if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED)
            {
                Log.e("TTS", "This Language is not supported");
            } 
            else 
            {
                btnSpeak.setEnabled(true);
                speakOut();
            }

        } 
        else 
        {
            Log.e("TTS", "Initilization Failed!");
        }

    }

    private void speakOut() 
    {

        String text = textVal.getText().toString();

        tts.speak(text, TextToSpeech.QUEUE_FLUSH, null);
    }

person Darth Coder    schedule 20.06.2013    source источник


Ответы (1)


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

Есть полезный метод setEngineByPackageName(String packageName).

Некоторые механизмы TTS имеют отдельные имена пакетов для каждого голоса. Например, для Loquendo вам нужно написать tts.setEngineByPackageName("com.loquendo.tts.susan"), и ваше приложение будет говорить американским голосом Сьюзан.

Но некоторые движки TTS имеют общее приложение и голоса в виде плагинов. Итак, вы можете настроить его только таким образом:

tts.setEngineByPackageName("com.svox.pico");
tts.setLanguage(Locale.US);

Если для этого движка есть несколько голосов США, ваше приложение будет говорить по умолчанию (выбрано в настройках телефона).

person darja    schedule 20.06.2013
comment
Спасибо за информацию :) Есть ли какая-нибудь ссылка или ссылка, где я могу узнать больше об этих параметрах и опциях? - person Darth Coder; 20.06.2013
comment
comment
Упс, теперь это устарело. Но имя пакета движка можно указать в конструкторе. И кроме того, я никогда не видел, чтобы setEngineByPackageName возвращал ERROR. Только УСПЕХ, даже голосовые данные не устанавливаются и движок по факту не загружается. - person darja; 20.06.2013