PDA

View Full Version : XHTML+Voice кто-нибудь пробовал?



crazy-mike
09-18-2009, 07:56 AM
Ну серьёзно - эту хреновину поддерживает браузер Opera.
Оно для английского языка нормально делатет text-to-speech и даже правильно распознаёт голосовой ввод через микрофон. Я вчера пару тестов написал - мне понравилось. Text-to-speech там даже по-русски можно заставить говорить - но с довольно сильным американским акцентом. Для правильного распознавания голосового ввода - там тоже надо произносить слово "с американским акцентом".
:popcorn:
Кто-нибудь это пробовал? :popcorn:

crazy-mike
09-18-2009, 03:27 PM
:popcorn:
Вставил в iframe голосовой вывод текста с использованием XHTML+Voice.
Прикольная вещь. Правда текст туда лучше на английском загонять - а не русском "транслите". Основная проблема - обработка ev:load. В браузере Opera - просто обработчик "по загрузке документа XML" при "первой загрузке страницы" просто не срабатывает. Второй раз загрузить по кнопке "reload" - и всё работает. Но это как бы "неудобно". Я немного иначе сделал. Обработчик onload в основном документе вызывает функцию из документа внутри iframe. Функция вызывает метод focus() для <button>. У <button> срабатывает обработчик ev:focus - который и запускает text-to-speech.


<?xml version='1.0' encoding='KOI8-U'?>
<!DOCTYPE html PUBLIC "-//VoiceXML Forum//DTD XHTML+Voice 1.2//EN"
"http://www.voicexml.org/specs/multimodal/x+v/12/dtd/xhtml+voice12.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ev="http://www.w3.org/2001/xml-events"
xmlns:xf="http://www.w3.org/2002/xforms" >
<head>
<title>Example 1: "Hello, World"</title>
<ev:listener event="load" observer="zbody" handler="#sayHello" />
<form xmlns="http://www.w3.org/2001/vxml" id="sayHello">
<block>preeveteek</block>
<block>hello</block>
</form>
<script type="text/javascript">
function hello()
{ el=document.getElementById("bu");
el.focus();
el.style.display="none";
}
</script>
</head>
<body>

<button id="bu" ev:event="focus" ev:handler="#sayHello"
style="border :1px dotted; cursor :pointer; text-decoration :blink" >
click it!
</button>
</body>
</html>

Если iframe id="xyz" - тогда в основном документе <body onload="window.xyz.hello()" >.
Ко всему прочему можно ещё и после срабатывания голосового вывода это всё и спрятать.