198 lines
9.9 KiB
HTML
198 lines
9.9 KiB
HTML
<html xmlns:mso="urn:schemas-microsoft-com:office:office" xmlns:msdt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882">
|
|
<head>
|
|
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
|
<meta HTTP-EQUIV="Expires" CONTENT="Tue, 04 May 1999 21:29:02 GMT">
|
|
<title>Speech / SAPI / Cicero</title>
|
|
<link rel="stylesheet" href="rcml.css" type="text/css">
|
|
|
|
<!--[if gte mso 9]><xml>
|
|
<mso:CustomDocumentProperties>
|
|
<mso:Assigned_x0020_To msdt:dt="string">MarkCarr</mso:Assigned_x0020_To>
|
|
</mso:CustomDocumentProperties>
|
|
</xml><![endif]-->
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<!-- Martian Text -->
|
|
<table border=0 cellpadding=0 cellspacing=0 height=39>
|
|
<tr>
|
|
<td><a class="logo" href="http://RCML">RCML</a>
|
|
<span class="logodot">.</span> <span class="logohead"><a href="Schema/namespaces.htm">Name
|
|
Spaces</a>
|
|
</span>
|
|
<span class="logodot">.</span> <span class="logohead">CICERO</span></td>
|
|
</tr>
|
|
</table>
|
|
|
|
<hr>
|
|
|
|
<!-- Site Directory -->
|
|
<p><span class="section">Cicero</span>
|
|
<p>For more information in Cicero, checkout <a href="http://cicero">http://cicero</a>.
|
|
Cicero is a 'multi input' technology, to you and me, that means I can speak into
|
|
and 'pen' into my applications. For more information about the grammars for each
|
|
control, <a href="controlcfg.htm">click here</a>.</p>
|
|
<p>The CICERO namespace consists of a very small schema for voice enabling
|
|
controls in RCML. The cicero namepsace loader & runtime do most of the work,
|
|
with the schema exposing exciting customization features, like synonyms.</p>
|
|
<p>For example to voice enable a BUTTON, CHECKBOX, RADIOBUTTON, COMBO, LIST,
|
|
simply add <CICERO:CMD/> as a child of the element you wish to enable, the
|
|
loader does the rest, e.g.</p>
|
|
<pre><RCML>
|
|
...
|
|
<BUTTON ID="1" TEXT="OK" X="125" Y="7" >
|
|
<b> <CICERO:CMD /></b>
|
|
</BUTTON>
|
|
...
|
|
</RCML></pre>
|
|
|
|
<p><span class="section">How to voice enable - What are the Elements and Attributes?</span>
|
|
<dl>
|
|
<dd><CICERO:CMD></dd>
|
|
</dl>
|
|
<p>Currently these are work in progress. For most controls the CMD element is
|
|
sufficient. It has attributes of SYNONYM, e.g.</p>
|
|
<pre><RCML>
|
|
...
|
|
<BUTTON ID="1" TEXT="OK" X="125" Y="7" >
|
|
<b> <CICERO:CMD SYNONYM="Sure"/></b>
|
|
</BUTTON>
|
|
...
|
|
</RCML></pre>
|
|
|
|
<p>The CMD element walks up to its parent, and decides what schema to use to
|
|
listen for commands on the control. Here it will additionally listen for the
|
|
synonym "Sure" while it listens for the "OK".</p>
|
|
<dl>
|
|
<dd><CICERO:CFG FILE="filename"/></dd>
|
|
</dl>
|
|
<p>If youre really adventurous and have written your own SAPI5 XML CFG file
|
|
(http://speech) then you can use this. Of course, when your rules file, the
|
|
runtime really doesn't know what you want to do with this information. If this
|
|
is a child of a combo, it will attempt to set the text on the combo to that
|
|
recognized.</p>
|
|
<dl>
|
|
<dd><CICERO:FAILURE TEXT="failure text"/></dd>
|
|
</dl>
|
|
<p>So what do we do if we recognize a command, but cannot execute it? If you
|
|
have a FAILURE as a child of your element, that will be spoken.</p>
|
|
<pre><RCML>
|
|
...
|
|
<CHECKBOX ID="1" TEXT="R&ead only" X="125" Y="7" >
|
|
<b> <CICERO:CMD>
|
|
</b> <b> <CICERO:FAILURE TEXT="Please select a file before setting its attributes"/>
|
|
</CICERO:CMD>
|
|
</b></BUTTON>
|
|
...
|
|
</RCML></pre>
|
|
|
|
<p>If the checkbox "Read only" is disabled, and the user says
|
|
"Read", the cicero namespace extension runtime will respond by saying
|
|
"Please select the file before setting its attributes".</p>
|
|
<p> </p>
|
|
<p><span class="section">What's the 80% coverage?</span>
|
|
<p>The attempt with the cicero namespace is to allow the user to command the
|
|
dialog, without the notion of focus. The user does not, for example, need to say
|
|
"Font Name Courier, Font Style Bold", but simply "Courier
|
|
Bold". As a result the grammar rules for each control are continually
|
|
running, with little prefixing.</p>
|
|
<p>For each control there is clearly going to be a well known grammar that can
|
|
be used to control it. In addition each control has it's own set of 'voice
|
|
specific' gotchas.</p>
|
|
|
|
<hr>
|
|
<p>Selecting from a list </p>
|
|
<p>Lists are generally filled at WM_INITDIALOG time, a list of fonts etc.
|
|
However during the run of the dialog, some lists are added to, e.g. on the Run
|
|
dialog, the MRU list 'grows'.</p>
|
|
<p>In addition to this, some lists are so big that the user may make assumptions
|
|
about them. Take the Font Picker dialog. The user is presented with a list of
|
|
fonts. The user says "Courier, Bold, OK". And assumes this will work
|
|
in all cases. Imagine now that the developers have asked to display only non
|
|
true-type fonts, resulting in no Courier. The user will say "Courier, Bold,
|
|
OK", and we find our first gotcha.</p>
|
|
<p>Any runtime generated schema, would not include an entry for
|
|
"Courier" in the above scenario. Using various annotation schemes,
|
|
e.g. CONTENT="FONTS" in RCML, the name space extension could easily
|
|
generate a grammar based on its understanding of the available fonts, not just
|
|
the ones displayed to the user, this would/could include Courier. When the user
|
|
utters "Courier" the grammar rule fires, and the extension attempts to
|
|
set the text, upon failure, the <CICERO:FAILURE> is processed.</p>
|
|
<p>A slightly more understandable and more likely example is combos. As we know,
|
|
the inherent problem with a combo as a visual device is that the domain is not
|
|
clearly presented to the user (unlike a list). And this requires the use to
|
|
'drop the combo' and 'browse' the list of options. However, users are pretty
|
|
smart, and when presented with a combo for picking a day of the week, make
|
|
assumptions. Again, if the developer has restricted the days to only Week days,
|
|
the user may still utter "Sunday". Any runtime generated schema will
|
|
probably not have a rule for Sunday, and the machine will ignore the user. The
|
|
user will attempt a few more times, before giving up, dropping the combo, and
|
|
realizing that "Sunday" is not an option.</p>
|
|
<p>Again, in RCML the list of items are children of a combo, so this 'static'
|
|
list can be used as the basis of the runtime generated grammar.</p>
|
|
|
|
<hr>
|
|
<p>Disabled controls. </p>
|
|
<p>The rule for all controls are running regardless of visibility, or enabled
|
|
state. When speaking to a dialog the user may command a disabled control.
|
|
Currently if this happens to a disabled control, the failure text is spoken.
|
|
It's assumed that this text will contain enough information to allow the user to
|
|
rectify the matter. Ideally the cicero runtime would automatically adjust the
|
|
'blocking' UI, to make the change. In the case of the Effects tab in Windows
|
|
2000, the "Fade Effect" and "Scroll Effect" are disabled if
|
|
the user has turned off "Transition Effects for menus and tooltips".
|
|
It would be ideal that if the user said "Fade Effect" the checkbox
|
|
would become checked, if it were not currently so.</p>
|
|
|
|
<hr>
|
|
<p>Improving controls </p>
|
|
<p>The user may be presented with an edit control and is expected to enter a
|
|
date. The runtime may build a date grammar, but it may have difficulty
|
|
determining what kind of date format should be entered into the edit control,
|
|
e.g. DD-MM-YY or dddd mmmm? Again, though attributing in the RCML file, these
|
|
can generally be sorted out.</p>
|
|
|
|
<hr>
|
|
<p>Relationships </p>
|
|
<p>The gotcha here is when the user becomes complacent, and says things like
|
|
"Today/Tomorrow" and "Two days later". Here they are
|
|
entering data related to other controls. Imaging a form for filling in departure
|
|
and arrival times. The user may say "today at noon" "returning
|
|
two days later". The first edit control (departure) is provided with the
|
|
current date, the second edit control (return) needs to know it's relationship
|
|
to the departure control, and act accordingly.</p>
|
|
|
|
<hr>
|
|
<p>Control State. </p>
|
|
<p>When our controls are designed, we design them with the mouse in mind, and if
|
|
we're luck with the keyboard. Take the checkbox for example. Most people know
|
|
that space will toggle the check, this is analogous to a mouse click. Few people
|
|
know that '-' and '+' will force the state to 'unchecked' and 'checked' and even
|
|
fewer know that '=' is the same as '+'.</p>
|
|
<p>When commanding the user may often want this level of control, and not simply
|
|
a toggle command, e.g. "Bold On" and "Bold Off". When the
|
|
GUI is not prominent or the user isn't paying attention, they may not remember
|
|
the state, and realize if they wish to toggle the UI or not. They will simply
|
|
say what they want, e.g. "Do not reinvest" to ensure that the
|
|
"Reinvest Income" checkbox in Investor's Transaction dialog will NOT
|
|
be checked.</p>
|
|
|
|
<hr>
|
|
<p>Many controls </p>
|
|
<p>Often dialogs contain many controls of the same type, e.g. many buttons, many
|
|
sliders. Where the text for the controls are obvious, e.g. checkboxes, we can be
|
|
pretty accurate at the command the user wishes to use for that control. However
|
|
when there are many sliders on a page, e.g. hue, contrast, brightness, these
|
|
controls may need some prefixing, e.g. "Contrast 50%". In addition,
|
|
synonyms can be used "10% brighter" and "A bit
|
|
redder", where brighter and redder are the same as "up".</p>
|
|
<hr>
|
|
<p>
|
|
<font FACE="Arial" SIZE="2">If you have any more needs, or wish
|
|
to debate the above, <a href="mailto:rcml@microsoft.com?subject=RCML%20:%20Developer%20Requests">click
|
|
here</a><p>
|
|
|
|
</body>
|
|
</html>
|