Поддерживает ли Android TTS язык разметки речи? - PullRequest
10 голосов
/ 19 августа 2010

Передача следующего SSML ( Speech Synthesis Markup Language ) документа в com.svox.pico TextToSpeech engine приводила к чтению тела XML, но не контролировало элемент phoneme или элемент выделений Этот результат (без очевидного контроля SSML) одинаков как на Nexus One под управлением Android 2.2, так и на эмуляторе с AVD с уровнем SDK 8.

            String text = "<?xml version=\"1.0\"?>" +
                "<speak version=\"1.0\" xmlns=\"http://www.w3.org/2001/10/synthesis\" " +
                    "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " +
                    "xsi:schemaLocation=\"http://www.w3.org/2001/10/synthesis " +
                        "http://www.w3.org/TR/speech-synthesis/synthesis.xsd\" " +
                    "xml:lang=\"en-US\">" +

                    "tomato " +
                    "<phoneme alphabet=\"ipa\" ph=\"t&amp;#x259;mei&amp;#x325;&amp;#x27E;ou&amp;#x325;\"> tomato </phoneme> " +

                    "That is a big car! " +
                    "That <emphasis> is </emphasis> a big car! " +
                    "That is a <emphasis> big </emphasis> car! " +
                    "That is a huge bank account! " +
                    "That <emphasis level=\"strong\"> is </emphasis> a huge bank account! " +
                    "That is a <emphasis level=\"strong\"> huge </emphasis> bank account!" +
                "</speak>";
            mTts.speak(text, TextToSpeech.QUEUE_ADD, null);

Поддерживает ли какой-либо движок Android TTS какой-либо из элементов SSML?

Ответы [ 3 ]

3 голосов
/ 09 марта 2011

Я экспериментировал с SSML, и кажется, что механизм TTS автоматически оборачивает свои входные данные корневым элементом <speak>, поэтому, если вы пропустите его, он будет работать нормально, и вы не получите ошибку парсера.

Пример:

String text = "Testing <phoneme alphabet=\"xsampa\" ph=\"&#34;{k.t@`\"/>.";
mTts.speak(text, TextToSpeech.QUEUE_ADD, null);
2 голосов
/ 06 сентября 2010

Ответ, кажется, "своего рода". Пока поддерживаются не все теги SSML, но некоторые тестовые примеры использования тега <phoneme> находятся по адресу https://android.googlesource.com/platform/external/svox/+/89292811b7fe82e5c14fa13942779763627e26db

Хотя тестовые примеры выдают желаемый речевой вывод, они также генерируют сообщения об ошибках XML-анализатора в logcat. Я открыл вопрос об этих, казалось бы, некорректных сообщениях об ошибках в трекере проблем Android (выпуск 11010).

0 голосов
/ 30 марта 2018

Похоже, что android.speech.tts на уровне 23 SDK поддерживает подмножество SSML. Речевой текст может быть заключен в теги <speak>, и наблюдается <say-as>, а <break> нет. Нет документации по поддержке SSML.

...