Этот пост описывает, как использовать текст в речь (TTS) в Android. Не так часто можно найти пост, объясняющий, как его использовать, и он не является частью Android. На мой взгляд, TTS очень интересен, потому что он может добавить некоторые приятные функции в приложение. Text to Speech — это функция платформы Android, с помощью которой можно «читать» слова и заставлять приложение говорить, или, более подробно, синтезировать
текст.
В этой статье я хочу рассказать о том, как реализовать TTS в Android и как мы можем контролировать некоторые интересные аспекты речевого движка. Мы хотим закодировать приложение, содержащее виджет EditText, чтобы писать слова, которые нужно прочитать, и некоторые элементы управления для изменения речевого движка.
Текст в речь Двигатель
Первое, что мы должны сделать, чтобы использовать 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 . |