Статьи

Android текст в речь (TTS)

Этот пост описывает, как использовать текст в речь (TTS) в Android. Не так часто можно найти пост, объясняющий, как его использовать, и он не является частью Android. На мой взгляд, TTS очень интересен, потому что он может добавить некоторые приятные функции в приложение. Text to Speech — это функция платформы Android, с помощью которой можно «читать» слова и заставлять приложение говорить, или, более подробно, синтезировать
текст.

В этой статье я хочу рассказать о том, как реализовать TTS в Android и как мы можем контролировать некоторые интересные аспекты речевого движка. Мы хотим закодировать приложение, содержащее виджет EditText, чтобы писать слова, которые нужно прочитать, и некоторые элементы управления для изменения речевого движка.

android_text_to_speech

Текст в речь Двигатель

Первое, что мы должны сделать, чтобы использовать TTS в нашем приложении, это инициализировать движок. Класс, который управляет движком, называется TextToSpeech ,

1
engine = new TextToSpeech(this, this);

где первый параметр — это контекст, а другой — слушатель. Слушатель используется, чтобы сообщить нашему приложению, что движок готов к использованию. Чтобы получить уведомление, мы должны реализовать TextToSpeech.OnInitListener , поэтому у нас есть:

01
02
03
04
05
06
07
08
09
10
11
12
public class MainActivity extends Activity implements TextToSpeech.OnInitListener {
    ....
    @Override
    public void onInit(int status) {
        Log.d(&Speech&, &OnInit - Status [&+status+&]&);
 
        if (status == TextToSpeech.SUCCESS) {
            Log.d(&Speech&, &Success!&);
            engine.setLanguage(Locale.UK);
        }
    }
}

Мы используем onInit качестве метода обратного вызова, и когда движок готов, мы устанавливаем язык по умолчанию, который использовался движком для чтения нашего предложения.

Читай слова

Теперь наш движок готов к использованию, нам нужно просто передать строку, которую мы хотим прочитать. Для этого мы используем EditText, чтобы пользователь мог редактировать свою строку, и когда он щелкнет по микрофону, приложение начнет читать. Не вдаваясь в подробности кода, потому что это тривиально, мы сосредотачиваем наше внимание, когда пользователь нажимает кнопку микрофона:

1
2
3
4
5
6
speechButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                speech();
            }
        });

где

1
2
3
private void speech() {
        engine.speak(editText.getText().toString(), TextToSpeech.QUEUE_FLUSH, null, null);
    }

нам просто нужно вызвать метод speak чтобы наше приложение читало текст!

Параметры управления текстом в речь

Мы можем лучше контролировать, как движок читает предложение. Мы можем изменить, например, высоту тона и скорость речи .

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

С другой стороны, если мы хотим изменить скорость речи, мы можем использовать setSpeechRate .

В нашем приложении мы читаем это значение из двух строк поиска, и метод речи становится:

1
2
3
4
5
private void speech() {
        engine.setPitch((float) pitch);
        engine.setSpeechRate((float) speed);
        engine.speak(editText.getText().toString(), TextToSpeech.QUEUE_FLUSH, null, null);
    }
  • Доступен исходный код @ github
Ссылка: Android Text to Speech (TTS) от нашего партнера JCG Франческо Аццолы в блоге Surviving с Android .