Как я могу контролировать, как Android TTS воспроизводит аудио

У меня есть класс, который использует Android TTS API для транскрипции текста в аудио. Я могу контролировать высоту и скорость; Но я заметил, что движок требует текстовую строку, а также хэш-объект. Я заметил, что некоторые слова произносятся слишком быстро, чтобы их можно было легко распознать, а перегибы выглядят слишком противоестественными. Есть ли способ управлять этими двумя вещами? Возможно, через HashMap ? Ниже приводится описание того, как я использую движок:

  mTts = new TextToSpeech(Globals.context, this); // context, listener } @Override public void onInit(int status) { HashMap<String, String> myHashRender = new HashMap(); myHashRender.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, speech); mTts.setPitch(0.8f); mTts.setSpeechRate(0.6f); mTts.synthesizeToFile(speech, myHashRender, fileOutPath); while (mTts.isSpeaking()) try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } mTts.stop(); mTts.shutdown(); 

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

Например, если вы встретите слово «Эй», вы переписываете его «на лету» на «Heeeey», прежде чем отправлять его на движок TTS, чтобы получить другое произношение.

Это не очень, но это обходной путь.

Google TTS в настоящее время не поддерживает изменение перегибов и не поддерживает встроенные теги просодии, как определено в SSML . – alanv 5 июн в 20:30

Google TTS в настоящее время не поддерживает изменение перегибов и не поддерживает встроенные теги просодии, как определено в SSML . Хотя есть параметры, которые вы можете установить, ни один из них не контролирует перегиб или просодию на слово.

Могут быть другие двигатели, которые поддерживают эти функции. Например, eSpeak поддерживает теги SSML и имеет порт Android, доступный в Play Маркете.