Abstract:
A system receives a design document, parses the design document into voice extensible markup language (VXML) elements, and creates a VXML document from the parsed VXML elements.

Description:
BACKGROUND INFORMATION 
     Interactive voice response (IVR) refers to a computerized system that allows a user, typically a telephone caller, to select an option from a voice menu or otherwise interface with a computer system. Generally, the system plays pre-recorded voice prompts to which the user responds by either pressing a number on a telephone keypad or speaking to the system. 
     Voice extensible markup language (“VoiceXML” or “VXML”) is an open standard developed by the World Wide Web Consortium (W3C) for IVR applications. An IVR application user interface may be documented in a portion (e.g., a dialog design portion) of a design document (e.g., a Service Design Document or “SDD”). A SDD may include an application summary, application call flows, application specification requirements, and dialog design for an IVR application. The dialog design portion of the SDD may be used to show what the IVR application will do and how it will behave. The dialog design portion may be used to build the IVR application in the form of VXML documents. The VXML documents may include VXML elements that conform to the specifications recommended by W3C. 
     The dialog design portion of the SDD may be arranged in tables (e.g., in a spreadsheet or in a table provided in a word processing document) that contain VXML element properties. For example, the tables may include the following VXML element properties: (1) a previous dialog state; (2) type of grammar to be activated during the dialog state; (3) prompts to play during transitioning from a previous dialog state; (4) prompts to play during an initial dialog state; (5) “no speech” (nothing spoken) timeout prompts; (6) “no match” (something spoken outside of the grammar) timeout prompts; (7) “help” prompts; and/or (8) a next dialog state. 
     Conventionally, an IVR designer or programmer manually creates VXML documents for an IVR application from a design document. Generally, this involves the programmer reading the design document and creating VXML documents that implement the dialog design portion of the design document. This may be very time consuming and may cause erroneous dialog design to be input by the programmer in the VXML documents. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate one or more embodiments of the invention and, together with the description, explain aspects of the invention. In the drawings: 
         FIG. 1  is a diagram of an overview of an exemplary implementation described herein; 
         FIG. 2  is an exemplary diagram of a device in which systems and methods consistent with the principles of the invention may be implemented; 
         FIG. 3  is a diagram of a portion of an exemplary computer-readable medium that may be used by the device of  FIG. 2 ; 
         FIG. 4A  is a diagram of a system for generating a VXML document(s) from a design document(s) according to an exemplary implementation; 
         FIG. 4B  is a diagram of an exemplary portion of the design document of  FIG. 4A ; 
         FIGS. 4C and 4D  are diagrams of exemplary portions of the VXML document of  FIG. 4A ; 
         FIG. 5  is a functional diagram of the components of the exemplary system of  FIG. 4A ; 
         FIG. 6  is a diagram of a user interface of the exemplary system of  FIGS. 4A and 5 ; 
         FIG. 7  is a diagram of a VXML element selector of the exemplary system of  FIGS. 4A and 5 ; 
         FIG. 8  is a diagram of a design document selector of the exemplary system of  FIGS. 4A and 5 ; 
         FIG. 9  is a diagram of a VXML specifications unit of the exemplary system of  FIGS. 4A and 5 ; 
         FIG. 10  is a diagram of a design document parser of the exemplary system of  FIGS. 4A and 5 ; 
         FIG. 11  is a diagram of a VXML element creator of the exemplary system of  FIGS. 4A and 5 ; 
         FIG. 12  is a diagram of a VXML document publisher of the exemplary system of  FIGS. 4A and 5 ; 
         FIG. 13  is a diagram of a VXML document saver of the exemplary system of  FIGS. 4A and 5 ; and 
         FIGS. 14A and 14B  provide a flowchart of an exemplary process for generating a VXML document(s) from a design document(s). 
     
    
    
     DETAILED DESCRIPTION 
     The following detailed description of the invention refers to the accompanying drawings. The same reference numbers in different drawings may identify the same or similar elements. Also, the following detailed description does not limit the invention. 
     Implementations described herein may provide systems and methods for automatically generating a VXML document(s) from a portion (e.g., a dialog design portion) of a design document(s) (e.g., a SDD) for a speech recognition IVR application. The design portion may describe the desired VXML elements for the VXML document(s), and the VXML document(s) may follow the specifications recommended by the W3C for a particular version of VXML (e.g., VoiceXML 2.0 and/or 2.1). The automatically generated VXML document(s) may be deployed on a server (e.g., a web server or an application server), and may be fetched by a speech engine (e.g., to navigate through a call flow). Automatic generation of VXML document(s) may help reduce the development time, the development cost, and/or manual input errors for speech recognition IVR applications. 
     For example, in one implementation, as shown in  FIG. 1 , a system for generating VXML document(s) may receive a design document (e.g., a SDD) that specifies the VXML elements to include in the VXML document(s). The system may also parse the design document into VXML elements, and may create a VXML document(s) from the parsed VXML elements. The system may output the automatically created VXML document(s) for deployment and/or utilization by a speech engine. The systems and methods described herein may be used in any industry involved in the development of speech recognition IVR applications using VXML documents, and/or any other industry using VXML documents. 
     A “document,” as the term is used herein, is to be broadly interpreted to include any machine-readable and machine-storable work product. A document may include, for example, a file, a combination of files, one or more files with embedded links to other files, a word processing file (e.g., a Microsoft Word® file), a spreadsheet (e.g., a Microsoft Excel® spreadsheet), a VXML document, etc. In the context of the Internet, a common document is a web page. Web pages often include textual information and may include embedded information (such as meta information, images, hyperlinks, etc.) and/or embedded instructions (such as Javascript, etc.). 
     A “design document,” as the term is used herein, is to be broadly interpreted to include any machine-readable and machine-storable work product. A design document may include, for example, any document that includes VXML elements, information capable of being converted into VXML elements, information capable of being interpreted as VXML elements, etc. 
     A “VXML element,” as the term is used herein, is to be broadly interpreted to include any VXML element (e.g., command) capable of being used in a VXML document. For example, the following VXML elements may be used in VoiceXML 2.0 and/or 2.1: &lt;assign&gt;, &lt;audio&gt;, &lt;block&gt;, &lt;break&gt;, &lt;catch&gt;, &lt;choice&gt;, &lt;clear&gt;, &lt;data&gt;, &lt;disconnect&gt;, &lt;else&gt;, &lt;elseif&gt;, &lt;emphasis&gt;, &lt;enumerate&gt;, &lt;error&gt;, &lt;example&gt;, &lt;exit&gt;, &lt;field&gt;, &lt;filled&gt;, &lt;foreach&gt;, &lt;form&gt;, &lt;goto&gt;, &lt;grammar&gt;, &lt;help&gt;, &lt;if&gt;, &lt;initial&gt;, &lt;item&gt;, &lt;link&gt;, &lt;log&gt;, &lt;mark&gt;, &lt;menu&gt;, &lt;meta&gt;, &lt;noinput&gt;, &lt;nomatch&gt;, &lt;object&gt;, &lt;one-of&gt;, &lt;option&gt;, &lt;paragraph&gt;, &lt;param&gt;, &lt;phoneme&gt;, &lt;prompt&gt;, &lt;property&gt;, &lt;prosody&gt;, &lt;record&gt;, &lt;reprompt&gt;, &lt;return&gt;, &lt;rule&gt;, &lt;ruleref&gt;, &lt;say-as&gt;, &lt;script&gt;, &lt;send&gt;, &lt;sentence&gt;, &lt;sub&gt;, &lt;subdialog&gt;, &lt;submit&gt;, &lt;tag&gt;, &lt;throw&gt;, &lt;token&gt;, &lt;transfer&gt;, &lt;value&gt;, &lt;var&gt;, and &lt;vxml&gt;. 
       FIG. 2  is an exemplary diagram of a device  200  that may be used with aspects of the invention. A device may be defined as a personal computer, a wireless telephone, a personal digital assistant (PDA), a lap top, or another type of computation or communication device. 
     Device  200  may include a bus  210 , a processor  220 , a main memory  230 , a read only memory (ROM)  240 , a storage device  250 , an input device  260 , an output device  270 , and a communication interface  280 . Bus  210  may include a path that permits communication among the elements of device  200 . 
     Processor  220  may include a processor, microprocessor, or processing logic that may interpret and execute instructions. Main memory  230  may include a random access memory (RAM) or another type of dynamic storage device that may store information and instructions for execution by processor  220 . ROM  240  may include a ROM device or another type of static storage device that may store static information and instructions for use by processor  220 . Storage device  250  may include a magnetic and/or optical recording medium and its corresponding drive. 
     Input device  260  may include a mechanism that permits an operator to input information to device  200 , such as a keyboard, a mouse, a pen, voice recognition and/or biometric mechanisms, etc. Output device  270  may include a mechanism that outputs information to the operator, including a display, a printer, a speaker, etc. Communication interface  280  may include any transceiver-like mechanism that enables device  200  to communicate with other devices and/or systems. For example, communication interface  280  may include mechanisms for communicating with another device or system via a network. 
     As will be described in detail below, device  200  may perform certain operations to generate a VXML document(s) from a design document(s). Device  200  may perform these operations in response to processor  220  executing software instructions contained in a computer-readable medium, such as memory  230 . A computer-readable medium may be defined as a physical or logical memory device and/or carrier wave. 
     The software instructions may be read into memory  230  from another computer-readable medium, such as data storage device  250 , or from another device via communication interface  280 . The software instructions contained in memory  230  may cause processor  220  to perform processes that will be described later. Alternatively, hardwired circuitry may be used in place of or in combination with software instructions to implement processes consistent with the principles of the invention. Thus, implementations consistent with the principles of the invention are not limited to any specific combination of hardware circuitry and software. 
       FIG. 3  is a diagram of a portion of an exemplary computer-readable medium  300  that may be used by a device, such as device  200 . In one implementation, computer-readable medium  300  may correspond to memory  230  of device  200 . The portion of computer-readable medium  300  illustrated in  FIG. 3  may include an operating system  310 , automatic VXML document generation software  320 , and VXML document editor software  330 . Automatic VXML document generation software  320  and/or VXML document editor software  330  may be included in operating system  310  or may be separate from operating system  310 . VXML document editor software  330  may be included in automatic VXML document generation software  320  or may be separate from automatic VXML document generation software  320 . 
     Operating system  310  may include operating system software, such as the Microsoft Windows®, Apple MAC OS®, Linux®, Unix®, IBM OS/2®, and/or operating systems for personal digital assistants, cell phones, or other types of computation or communication devices. 
     Automatic VXML document generation software  320  may include an executable object or process. Device  200  may obtain the executable object or process from a server or from a disk, tape, network, CD-ROM, etc. Alternatively, the executable object or process may be pre-installed on device  200 . 
     Automatic VXML document generation software  320  may permit automatic generation of a VXML document(s) from a design document(s). Automatic VXML document generation software  320  may be automatically activated upon initiation of operating system  310 . Alternatively, automatic VXML document generation software  320  may be activated when instructed by a user. In either case, automatic VXML document generation software  320  may permit automatic generation of a VXML document(s) from a design document(s), as will be described below. 
     VXML document editor software  330  may include an executable object or process. Device  200  may obtain the executable object or process from a server or from a disk, tape, network, CD-ROM, etc. Alternatively, the executable object or process may be pre-installed on device  200 . 
     VXML document editor software  330  may permit editing of a VXML document(s). VXML document editor software  330  may operate in conjunction with automatic VXML document generation software  320 , and enable editing of VXML document(s) generated by software  320 . In another implementation, VXML document editor software  330  may be part of automatic VXML document generation software  320 . In this latter implementation, automatic VXML document generation software  320  may perform the functions of VXML document editor software  330 . In yet another implementation, VXML document software  330  may be a process separate from operating system  310  and/or automatic VXML document generation software  320 . 
     VXML document editor software  330  may be automatically activated upon initiation of operating system  310  and/or automatic VXML document generation software  320 . Alternatively, VXML document editor software  330  may be activated when instructed by a user. In either case, VXML document editor software  330  may permit editing of VXML document(s), as will be described below. 
       FIG. 4A  is an exemplary diagram of a system  400  for generating a VXML document  410  from a design document  405 . According to one implementation, one or more of the functions of system  400 , as described below, may be performed by a device (e.g., device  200 ). According to another implementation, one or more of these functions may be performed by an entity separate from device  200 , such as a computer associated with device  200 . 
       FIG. 4B  is a diagram of an exemplary portion of design document  405 . Design document  405  may include a variety of information, including an application summary, application call flows, application specification requirements, and/or a dialog design. As shown in  FIG. 4B , a portion of a dialog design section of design document  405  may include a variety of information, including the dialog states that may describe the dialog interaction to be used in an IVR application. The dialog design section may also include tables containing VXML element properties. For example, the dialog design section may include a previous dialog state section  415  (e.g., a “GetPIN” section), a pre-condition and action section  420 , and/or a prompts section  425 . Prompts section  425  may be divided into columns (e.g., a condition column, a name column, a wording column, and a barge-in column). As further shown in  FIG. 4B , prompts section  425  may include a prompt  430  to play during an initial dialog state (e.g., during an initial customized state for a PIN having a fixed number of digits), a prompt  435  to play during another initial dialog state (e.g., during an initial customized state for a PIN having a variable number of digits), and a timeout prompt  440 . 
     Although  FIG. 4B  shows exemplary information that may be included in design document  405 , in other implementations, design document  405  may include fewer or additional types of information. For example, design document  405  may include the kind of grammar (e.g., dates, currency, phone, etc.) to be activated during the dialog state, prompts to play during transitioning from a previous dialog state, prompts to play during an initial dialog state, “no speech” timeout prompts, “no match” timeout prompts, “help” prompts, a next dialog state, etc. 
       FIGS. 4C and 4D  are diagrams of exemplary portions of VXML document  410 . VXML document  410  may include a variety of information, including any of the specifications recommended by the W3C and defined in VoiceXML 2.0 and/or 2.1. VXML document  410  may be a static document (i.e., the pages of VXML document may be called directly), or a dynamic document. Dynamic VXML documents, for example, may be in the form of servlets, java server pages, active server pages, etc. In one example, if a user calls an IVR application, the application may forward the user to a VXML document, as may be specified by the IVR call flow. A voice browser may render the VXML document, may follow the rules specified by the WC3 in VoiceXML 2.0 and/or 2.1, and may play the appropriate prompts. For example, a user may call an IVR application, and, in one of the dialog states, the IVR application may prompt the user to input a seven digit account identification. For this dialog state, a “no input” event may be defined as when there is no input from the user for four seconds. In other words, if the user does not key in or speak the account identification after four seconds, the voice browser may activate the “no input” event and may play the appropriate prompts specified by a &lt;noinput&gt; VXML element in the VXML document. 
     As shown in  FIGS. 4C and 4D , a portion of VXML document  410  may include an introductory section  445  referring to the VXML version used for the VXML document. VXML document  410  may also include a block section  450  that may provide information relating to the initial prompt to be played. As further shown in  FIG. 4C , the portion of VXML document  410  may also include a field type section  455  that may specify the input type for the user&#39;s input, a first prompt section  460  relating to a “no input” event, and a second prompt section  465  relating to a “no input” event. As further shown in  FIG. 4D , the portion of VXML document  410  may include a script section  470  that provides a list of variables and the audio prompts (e.g., “For more information say help”) associated with each variable. 
     Although  FIGS. 4C and 4D  show exemplary information that may be included in VXML document  410 , in other implementations, VXML document  410  may include fewer or additional types of information. For example, VXML document  415  may include any of the VXML elements described above. 
       FIG. 5  is a functional diagram of the components of system  400 . As shown in  FIG. 5 , system  400  may include a user interface  500 , a VXML element selector  510 , a design document selector  520 , a VXML specifications unit  530 , a design document parser  540 , a VXML element creator  550 , a VXML document publisher  560 , and a VXML document saver  570 . System  400  may alternatively include other components and/or component interrelations not shown in  FIG. 5 . 
     User interface  500  may display an interface that permits a user to interact with system  400 . VXML element selector  510  may permit selection of different VXML elements (e.g., any of the VXML elements defined above) for a dialog design described in a design document (e.g., design document  405 ). For example, if the dialog design includes a &lt;field&gt; VXML element, then the user, via VXML element selector  510 , may select “yes” for the field element and may also select the type of field (e.g., digits, Boolean, etc.). In another example, the dialog design portion of the design document may require the user to enter digits between “4” and “8.” This may be accomplished with VXML element selector  510  by choosing the field type “digits” and entering the minimum and maximum number of digits as “4” and “8.” 
     Document design selector  520  may permit selection of a design document, and VXML specifications unit  530  may specify the VXML elements and the relationships between them. Design document parser  540  may parse the design document into, e.g., VXML elements, prompts, other properties, etc. The individual elements of the parsed design document may be used by VXML element creator  550  to assemble a VXML document(s). VXML document publisher  560  may display the created VXML document and may permit editing of the VXML document. VXML document publisher  560  may also permit selection of another design document (e.g., via design document selector  520 ). The VXML document may be named and saved by VXML document saver  570 . 
     Although  FIG. 5  shows user interface  500 , VXML element selector  510 , design document selector  520 , VXML specifications unit  530 , design document parser  540 , VXML element creator  550 , VXML document publisher  560 , and VXML document saver  570  as separate components, the tasks of such components may be performed by a single processor (e.g., processor  220 ) or multiple tasks may be implemented by a single software component. 
       FIGS. 6-13  are diagrams illustrating the components of the exemplary system (e.g., system  400 ) in additional detail. 
     User interface  500 , as shown in  FIG. 6 , may perform a variety of tasks to aid in the generation of VXML document(s). For example, in one implementation, user interface  500  may include a user interface generator  600  that generates a user interface (e.g., a graphical user interface provided on output device  270  of device  200 ) for use by the other components of system  400 . The user interface may be a stand alone application, a web page, a client/server application, etc. The user interface may be written in a variety of programming languages, including, for example, any of the object oriented programming languages (e.g., java, c++, c#, visual basic, etc.). 
     The user interface, via VXML element selector  510 , may provide a display that enables selection of different VXML elements to be included in the VXML document(s) (e.g., the VXML elements set forth in the dialog design portion of the design document). The user interface, via design document selector  520 , may provide a display that enables selection of the design document. If a design document is selected, the components of system  400  (e.g., VXML specifications unit  530 , design document parser  540 , and VXML element creator  550 ) may generate a VXML document(s), and the user interface, in conjunction with VXML document publisher  560 , may display the generated VXML document(s). The user interface, via VXML document publisher  560 , may provide a display that permits the VXML document(s) to be edited and/or may permit selection of another design document. In conjunction with VXML document saver  570 , the user interface may provide a display that permits the generated VXML document(s) to be named and/or saved. 
     Although  FIG. 6  shows an exemplary task performed by user interface  500 , in other implementations, user interface  500  may perform additional tasks that may be used to generate VXML document(s). 
     VXML element selector  510 , as shown in  FIG. 7 , may perform a variety of tasks to aid in the generation of VXML document(s). For example, in one implementation, VXML element selector  510  may include a field element selector  700  that permits selection of a field element, a field type selector  710  that permits selection of a field type for a selected field element, an application namer  720  that permits specification of an application name associated with a selected field element, etc. VXML element selector  510  may aid the selection of VXML elements to conform to VoiceXML 2.0 and/or 2.1. For example, VXML element selector  510  may permit selection of a field element (e.g., via field element selector  700 ) if a dialog design portion of a design document includes a field element. If a field element is selected, then VXML element selector  510  (via field type selector  710 ) may permit selection of what type of field (e.g., digits, Boolean, currency, date, etc.) may be used for the field element. For example, if the dialog design portion may require that the IVR application user enter a date, then VXML element selector  510  may enable selection of the field type as a “date.” 
     Although  FIG. 7  shows exemplary tasks performed by VXML element selector  510 , in other implementations, VXML element selector  510  may perform additional tasks that may be used to generate VXML document(s). Furthermore, although  FIG. 7  shows the components of VXML element selector  510  as interconnected, in other implementations, the components of VXML element selector  510  may be separate, non-interconnected components. 
     Design document selector  520 , as shown in  FIG. 8 , may perform a variety of tasks to aid in the generation of VXML document(s). For example, in one implementation, design document selector  520  may include a design document selector  800  that permits selection of a design document (e.g., a SDD), a dialog design portion selector  810  that permits selection of a dialog design portion of a selected design document, etc. Design document selector  520  may perform such tasks in conjunction with the user interface (e.g., user interface  500 ), or over a command line. The dialog design portion of the design document may include the VXML elements for a given dialog state. 
     Although  FIG. 8  shows exemplary tasks performed by design document selector  520 , in other implementations, design document selector  520  may perform additional tasks that may be used to generate VXML document(s). Furthermore, although  FIG. 8  shows the components of design document selector  520  as interconnected, in other implementations, the components of design document selector  520  may be separate, non-interconnected components. 
     VXML specifications unit  530 , as shown in  FIG. 9 , may perform a variety of tasks to aid in the generation of VXML document(s). For example, in one implementation, VXML specifications unit  530  may include a VXML element specifier  900  that specifies the VXML elements provided in a design document, a VXML element relationship determiner  910  that determines the relationships between the specified VXML elements, etc. For example, since the &lt;vxml&gt; element may be a root element for the VXML document, VXML specifications unit  530  may add the &lt;vxml&gt; element as the root element for the VXML document(s) generated by system  400 . In another example, since a parent element for a &lt;field&gt; element (this element may create an interactive dialog between a user and the IVR application) may be a &lt;form&gt; element, if a &lt;field&gt; element is selected, VXML specifications unit  530  may add a &lt;form&gt; element as a parent element for the &lt;field&gt; element. 
     Although  FIG. 9  shows exemplary tasks performed by VXML specifications unit  530 , in other implementations, VXML specifications unit  530  may perform additional tasks that may be used to generate VXML document(s). Furthermore, although  FIG. 9  shows the components of VXML specifications unit  530  as interconnected, in other implementations, the components of VXML specifications unit  530  may be separate, non-interconnected components. 
     Design document parser  540 , as shown in  FIG. 10 , may perform a variety of tasks to aid in the generation of VXML document(s). For example, in one implementation, design document parser  540  may include a design document to VXML elements parser  1000  that parses the design document into VXML elements, prompts, and other properties, etc. For example, if the design document is in the form of an Excel document, design document parser  540  may use an Excel parser to break down the Excel document into individual data elements. In another example, if the design document is in the form of a document with a table(s), design document parser  540  may parse the table(s) in the document into individual data elements. 
     Although  FIG. 10  shows an exemplary task performed by design document parser  540 , in other implementations, design document parser  540  may perform additional tasks that may be used to generate VXML document(s). 
     VXML element creator  550 , as shown in  FIG. 11 , may perform a variety of tasks to aid in the generation of VXML document(s). For example, in one implementation, VXML element creator  550  may include a VXML document assembler  1100  that may receive VXML elements (e.g., from parser  1000 ) and may create a VXML document(s) (e.g., VXML document  410 ) from the VXML elements. In one example, VXML document assembler  1100  may create a VXML document that may contain the root &lt;vxml&gt; element and other children VXML elements specified in the dialog design portion of the design document (e.g., design document  405 ). 
     Although  FIG. 11  shows an exemplary task performed by VXML element creator  550 , in other implementations, VXML element creator  550  may perform additional tasks that may be used to generate VXML document(s). 
     VXML document publisher  560 , as shown in  FIG. 12 , may perform a variety of tasks to aid in the generation of VXML document(s). For example, in one implementation, VXML document publisher  560  may include a VXML document display  1200  that may display (e.g., in conjunction with user interface  500 ) the VXML document(s) created by VXML element creator  550 . In other implementations, VXML document publisher  560  may include a VXML document editor  1210  that may permit editing of the VXML document(s), a document selector  1220  that may permit selection of alternative or additional design documents to be used to create a VXML document(s), etc. 
     Although  FIG. 12  shows exemplary tasks performed by VXML document publisher  560 , in other implementations, VXML document publisher  560  may perform additional tasks that may be used to generate VXML document(s). Furthermore, although  FIG. 12  shows the components of VXML document publisher  560  as interconnected, in other implementations, the components of VXML document publisher  560  may be separate, non-interconnected components. 
     VXML document saver  570 , as shown in  FIG. 13 , may perform a variety of tasks to aid in the generation of VXML document(s). For example, in one implementation, VXML document saver  570  may include a published VXML document identifier  1300  that may permit a user to save the VXML document(s) created by VXML document publisher  560 , etc. In another example, VXML document saver  570  may permit a user to select a name and an extension for the VXML document(s). A default extension for the VXML document(s) may be “vxml”. 
     Although  FIG. 13  shows an exemplary task performed by VXML document saver  570 , in other implementations, VXML document saver  570  may perform additional tasks that may be used to generate VXML document(s). 
       FIGS. 14A and 14B  provide a flowchart of an exemplary process for generating a VXML document(s) from a design document(s). As shown in  FIG. 14A , a process  1400  for generating a VXML document(s) from a design document(s) may begin with the generation of a user interface (block  1405 ). For example, in one implementation described above in connection with  FIG. 6 , user interface  500  may include user interface generator  600  that generates a user interface for use by the other components of system  400 . The user interface, via other components of system  400 , may enable selection of different VXML elements to be included in the VXML document(s), may enable selection of the design document, may display the generated VXML document(s), may permit the VXML document(s) to be edited, may permit selection of another design document, and/or may permit the generated VXML document(s) to be named and/or saved. 
     Process  1400  may determine whether VXML elements are to be selected by a user (block  1410 ). If VXML elements are to be selected by the user (block  1410 —YES), then process  1400  may receive or permit selection of VXML elements (block  1415 ). Otherwise (block  1410 —NO), process  1400  may receive or permit specification of an application name (block  1420 ). For example, in one implementation described above in connection with  FIG. 7 , VXML element selector  510  may include field element selector  700  that permits selection of a field element, field type selector  710  that permits selection of a field type for the selected field element, application namer  720  that permits specification of an application name associated with the selected field element, etc. VXML element selector  510  may aid the selection of VXML elements to conform to VoiceXML 2.0 and/or 2.1. 
     As further shown in  FIG. 14A , process  1400  may receive or permit selection and/or specification of a design document (block  1425 ). For example, in one implementation described above in connection with  FIG. 8 , design document selector  520  may include design document selector  800  that may permit selection of a design document (e.g., a SDD), and dialog design portion selector  810  that may permit selection of a dialog design portion of a selected design document. In another implementation described above in connection with  FIG. 9 , VXML specifications unit  530  may include VXML element specifier  900  that may specify the VXML elements provided in the design document, a VXML element relationship determiner  910  that may determine the relationships between the specified VXML elements, etc. 
     Process  1400  may parse the design document into VXML elements (block  1430 ). For example, in one implementation described above in connection with  FIG. 10 , design document parser  540  may include design document to VXML elements parser  1000  that parses the design document into VXML elements, prompts, and other properties, etc. In one example, if the design document is in the form of an Excel document, design document parser  540  may use an Excel parser to break down the Excel document into individual Excel elements. In another example, if the design document is in the form of a document with a table(s), design document parser  540  may parse the table(s) in the document into individual elements. 
     As further shown in  FIG. 14A , process  14 A may create and/or save the VXML document(s) assembled from the parsed VXML elements (block  1435 ). For example, in one implementation described above in connection with  FIG. 11 , VXML element creator  550  may include VXML document assembler  1100  that may receive VXML elements (e.g., from parser  1000 ) and may create a VXML document(s) (e.g., VXML document  410 ) from the VXML elements, etc. In another implementation described above in connection with  FIG. 12 , VXML document publisher  560  may include VXML document display  1200  that may display the VXML document(s) created by VXML element creator  550 , VXML document editor  1210  that may permit editing of the VXML document(s), document selector  1220  that may permit selection of alternative or additional design documents to be used to create a VXML document(s), etc. In still another implementation described above in connection with  FIG. 13 , VXML document saver  570  may include published VXML document identifier  1300  that may permit a user to save the VXML document(s) created by VXML document publisher  560 , etc. In one example, VXML document saver  570  may permit a user to select a name and an extension for the VXML document(s). 
     Process block  1415  ( FIG. 14A ) of process  1400  may include the blocks shown in  FIG. 14B . Thus, process block  1415  may receive or permit addition of a form element (block  1440 ). For example, in one implementation described above in connection with  FIG. 7 , VXML element selector  510  may permit selection of a form element (a form element may contain the core logic of a voice application, including grammars, prompts, and code to be executed based on user response) for the VXML document to be generated. Process block  1415  may receive or permit addition of a subdialog element (block  1445 ). For example, in one implementation described above in connection with  FIG. 7 , VXML element selector  510  may receive or permit selection of a subdialog element for the VXML document to be generated. 
     As further shown in  FIG. 14B , process block  1415  may receive or permit selection of field elements (block  1450 ). For example in one implementation described above in connection with  FIG. 7 , VXML element selector  510  may include field element selector  700  that permits selection of a field element and field type selector  710  that permits selection of a field type for the selected field element for the VXML document to be generated. Process block  1415  may receive or permit addition of text-to-speech (block  1455 ). For example in one implementation described above in connection with  FIG. 7 , VXML element selector  510  may permit selection of text-to-speech for the VXML document to be generated. 
     Process block  1415  may receive or permit selection of the maximum number of errors for a “no input” event and/or a “no match” event (block  1460 ). For example in one implementation described above in connection with  FIG. 7 , VXML element selector  510  may permit selection of the maximum number of errors for a “no input” event (e.g., a IVR application user is unresponsive) and/or a “no match” event (e.g., an IVR application user is not providing the correct information) for the VXML document to be generated. 
     Implementations described herein may provide systems and methods for automatically generating a VXML document(s) from a dialog design portion of a design document(s) for a speech recognition IVR application. For example, the systems and methods may permit specification of the VXML elements in the design document, and may automatically parse the design document to extract the VXML elements from the design document. The systems and methods may assemble a VXML document(s) based on the extracted VXML elements. Automatic generation of VXML document(s) may help reduce the development time, the development cost, and/or manual input errors for speech recognition IVR applications. 
     The foregoing description of preferred embodiments of the present invention provides illustration and description, but is not intended to be exhaustive or to limit the invention to the precise form disclosed. Modifications and variations are possible in light of the above teachings or may be acquired from practice of the invention. For example, while series of acts have been described with regard to  FIGS. 14A and 14B , the order of the acts may be modified in other implementations consistent with principles of the invention. Further, non-dependent acts may be performed in parallel. 
     It will be apparent to one of ordinary skill in the art that aspects of the invention, as described above, may be implemented in many different forms of software, firmware, and hardware in the implementations illustrated in the figures. The actual software code or specialized control hardware used to implement aspects consistent with principles of the invention is not limiting of the invention. Thus, the operation and behavior of the aspects were described without reference to the specific software code—it being understood that one of ordinary skill in the art would be able to design software and control hardware to implement the aspects based on the description herein. 
     No element, act, or instruction used in the present application should be construed as critical or essential to the invention unless explicitly described as such. Also, as used herein, the article “a” is intended to include one or more items. Where only one item is intended, the term “one” or similar language is used. Further, the phrase “based on” is intended to mean “based, at least in part, on” unless explicitly stated otherwise.