Proposal for <reco> tag

Some of the goals for the <reco> tag that have been discussed in this group
are:

1. Make it easy for developers, at least "keep the simple things simple".
    Even though he was discussing the <tts> tag, many of the considerations
    that Charles listed also apply to <reco>

http://lists.w3.org/Archives/Public/public-xg-htmlspeech/2011Jul/0027.html

       - Helps the API be more declarative.
       - Can control features through the standard DOM
       - Better for standard HTML developers (the main target?)
       - Provides a standard place to add event handlers.
       - Allows for visual control (examples: listening indicator, cancel
button)
       - Can support GUI related interaction considerations: focus and
visibility.

2. Enable a markup-affordance-based permissions model (click to speak) as
    Satish describes.

http://lists.w3.org/Archives/Public/public-xg-htmlspeech/2011Sep/0019.html.

    Preventing click-jacking is important if this is to be used for as one
of the
    permissions models.  Olli and Satish have described ways to handle this:

http://lists.w3.org/Archives/Public/public-xg-htmlspeech/2011Jul/0004.html

3.  From the User/UI perspective, the <reco> tag can show a visual indicator
    (for example, an icon of a microphone) that:
       - Provides an indication to the user that speech input can be used
for these fields.
       - By clicking on the icon, the user can simultaneously indicate which
field he
         wishes to speak into, and that he grants permission for audio to be
captured.

I believe the following proposal achieves all of these goals.

The <reco> tag would have attributes that mirror most of the attributes,
event-attributes and methods of the SpeechInputService. For example:

    <reco continuous="true" languages="en-AU" grammars="<builtin:datetime>"
         onresult="processResult()"/>

A comma-separated list of items can also be specified, for example:

    <reco continuous="true" languages="en-AU, en-GB"
         grammars="<builtin:datetime>, http://example.com/mygrammar.xml">

The reco tag would not explicitly bind to input fields or other tags,
instead it would use simple javascript to achieve this.  Keeping the
"keeping simple things simple" mindset, bindings can be achieved with inline
javascript code that developers can easily cut-and-paste along with the rest
of the markup.  See attached html file for examples.  (If you open this html
file in Chrome, the examples are functional...click on the microphone icon
to see them in action. I've emulated the reco tag using Chrome's current
experimental syntax.  I've also attached a screenshot in case you don't have
Chrome handy.)  The use of javascript also provides the flexibility to
enable advanced developers to create complex interactions, while keeping the
browser implementation and syntax simple.

While these examples are not purely declarative in the strict sense, they
achieve the spirit of this goal in that developers can easily specify speech
input, without having to connect multiple diverse sections of the file
together (they don't have to connect the javascript section of the file to
the html markup section). Instead, developers can use the common practice of
copying snippets of markup to "keep the simple things simple".

Received on Tuesday, 4 October 2011 17:58:05 UTC