Abstract:
A method, system and apparatus for voice enabling a user preference interface in a multimodal content browser. A method for voice enabling a user preference interface in a multimodal content browser can include matching voice input to a bound command in a speech grammar and invoking logic in the user preference interface consistent with the bound command in the speech grammar. The matching step can include comparing voice input to entries in a markup language specified speech grammar and locating the bound command in the specified speech grammar based upon the comparison. In this regard, the method further can include identifying a variable in the bound command, looking up the variable in a table, retrieving a corresponding parameter for the variable from the table, and replacing the variable with the corresponding parameter in the bound command.

Description:
BACKGROUND OF THE INVENTION 
     1. Statement of the Technical Field 
     The present invention relates to a user interface and more particularly to voice enabling a multimodal markup language defined user interface. 
     2. Description of the Related Art 
     The user interface of a computer program serves the function of receiving input from an end user for underlying program logic, and for providing output produced by the program logic. Initially a mere command prompt, the conventional user interface has evolved over time into the complex, graphical user interface familiar to most computing end users today. More recently, the graphical user interface has been rendered both portable and dynamic through the utilization of markup language and server page technologies, including the extensible hypertext markup language (XHTML). 
     Notwithstanding the tremendous advances in the visual user interface, the visual aspect can be appropriate in many circumstances. For instance, some applications are deployed in environments not conducive to the use of a keyboard and monitor. Examples include telephonic applications including interactive voice response systems and hands-free applications such as those deployed in an automobile, to name only a few. To accommodate these non-traditional environments, extensive use has been made of the audible user interface. In fact, whole technologies, including the voice extensible markup language (VoiceXML) have been developed to address this unique market segment. 
     Not all applications operate in an environment dominated by a particular modality of interaction. In fact, in some multimodal environments, often both audio and visual interface cues can be appropriate. Previously, multimodal environments required a separately specified user interface for each modality of interaction, including for instance an audio user interface and a graphical user interface. To generate a separate user interface for each specified modality of interaction, however, can be costly in terms of development time, expertise and maintenance. 
     Multimodal applications are computing applications which provide multiple interface types to accommodate the needs of prospective end users. Importantly, multimodal applications do not require separate user interfaces to accommodate each separate modality of interaction. Rather, the content of a multimodal application can specify the presentations and interactions in both visual and voice modalities. In most cases, the end user can choose a desired, most efficient input method for interacting with the underlying logic of the application. 
     Notably, the XHTML+Voice (X+V) markup language represents one technical effort to produce a multimodal application development environment. In X+V, XHTML and VoiceXML can be mixed in a single document. The XHTML portion of the document can manage visual interactions with an end user, while the VoiceXML portion of the document can manage voice interactions with the end user. The Multimodal Toolkit for WebSphere® Studio manufactured by IBM Corporation of Armonk, N.Y., United States incorporates X+V support in developing multimodal applications. In X+V, command, control and content navigation (C3N) can be enabled while simultaneously rendering multimodal content. The X+V profile specifies how to compute grammars based upon the visual hyperlinks present in a page. 
     SUMMARY OF THE INVENTION 
     The present invention addresses the deficiencies of the art in respect to multimodal page processing and provides a novel and non-obvious method, system and apparatus for voice enabling a user preference interface in a multimodal content browser. A method for voice enabling a user preference interface in a multimodal content browser can include matching voice input to a bound command in a speech grammar and invoking logic in the user preference interface consistent with the bound command in the speech grammar. The matching step can include comparing voice input to entries in a markup language specified speech grammar and locating the bound command in the specified speech grammar based upon the comparison. In this regard, the method further can include identifying a variable in the bound command, looking up the variable in a table, retrieving a corresponding parameter for the variable from the table, and replacing the variable with the corresponding parameter in the bound command. 
     The invoking step can include formulating an event utilizing the bound command and posting the event to an event handler in the user preference interface. For instance, in one aspect of the invention, the invoking step can include the step of invoking logic programmed to bring a specified grouping of elements in the user preference interface into focus. Yet, in another aspect of the invention, the invoking step can include the step of invoking logic programmed to set a preference in a specified grouping of elements in the user preference interface into focus. Finally, in yet another aspect of the invention, the invoking step can include first invoking logic programmed to bring a specified grouping of elements in the user preference interface into focus, and second invoking logic programmed to set a preference in the specified grouping. 
     A system for voice enabling a user preference interface in a multimodal content browser can include a speech grammar having one or more voice command entries. For instance, the speech grammar can be a VoiceXML compliant grammar having a link enabled for C3N. Each entry can have a voice command bound to a corresponding navigation command. The system further can include voice logic configured to match received voice input with one of the voice command entries in the speech grammar in order to invoke logic in the user preference interface consistent with a bound navigation command in the speech grammar. The system additionally can include a table of command variables and corresponding command parameters. In this case, the voice logic can include an additional configuration for substituting a variable in a voice command entry with a corresponding command parameter in the table. 
     Additional aspects of the invention will be set forth in part in the description which follows, and in part will be obvious from the description, or may be learned by practice of the invention. The aspects of the invention will be realized and attained by means of the elements and combinations particularly pointed out in the appended claims. It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the invention, as claimed. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The accompanying drawings, which are incorporated in and constitute part of this specification, illustrate embodiments of the invention and together with the description, serve to explain the principles of the invention. The embodiments illustrated herein are presently preferred, it being understood, however, that the invention is not limited to the precise arrangements and instrumentalities shown, wherein: 
         FIG. 1  is a pictorial illustration of a user preference interface to a multimodal browser configured for voice navigation; 
         FIG. 2  is a schematic illustration of a system for enabling voice navigation of a user preference interface to a multimodal browser; and, 
         FIG. 3  is a flow chart illustrating a process for enabling voice navigation of the user preference interface of  FIG. 2 . 
     
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     The present invention is a method, system and apparatus for voice enabling a user preference interface to a multimodal browser. In accordance with the present invention, a command and control grammar can be enabled for processing in conjunction with the navigation of a user preference interface to a multimodal content browser. The command and control fragment can recognize and process voice commands for showing portions of the user preference interface and for setting preferences in the user preference interface. The grammar further can include the settings available for selection when setting preferences in the user preference interface. 
     Importantly, through the operation of the present invention, the user preference interface can be voice navigated and manipulated without requiring a navigation of the entire user interface to the multimodal browser. Rather, the user preferences interface can be invoked directly so as to be particularly useful in a hands-free environment and also for the benefit of the visually impaired. As an additional advantage, the grammar can be defined in a markup language document and can bind speech recognition events to particular functions. Accordingly, as such the user preference interface behavior can be specified through a markup language document, the binding of events to functions can be dynamic in nature and can be established at runtime. 
     In further illustration,  FIG. 1  is a pictorial illustration of a user preference interface to a multimodal browser configured for voice navigation. A multimodal content browser can display markup language defined content which can include one or more user interface elements along with textual, visual and audible content. The user interface elements can be activated through a keyboard or pointing device. Also, the selection of the user interface elements can accommodate a different modality of interaction such as voice selection. 
     As shown in  FIG. 1 , a user preference interface  110  to a multimodal content browser can include one or more specific sections  120  which can be accessed by selecting a tab associated with a coupled one of the sections  120 . The sections, by way of example, each can include grouped user preferences in respect to the operation of the multimodal content browser. To that end, the sections  120  of the user preference interface  110  can include one or more user interface elements  130  including checkboxes, drop down boxes and text fields, to name only a few. The preference settings defined in the user interface elements  130  of the sections  120  can specify the user preferences for the multimodal content browser. 
     Importantly, a voice grammar  140  can bind voice commands to logic programmed to both set and show preferences in the sections  120  of the user preference interface  110 . In particular, the voice grammar  140  can bind variable placeholders in the voice grammar  140  to specific commands defined in a variable to command table  150 . The variable to command table  150  further can include a binding of variable placeholders in the voice grammar  140  to specific preference parameters. In this way, the binding can be dynamic in nature between voice command and user interface navigation as the voice grammar  140  can be a VoiceXML compliant grammar configured for C3N and defined in markup which can be produced for binding at runtime. 
     Hence, as an example, the browser can generate the following C3N compliant VoiceXML link grammar for the settings in the user preference window: 
     
       
         
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
             
           
               
                   
               
             
             
               
                 &lt;vxml:link eventexpr=“application.lastresult$.interpretation.c3n”&gt; 
               
             
          
           
               
                   
                 &lt;grammar&gt; 
               
             
          
           
               
                   
                 &lt;! [CDATA[ 
               
             
          
           
               
                   
                 #JSGF V1.0; 
               
               
                   
                 grammar user_preference; 
               
               
                   
                 public &lt;user_preference&gt; = &lt;show_preference&gt; {$ = 
               
               
                   
                 $show_preference} 
               
               
                   
                 | &lt;set_preference&gt; {$ = $set_preference}; 
               
               
                   
                 &lt;show_preference&gt; = Browser show preference 
               
               
                   
                 ( general {$.c3n = %general%;} | voice {$.c3n = 
               
               
                   
                 %voice%;}); 
               
               
                   
                 &lt;set_preference&gt; = Browser set preference 
               
               
                   
                 ( start page URL current page {$.c3n = %currentpage%;} 
               
               
                   
                 | listening mode &lt;listening_mode_setting&gt; {$ = 
               
               
                   
                 $listening_mode_setting}); 
               
               
                   
                 &lt;listening_mode_setting&gt; = ( push to talk {$.c3n = 
               
               
                   
                 %PTT%;} 
               
               
                   
                 | push to activate {$.c3n = %PTA%;} 
               
               
                   
                 | automatic push to activate {$.c3n = %APTA%;}); 
               
             
          
           
               
                   
                 ]]&gt; 
               
             
          
           
               
                   
                 &lt;/grammar&gt; 
               
             
          
           
               
                 &lt;/vxml:link&gt; 
               
               
                   
               
             
          
         
       
     
     The foregoing &lt;link&gt; fragment within the Voice XML grammar can be a resource that can be localized for the language supported by the end user device. Moreover, the foregoing &lt;link&gt; fragment can include variable placeholders which can be resolved at runtime using the following table: 
     
       
         
               
               
             
           
               
                   
               
               
                 Variable Name 
                 Event String 
               
               
                   
               
             
             
               
                 %general% 
                 “command.showpreference.general” 
               
               
                 %voice% 
                 “command.showpreference.voice” 
               
               
                 %currentpage% 
                 “command.setpreference.startpageurl.www.google.com” 
               
               
                 %PTT% 
                 “command.setpreference.listeningmode.PTT” 
               
               
                 %PTA% 
                 “command.setpreference.listeningmode.PTA” 
               
               
                 %APTA% 
                 “command.setpreference.listeningmode.APTA” 
               
               
                   
               
             
          
         
       
     
     The table can associate each variable with an event string which corresponds to a function in the multimodal content browser. By substituting the event string into the link grammar and then enabling the grammar, speech recognition events become bound to browser functions at runtime. Moreover, if the underlying speech engine is configured to support multiple languages, the table can be extended to support switching between languages. 
     For example, the exemplary grammar can match the phrase “Browser show preference voice” to the specified &lt;link&gt; event expression which can cause a VoiceXML event to be propagated with the string value “command.showpreference.voice”. The multimodal browser can respond to the event by interpreting the event to be a “show preference” event with the parameter for the show preference event as voice. The parameter specifically can refer to the portion of the user preference interface as the page known as “voice”. The logic assigned to the event then can display the voice page in the user preference interface to the multimodal content browser. 
     As another example, the exemplary grammar can match the phrase “Browser set preference listening mode push to talk”, to the specified &lt;link&gt; event expression which can cause a VoiceXML event to be propagated with the string value “command.setpreference.listeningmode.PTT”. The multimodal browser can respond to the event by interpreting the event to be a “set preference” event with the parameters for the “set preference” event as “listening mode” and “push to talk”. The logic assigned to the event then can display the corresponding preference page, in this case the voice preference page if it is not currently on focus, and subsequently can set the “listening mode” setting in the page to “push to talk”. 
     To enable the voice navigation of the multimodal content browser, a system can be arranged as shown in  FIG. 2 . Specifically,  FIG. 2  is a schematic illustration of a system for enabling voice navigation in a multimodal user preference interface. The system can include a user preference interface  210  to a multimodal content browser which can include one or more discrete groupings of user preference interface elements for setting user preferences for the browser. The user preference interface  210  can include associated interface controls  220  configured to invoke event logic  240  in response to the keyboard and mouse interactions of an end user with the elements of the user preference interface  210 . 
     Notably, the user preference interface  210  can be voice enabled for navigation by way of the voice grammar  230 . The voice grammar  230  can be a markup language specified grammar such as that which conforms with the VoiceXML specification. The voice grammar  230  further can include bindings between spoken words and phrases and specified commands  280 ,  290 . Voice logic  250  can match spoken words and phrases to the specified commands  280 ,  290  such that the utterance of the words and phrases can result in the invocation of the event logic  240  just as if the event had been triggered through the comparable keyboard and mouse interactions of an end user. 
     For instance, the utterance “Browser Show Preference Voice” can be matched by the voice logic  250  in the voice grammar  230  to the binding “command.showpreference.voice”. A resulting show preference event having a “voice” parameter can be posted to the event logic  240 . The event logic  240  in turn can invoke the show preference logic  260  with the “voice” parameter to bring into focus the voice grouping of elements in the user preference interface  210 . Similarly, the utterance “Browser Set Preference Listening Mode Push-to-Talk” can be matched by the voice logic  250  in the voice grammar  230  to the binding “command.setpreference.listeningmode.PTT”. A resulting set preference event having “listeningmode” and “PTT” parameters can be posted to the event logic  240 . The event logic  240  in turn can invoke the set preference logic  270  with the “listeningmode” and “PTT” parameters to bring into focus the voice grouping of elements in the user preference interface  210  and to apply the PTT setting to the listening mode element of the grouping in the user preference interface  210 . 
     In more particular illustration,  FIG. 3  is a flow chart illustrating a process for enabling voice navigation in the multimodal user preference interface of  FIG. 2 . Beginning in block  310 , voice input can be received and the voice interpreter can apply a loaded speech grammar to the voice input. Subsequently, in decision block  320 , if the voice input can be matched to a show preference entry in the grammar, in block  330  the parameters associated with the voice input and variably specified by the speech grammar can be extracted from a corresponding table variable to command table. Consequently, in block  340 , a show preference event with the extracted parameters can be posted to the event handler for the user preference interface. 
     In decision block  320 , if the voice input is determined not to match a show preference entry, in decision block  350 , if the voice input can be matched to a set preference entry in the grammar, in block  360  the parameters associated with the voice input and variably specified by the speech grammar can be extracted from a corresponding table variable to command table. Consequently, in block  370 , a set preference event with the extracted parameters can be posted to the event handler for the user preference interface. 
     The present invention can be realized in hardware, software, or a combination of hardware and software. An implementation of the method and system of the present invention can be realized in a centralized fashion in one computer system, or in a distributed fashion where different elements are spread across several interconnected computer systems. Any kind of computer system, or other apparatus adapted for carrying out the methods described herein, is suited to perform the functions described herein. 
     A typical combination of hardware and software could be a general purpose computer system with a computer program that, when being loaded and executed, controls the computer system such that it carries out the methods described herein. The present invention can also be embedded in a computer program product, which comprises all the features enabling the implementation of the methods described herein, and which, when loaded in a computer system is able to carry out these methods. 
     Computer program or application in the present context means any expression, in any language, code or notation, of a set of instructions intended to cause a system having an information processing capability to perform a particular function either directly or after either or both of the following a) conversion to another language, code or notation; b) reproduction in a different material form. Significantly, this invention can be embodied in other specific forms without departing from the spirit or essential attributes thereof, and accordingly, reference should be had to the following claims, rather than to the foregoing specification, as indicating the scope of the invention.