Поддержка SSML в Android TTS?

Этот вопрос задавали несколько лет назад, но, надеюсь, все изменилось ...

Может ли кто-нибудь указать мне какие-либо подробности о том, какие версии Android поддерживают какое подмножество SSML в свой механизм преобразования текста в речь?

Я провел несколько экспериментов с использованием Flutter-TTS, который представляет собой просто слой, передающий текст, который будет озвучен, в службу TTS базовой платформы.

Некоторое неизвестное подмножество SSML действительно работает на более новом Android - например, этот SSML

<speak>before<break time="5s"/>after</speak>

действительно создает пятисекундную паузу между словами в API 27 и API 29. Он не работает в API 21, но, по крайней мере, обрабатывает его изящно, просто игнорируя все теги. Я еще не тестировал другие уровни API. Я также пробовал теги prosody, phoneme и lang - похоже, они не работают.


person AlexR    schedule 17.06.2020    source источник
comment
Вы ищете совместимость с SML?   -  person Kiran Maniya    schedule 17.06.2020
comment
Киран, я ищу любую документацию, описывающую уровень поддержки SSML в движке Android Text-To-Speech. См. w3.org/TR/speech-synthesis11 для получения полной спецификации SSML.   -  person AlexR    schedule 17.06.2020
comment
Я не понимаю связи между Readium SDK (он предназначен для создания ePub, верно?) И моим вопросом.   -  person AlexR    schedule 17.06.2020


Ответы (1)


Пока метод speak () класса TextToSpeech принимает только строки или CharSequence (которые затем передаются в речевой движок), и пока Android не вводит новый метод, такой как TextToSpeech.speakSSML () в некоторых будущая версия Android (и обеспечить, чтобы все движки поддерживали ее) ...

... тогда способ, которым отдельные речевые движки обрабатывают эти строки, будет уникальным для них и в конечном итоге непредсказуемым, потому что вы не знаете, какой движок (или его версию) пользователь мог установить и / или выбраны для использования в их настройках до времени выполнения.

Конечно, определенный движок вскоре может заявить о полной поддержке SSML, и похоже, что движок Google (если это то, с чем вы тестируете) начинает экспериментировать с ним. Даже если они в конечном итоге полностью поддержат его, вам придется предложить пользователю перенастроить / установить конкретную версию этого механизма в вашем приложении.

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

Я не думаю, что уровень Android API должен иметь к этому какое-либо отношение, это просто будет зависеть от того, установлен ли у пользователя «xyz engine ver 234123.21314» или нет.

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

person Nerdy Bunz    schedule 19.06.2020