Abstract:
A human-machine communication method that includes the steps of receiving a first statement in a natural language from a user, generating first information based on the first statement and storing context information of at least one of the first statement and the first information. The method also includes the steps of optionally generating a question to be presented to the user in the natural language based on the context information, receiving a second statement in the natural language from the user and generating second information based on the second statement and the context information. A corresponding system is also provided.

Description:
[0001]     This application is a continuation-in-part of application Ser. No. ______(identified by attorney docket No. 10244-003), filed Feb. 1, 2000, which is hereby incorporated by reference in its entirety. Both that application and this application claim priority from provisional patent application Ser. No. 60/118,800, filed Feb. 4, 1999, which is hereby incorporated by reference in its entirety. 
     
    
     FIELD OF THE INVENTION  
       [0002]     The present invention relates to the fields of speech processing, human-machine dialogue, and database retrieval in both client-server and other computer systems.  
       BACKGROUND OF THE INVENTION  
       [0003]     Conventional speech recognition systems are generally unidirectional. Speech recognizers typically receive verbal input from a user and execute commands or produce textual output that could otherwise be effected or created by the user with a keypad, keyboard, or other input device. Speech synthesizers typically simply generate verbal output that otherwise would be available to the user on screens or printouts. Furthermore, conventional speech systems do not fully utilize context information which is an integral part of human-to-human communication.  
       SUMMARY OF THE INVENTION  
       [0004]     Disclosed is a bilateral speech system and method that allows effective communication between a person (a user) and a computer. In a preferred embodiment, the disclosed system comprises a speech recognizer for recognizing spoken input from a user and a language model and query generator for interpreting that input and generating database queries from it. User input may comprise a statement; a question; or an answer to a question posed by the system.  
         [0005]     User input is interpreted both on the basis of the input itself and on the basis of the context in which the input was made. This context is developed by storing aspects of a continuing dialogue between the user and the system in memory.  
         [0006]     System output may take the form of either information output to the user or actions taken by the system to satisfy user requests. System output is also informed by, and contributes to, the stored context. Information output to the user may comprise a statement; a question; or an answer to a question posed by the user.  
         [0007]     In another aspect, the present disclosure includes a method that comprises the steps of receiving a first statement in a natural language from a user, generating first information based on the first statement, and storing context information of at least one of the first statement and the first information.  
         [0008]     The method of the present invention further includes the steps of optionally generating a question to be presented to the user in a natural language based on context information, receiving a second statement in the natural language from the user, and generating second information based on the second statement and the context information.  
         [0009]     Moreover, the method may include the steps of incorporating content information generated based on the second information into a web page. If desired, the web page may be dynamically generated. The method may also include the steps of generating grammatical data for the first statement, generating one or more parsing tokens based on the grammatical data, and storing the parsing tokens as part of the context information. Further, the parsing tokens can be added, modified, or removed based on the second statement.  
         [0010]     The method of the present invention may further include the steps of identifying linguistic structures in the second statement based on the context information. In particular, the method may further include the steps of identifying an antecedent to a pronoun in the second statement or disambiguating a homonym in the second statement.  
         [0011]     The method may also include the steps of storing and updating the context information each time a new statement in the natural language is received or providing at least one of a superlative and a comparison of the first information based on the context information. Here, the first information includes a plurality of items that can be compared with each other.  
         [0012]     The disclosed system may include a server computer that includes an input device configured to receive a first statement in the natural language from a user. The server computer is configured to generate first information based on the first statement. The server computer also includes a memory bank configured to store context information of at least one of the first statement and the first information. The input device is further configured to receive a second statement in the natural language from the user. In turn, the server computer is further configured to optionally generate a question to be presented to the user in the natural language based on the context information and configured to generate second information based on the second statement and the context information.  
         [0013]     The disclosed system may also include a client computer configured to receive a plurality of statements from the user and configured to forward the received plurality of statements to the server computer.  
         [0014]     The server computer may include a knowledge database configured to provide language processing information. In particular, the server computer may be configured to generate a plurality of parsing tokens based on the first statement and the language processing information. The memory bank may further be configured to store the parsing tokens as part of the context information. Furthermore, the server computer may be further configured to add, modify, or remove the stored parsing tokens in the memory bank based on the second statement.  
         [0015]     The server computer may be further configured to identify linguistic structures in the second statement based on the context information. In particular, the server computer may be configured to identify an antecedent to a pronoun in the second statement or identify a disambiguating homonym in the second statement.  
         [0016]     Moreover, the server computer may be further configured to store and update the context information each time a new statement in the natural language is received by the input device.  
         [0017]     The disclosed system may also include an output controller configured to dynamically generate a web page at a client computer based on at least one of the first information and the second information.  
         [0018]     The disclosed system may also be used to facilitate a virtual salesman functionality to individuals who visit an e-commerce website. 
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0019]     Preferred features of the present invention are disclosed in the accompanying drawings, wherein similar reference characters denote similar elements throughout the drawings, and wherein:  
         [0020]      FIG. 1A  is a block diagram of a preferred embodiment of the disclosed system;  
         [0021]      FIG. 1B  is a block diagram of various databases of the disclosed system;  
         [0022]      FIG. 2  is a diagram illustrating speech recognition in the disclosed system;  
         [0023]      FIG. 3  is a diagram illustrating operation of a language model in the disclosed system;  
         [0024]      FIG. 4  is a diagram illustrating query generation in the disclosed system;  
         [0025]      FIG. 5  is a diagram illustrating results processing in the disclosed system;  
         [0026]      FIG. 6  is a diagram illustrating a second language model in the disclosed system;  
         [0027]      FIG. 7  is a diagram illustrating speech synthesis in the disclosed system;  
         [0028]      FIG. 8  is a diagram illustrating operation of the disclosed system; and  
         [0029]      FIG. 9  is a block diagram illustrating a client-server configuration of the disclosed system.  
     
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS  
       [0030]      FIG. 1A  illustrates a bilateral communication system  101  adapted to conduct a dialogue with a user and perform tasks that the user requests. As shown in  FIG. 1A , system  101  preferably comprises a microphone  102 . When a user speaks into microphone  102 , the microphone generates an analog speech signal that is transmitted to a speech recognizer  103 . Speech recognizer  103  converts the analog speech signal into phonemes in the form of digital text.  
         [0031]     The output of speech recognizer  103  is transmitted to a first language model  105  that includes a parser. Language model  105  exchanges grammatical and other data with a system state  107  and a knowledge database  108 . Using this data, language model  105  produces parsing tokens that it sends to a database query generator  109 .  
         [0032]     Database query generator  109  generates queries to a database  111 . Database  111  searches data stored therein for the desired information and passes raw information to a result interpreter  113  that interprets the results. A second language model  115  receives the interpreted results from result interpreter  113  and exchanges relevant information with system state  107  and knowledge database  108  to produce a digital text response. Although illustrated in  FIG. 1A  as distinct components, it should be noted that first and second language models  105 ,  115  may be implemented as a single language model that performs the functions of first and second language models  105 ,  115 .  
         [0033]     The output from language model  115  is transmitted to a synthesizer  117  that converts the response text to analog speech for output to the user via a speaker  118 . The components of system  101  described above, with the exception of microphone  102  and speaker  118 , may preferably be implemented as software and/or data.  
         [0034]     In an alternative preferred embodiment, system  101  may be implemented without microphone  102  and speech recognizer  103 . In this embodiment, the user directly types a question or statement on a keyboard  104 . In addition, system  101  may be implemented without synthesizer  117  and speaker  118 . In that case, output to the user may take the form of text or other information displayed, for example, on a visual display  120 .  
         [0035]     As discussed above, knowledge database  108  is preferably coupled to first and second language models  105 ,  115  and also to system state  107 . A preferred embodiment of knowledge database  108  is shown in  FIG. 1B . As shown in  FIG. 1B , knowledge database  108  preferably comprises a general language database  122 , a domain specific language database  124 , a rules database  126 , and a frequently asked question (FAQ) database  128 .  
         [0036]     General language database  122  preferably stores information relating to conventional natural language understanding such as a dictionary, a list of grammar rules and/or a synonym knowledge base. The synonym knowledge base is utilized, for example, in correcting misspelled words.  
         [0037]     Domain specific language database  124  preferably stores usage specific information. Assume, for example, that system  101  is adapted to respond to queries from a user concerning the time and channel that a particular program will be broadcast. In that event, domain specific language database  124  preferably stores information relating to various television programs including the station that will broadcast them and the time at which they will be broadcast. In a second example, assume that system  101  is adapted to respond to queries from a user concerning computer devices. In that case, domain specific language database  124  preferably stores information relating to computer-related concepts, such as definitions and characteristics of random-access memories (RAMs), read-only memories (ROMs), displays, and central processing units (CPUs).  
         [0038]     Rules database  126  preferably stores information directed to general constraints on items stored in the other databases. Thus, if in the first example above one of the programs for which information is stored in knowledge database  108  is Seinfeld, then one illustrative rule might be that the original Seinfeld programs were broadcast on Thursdays. Similarly, if in the second example above one type of computer for which information is stored is laptop computers, then one illustrative rule might be that laptop computers commonly have only one display monitor.  
         [0039]     FAQ database  128  stores answers to frequently asked questions. Thus, continuing with the above examples, a frequently asked question in the first example might be: “Where and when is Seinfeld being broadcast this week?”, and a frequently asked question in the second example might be “What is RAM?”.  
         [0040]     In one exemplary embodiment, database  111  may be a product database. For example, it may be a product database for computer devices that includes a list of items such as computers, software applications, computer accessories, memory devices, and display monitors.  
         [0041]     System state  107  preferably comprises at least a portion of a memory bank that retains data from first and second language models  105 ,  115  concerning the context created by both statements made by the user and output from database  111 . For instance, when a user asks a first question, system state  107  retains data from language model  105  concerning that question. In a preferred embodiment, the memory bank may be distributed between system state  107  and one or both of language models  105 ,  115 .  
         [0042]     After the user receives a response to a first question, the user may wish to ask follow-up questions. Thus, for example, if the user&#39;s first question was:  
         [0043]     “Where and when is Seinfeld being broadcast this week?”,  
         [0000]     and the response provided to the user by system  101  was:  
         [0044]     “Monday through Friday at 7:30 PM”,  
         [0000]     then the user might follow that answer with the request:  
         [0045]     “Give me a summary of the third and fourth”.  
         [0046]     In that case, because system state  107  stores the context provided by the user&#39;s first question or statement as well as the context provided by the first answer, system  101  is able to respond to this request without the user repeating the facts in the initial question (i.e., that the user is referring to episodes of Seinfeld to be shown this week).  
         [0047]     System  101  may then process the follow-up question or request using speech recognizer  103 , first language model  105 , system state  107 , knowledge database  108 , query generator  109 , database  111 , result interpreter  113 , second language model  115 , and synthesizer  117 . System state  107  gives the second question or request a context from which it is understood that the user is referring to the initial inquiry concerning, for example, Seinfeld episodes. The output at speaker  118  will then include the requested summaries.  
         [0048]     Continuing with this example, assume that, after receiving the summaries of the third and fourth episodes to be shown that week, the user asks system  101  to:  
         [0049]     “Record the third episode”.  
         [0050]     To respond to that demand, system  101  again processes the input using speech recognizer  103 , first language model  105 , system state  107 , knowledge database  108 , query generator  109 , database  111 , result interpreter  113 , second language model  115 , and synthesizer  117 . Again, system state  107  recollects the context information and permits the system to react to the more specific order from the user without requiring the user to repeat the earlier statements/questions or their factual predicate.  
         [0051]     System state  107  may then operate a device controller  119  that takes the database results and the stored context information, and controls a device, such as a video cassette recorder (VCR), web browser, etc., and makes the device perform the action requested by the user. For example, device controller  119  may set a VCR to the time and channel of the episode or episodes to be recorded. At the same time, synthesizer  117  may cause speaker  118  to inform the user:  
         [0052]     “Episode 3 set for recording at 11 P.M. Thursday.” 
         [0053]     Device controller  119  may be adapted to govern any number of devices. For example, if the user wishes to have system  101  browse the web, device controller  119  may control a browser to cause the browser to search for any kind of information and return graphic, text, sounds, pictures, video, multimedia, etc. The result can also be displayed on visual display  120 .  
         [0054]     Speech recognizer  103  may be any speech recognition engine using computer application programs such as IBM Via Voice™ and Dragon Dictate™ both of which run on standard PC platforms.  FIG. 2  illustrates an exemplary embodiment of speech recognizer  103  translating speech into text.  
         [0055]     Text from speech recognizer  103  (or that is entered directly by the user), is then processed by first language model  105 . In a preferred embodiment, language model  105  may pre-process the text. This pre-processing may include correcting any misspelled words and phrases by matching words and phrases in the text to words and phrases in the various databases of knowledge database  108 . The pre-processing may further include expanding any abbreviations in the text.  
         [0056]      FIG. 3  illustrates subsequent operation of first language model  105 . As shown in  FIG. 3 , language model  105  first assembles a complete “phrase” in an “Accept Phrase” section  131 . Timing cues may provide information as to the end of a phrase. The timing cues can be extracted from stops and pauses when the user speaks to system  101  or when the user types the text using keyboard  104 .  
         [0057]     In a “Scan Grammar” section  133 , language model  105  scans through a set of valid grammars and compares them with each incoming phrase. In a “Pick Grammars” section  135 , language model  105  chooses a limited set of grammar candidates from system state  107  to explore based on their weightings. Each of the selected grammars is applied in an “Apply Grammar” section  137 . The results of each grammar are evaluated and a single one is chosen based on several possible criteria. The state changes from the final grammar are sent to system state  107 . The tokens generated by the final grammar are then sent to query generator  109 , as will be described in connection with  FIG. 4 . Language model  105  can also search for special salient words and phrases in the text.  
         [0058]     Turning to  FIG. 4 , there is shown a preferred embodiment of query generation in the present system. Query generator  109  can retrieve information from domain specific language database  124 . Specialized domain processing based on the grammar and the instantiated tokens takes place in a domain specific processing section  141 . Processing includes, but is not limited to, the generation of an SQL query from the tokens in a tokens-to-SQL section  143 . The query may then be supplied to an SQL database  145 . Examples of suitable database systems are Sybase™ and Oracle™.  
         [0059]     If an appropriate answer for the grammar is not found, a fuzzy matching process may be employed to refine the answer, e.g., searching phonetically. The end result is a results table  147  containing the information requested.  
         [0060]     As shown in  FIG. 5 , the contents of results table  147  are sent to result interpreter  113  for additional data mining to produce summarized results. Information summary and consolidation features may also take place.  
         [0061]     As shown in  FIG. 6 , the summarized results arrive at second language model  115 . Here the current grammar and conversation history are used to interpret the returned data and generate a formatted response. System state  107  is updated to reflect the new conversation history and updates the grammar weightings for “Pick Grammars”  135  of first language model  105 . Updates to system state  107  signal actions for the controlled unit to execute.  
         [0062]     As shown in  FIG. 7 , the text portion of the response is then sent to synthesizer  117 . Synthesizer  117  may be a standard speech synthesis engine. Here the text response is converted to speech and played back to the user.  
         [0063]     At this point, the user may speak again and the process repeats itself, going from the general to the specific and using system state  107  to remember the user&#39;s more general statements and questions and the systems more general statements and answers so as to produce more specific responses.  
         [0064]     In this process, speech is received, converted to text, a query is generated, output is created, and another query from the user follows. The result is typically a loop in which the dialogue progresses from general to specific.  
         [0065]     Take the following third example. Assume that a user commences a dialogue with system  101  by saying:  
         [0066]     “I&#39;m looking for a song with particular lyrics A.” 
         [0000]     System  101  may then identify the song and output the song&#39;s name to the user, in the manner described above. Assume further that the user next says:  
         [0067]     “Can I see the lyrics?”.  
         [0000]     In that event, system  101  may retrieve the lyrics from database  111  because system state  107  has memorized the first question and all the data connected therewith.  
         [0068]     As noted, system  101  preserves the context that allows system  101  to respond to the second question. Otherwise, the user would have to say:  
         [0069]     “Can I see the lyrics for song X?”.  
         [0000]     More particularly, because it preserves context, system  101  is able to handle successive increasingly-specific questions. Take the following fourth example. Assume that the user&#39;s first statement to system  101  is:  
         [0070]     “I&#39;m looking for a Beatles album, the forty-fourth album by the Beatles.” 
         [0000]     System  101  then provides the name of the forty fourth album, in the manner described above. If the user then says:  
         [0071]     “What songs are on that particular album?”,  
         [0000]     and there are 20 songs on the album, system  101  may retrieve all the song titles from memory and output them to the user because it comprises a memory that retains the place in the conversation.  
         [0072]     The memory bank may also store the tokens generated by language model  105  as part of the context. These tokens represent requests and constraints detected by language model  105 , both current and previous. These tokens are updated and/or modified by both first and second language models  105 ,  115  based on the statements and/or questions by the user and the database query results. In a preferred embodiment, these updates may take the form of additions, modifications, or removals.  
         [0073]     Take the following fifth example. Assume that at some point in a dialogue with system  101 , the user states:  
         [0074]     “I am looking for a computer less than $3000”.  
         [0000]     In that event, an addition occurs, i.e., system  101  adds a price token to the context. If, however, the user subsequently states:  
         [0075]     “I want to spend less than $2500”,  
         [0000]     then a modification occurs, i.e., system  101  modifies the price token to reflect the user&#39;s latest statement. Finally, if the user subsequently states that:  
         [0076]     “price is not important”,  
         [0000]     then a removal occurs, i.e., system  101  removes the price token from context.  
         [0077]     Since all non-trivial dialogs have a context, the memory bank is preferably configured to continually store the context of the dialog between the user and system  101 . The context, built during processing of statements and/or questions entered by the user and the database query results, contains linguistic information, such as a list of possible grammars and weightings thereof. Certain processing is enabled through use of context including the processing of superlatives and comparisons. Take the following sixth example. Assume that a user states at some point during a dialogue with system  101  that:  
         [0078]     “I would like something that costs less than that”.  
         [0000]     In that event, system state  107  may look to the context to see what price range is currently in context. Alternatively, in a seventh example, assume that the user states:  
         [0079]     “I would like the the cheapest one”.  
         [0000]     In that event, the desired item may by identified by checking the list of results posted in the context during a previous output to the user.  
         [0080]     The context may also contain information that allows language models  105 ,  115  to identify or define linguistic structures, such as antecedents for pronouns (e.g., if the user refers to “these” or “it”) by utilizing histories of the database query results, histories of statements and/or questions entered by the user, histories of outputs generated, the nature and motivation of such outputs (i.e., answer, prompt, request for clarification), and context at the time of earlier processing by language models  105 ,  115 .  
         [0081]     Linguistic information may also be used to disambiguate user statements, such as those containing homonyms (for speech recognition or misspelled words), or references to earlier identified items (e.g., “the second one”). This information may also be used to post expectations in the form of probabilities or weightings to help language models  105 ,  115  to better process words, phrases, and the occurrence of features or units.  
         [0082]     Take the following eighth example. If at some point during a dialogue with a user, system  101  output the question:  
         [0083]     “how much would you like to spend”,  
         [0000]     system  101  may post into context that price is a likely feature to be input next. Then, when the user inputs a response such as:  
         [0084]     “2000”,  
         [0000]     that response may be correctly interpreted as a price parameter. Alternatively, in a ninth example, assume that at some point in a dialogue with the user, system  101  output the question:  
         [0085]     “what do you expect to use this computer for?”.  
         [0000]     In that event, system  101  may post an expectation that an activity will likely be input next. A response from the user of “gaming” may then be properly interpreted grammatically and semantically.  
         [0086]     The context may also contain information that is characteristic of a continuing dialogue between the user and system  101 . For example, an unfulfilled request, and the number of times such a request has remained unfulfilled, may be utilized to guide language models  105 ,  115  to generate a helpful statement and/or a helpful question to be presented to the user. Other examples include recommendations made that are close to the desired query, changes in requirements (e.g., “I decided that I don&#39;t care about price”), and events when the user failed to respond to a prompt or suggestion. Furthermore, context may contain information gathered about the user, such as preferences. This profiling information can be stored for interactions at a later date.  
         [0087]     The context may be updated with each exchange (input and response) of the conversation. The context stores previously detected constraints and requests that are combined with the latest verbal input to create a progressively more refined database query.  
         [0088]     Since the context is utilized, output of system  101  may be in the form of the requested information, an indication that the information is not available, a request for clarification, a recommendation, and/or a prompt for more information. Returning to the first example, the reply to the user&#39;s initial question concerning Seinfeld episodes may be:  
         [0089]     “There are five Seinfeld episodes this week, the first on Sunday at 8:00 PM on channel  110 , the second on Wednesday, etc.” 
         [0000]     rather than simply stating:  
         [0090]     “Five episodes are available”.  
         [0000]     System state  107  then retains data concerning the answer.  
         [0091]     In a ninth example, if a request is made for computers that are:  
         [0092]     “good for running spreadsheets”,  
         [0000]     and 3 such computers are found, the system output may be:  
         [0093]     “all 3 are good for spreadsheets” 
         [0000]     rather than simply:  
         [0094]     “here are 3 that you asked for.” 
         [0000]     In addition, a combination of the user statements and/or questions, the summarized results, and context may be used to control device controller  119 .  
         [0095]     As noted above, the present invention furnishes database access, in particular access to a relational database accessed via SQL. In a preferred embodiment, system  101  assumes that the user&#39;s goal is always to form an SQL query. The language model assisted by the context offered by the working memory forms the basis for the query. In a tenth example, if the user asks for:  
         [0096]     “a list of Beatles albums” 
         [0000]     then that request is stored in working memory. Therefore if the user subsequently asks for:  
         [0097]     “albums from 1969”,  
         [0000]     the query will be generated based on Beatles albums from 1969.  
         [0098]      FIG. 8  is a flow chart depicting operation of system  101 . As shown in  FIG. 8 , in step  181  the user enters a statement or question into a speech receiver such as microphone  102  that may be part of speech recognizer  103 . In step  183  speech recognizer  103  converts the speech into phonemes in the form of digital text. In step  185 , first language model  105  that includes a parser receives the digital text from speech recognizer  103 . “Accept Phrase” section  131  of first language model  105  assembles a complete “phrase.” A complete phrase may, for example, be determined by a delay greater than a specific amount of time. Still in step  185 , “Pick Grammars” section  135  scans a limited set of grammar candidates to explore in system state  107  based on their weightings.  
         [0099]     In step  187 , grammars are chosen and applied by “Apply Grammar” section  137 . The results of each grammar are evaluated and a single one is chosen based on which is the best fit. In step  189 , the grammar is executed and state changes from the final grammar are sent to system state  107  for memorization. In step  191 , first language model  105  generates tokens on the basis of the final grammar. In step  193 , first language model  105  sends the tokens to query generator  109 . In step  195 , query generator  109  generates an SQL query from tokens in tokens-to-SQL section  143 . In step  197 , database  111  is searched to form result table  147  containing the information requested.  
         [0100]     In step  199 , result interpreter  113  receives table  147  for additional data mining to interpret the results. In step  201 , second language model  115  uses the interpreted results and the conversation history from system state  107 . Specifically, the current grammar and conversation history are used to interpret the returned data and generate a formatted response. In step  203 , system state  107  is updated to reflect the new conversation history and updates the grammar weightings for “Pick Grammars”  135  phase of first language model  105 .  
         [0101]     If the conversation is complete, in step  205 , system state  107  signals control of actions, if any, for the controlled unit to execute. In step  207 , synthesizer  117  synthesizes the signals to speech. That is, the text portion of the response is then sent to a standard speech synthesis engine where it is converted to speech and played back to the user. The text to speech synthesizer may be in the form of that available under the trademark Accuvoice.  
         [0102]     Step  209  involves return to the speech query step  181  for further specific queries. Here, the user speaks again in step  181 , and text is converted in step  183  and the process repeats itself, going from the general to the specific and using system state  107  to remember the more general questions so as to produce the more specific answers. In steps  189  and  191 , the grammar is executed and tokens generated depending upon the conversation stored in system state  107 . Also, the conversation history and grammar weightings in system state  107  are updated. This varies depending on the grammar chosen.  
         [0103]      FIG. 9  illustrates a preferred client-server environment  301  in which the present invention may be implemented. In particular, client-server environment  301  includes a number of client computers  303  connected to one or more server computers  305  via a network  307 . Network  307  may use the Internet communications protocols (TCP/IP) to allow client computers  303  to communicate with server computers  305 . Client-server environment  301  further includes one or more database management systems  309  which may preferably be connected to one of server computers  305 . However, database management system  309  may alternatively be located anywhere on network  307  as long as it can be accessed and/or controlled by server computers  305 . Database management system  309  is preferably configured to store and manage knowledge database  108  and database  111 .  
         [0104]     Client computers  303  may be personal computers (PCs), workstations or other computer processing units. Each client computer  303  typically includes one or more processors, memories, and input/output devices. Server computers  305  may be similarly configured. However, in many instances server computers  305  may include one or more high performance computers (e.g., workstations) locally networked together. In fact, network  307  may include hundreds of thousands of individual networks of computers, e.g., the Internet. Although client computers  303  are shown separate from server computers  305 , it should be understood that a single computer can perform the client and server roles as well.  
         [0105]     In operation, the user at one of client computers  303  desiring to communicate with server computers  305  may use a user interface at client computers  303 . In the preferred embodiment, the user interface may be a World-Wide-Web (WWW) browser (or in short a web browser). A web browser may display plain textual information or more complex digitally encoded multimedia content, such as software programs, graphics, audio signals, videos, and etc. Web pages processed by a web browser may be implemented in a variety of computer languages such as using a standard page description language known as Hypertext Markup Language (HTML), Extensible Markup Language (XML) or JAVA™, or any other software language or tool for displaying or otherwise outputting information. For instance, HTML provides basic document formatting and allows the developer to specify “links” to other web pages. Using an HTML-compatible browser (e.g., Netscape Navigator™ or Microsoft Internet Explorer™) at a client computer, the user can make a request to the server (sometimes referred to as a “Web site”) identified in the link and, in return, receive a document or other object formatted according to HTML. It should be noted that the request by the user can be in the form of voice statements/questions or text inputs as discussed above.  
         [0106]     It should be understood that network  307  can also be another wide or local area network (WAN or LAN) and may employ communications protocols other than TCP/IP.  
         [0107]     Referring back to  FIG. 1 , the various components of system  101  discussed above may reside at a client computer and/or a server computer. For instance, in one exemplary embodiment, microphone  102  and speaker  118  may reside in a client computer, and the remaining components described in  FIG. 1  in a server computer. In this exemplary embodiment, a statement uttered by a user at a client computer is preferably converted to an analog speech signal. The analog speech signal is then forwarded to speech recognizer  103  which can be located either at a client computer or in a server computer. The subsequent processing is performed by the server computer in which the rest of the components reside. After processing the statement as discussed above in connection with  FIGS. 1-8 , the output generated by the server is then forwarded to the client computer in which speaker  118  resides. It should be noted that the client computer in which microphone  102  resides can be different from the client computer in which speaker  118  resides.  
         [0108]     Further, as discussed above, device controller  119  may control a web browser. More specifically, the output generated by the server may include text, lists, pictures, graphics, and other objects that can be output to a user. Therefore, device controller  119  is further configured to dynamically generate, for example, one or more web pages on the client computer by automatically arranging the output into one or more web pages as known in the art.  
         [0109]     In another exemplary embodiment, the input can be text input. In this embodiment, speech related components are not provided.  
         [0110]     In a preferred embodiment, system  101  may be adapted to provide a virtual salesman functionality in an e-commerce environment. In particular, system  101  may be located at an e-commerce website comprising, for example, a plurality of static, dynamic, and/or active webpages comprising information concerning items or services for sale or rental and additional software to facilitate the sale or rental of the items or services to customers who visit the website. This additional software may, for example, comprise payment software to permit a user to pay for an item or service with, for example, the user&#39;s credit card.  
         [0111]     In this preferred embodiment, system  101  may be adapted to engage in a sales dialogue. Thus, for example, the system could facilitate the following dialogue: 
    User input #1: URL of e-commerce site     System response #1: Hi. Welcome to e-commerce.com. What would you like to buy today?    User input #2: I&#39;d like to buy a computer.     System response #2: What kind of computer do you want?    User input #3: I&#39;m not sure.     System response #3: Well, how are you going to use the computer?    User input #3: Well, I travel a fair amount and I like to play computer games.     System response #4: Sounds like you could use a laptop with a good size hard drive.     User input #5: What&#39;s a hard drive?    System Response #6: It is one type of memory in a computer. It is typically the biggest memory in the computer and is used to store large programs and chunks of data. Let me show you some laptops that might be good for you. [output dynamic web page displaying laptops with large hard drives]    User input #7: Those are too expensive!    System response #7: OK, let me see if we&#39;ve got some that are a little more in your price range. How much were you looking to spend?    User input #8: About $2500.     System response #8: OK, here are some laptops with good size memories in that range. [output dynamic webpage with reasonably priced laptops with relatively large hard drives]    User input #9: That third one looks good.     System response #9: Would you like to buy it?    User input #10: Yes.     System response #10: How would you like to pay for it?    User input #11: Credit card, please.     System response #11: What kind of card is it?    User input #12: Visa     System response #12: What is the card number?    User input #13: 5555 5555 5555 5555     System response #13: Expiration date?    User input #14: ten-oh-two     System response #14: OK, one second while I confirm the transaction . . . OK, the transaction is confirmed. How do you want us to deliver it?    User input #15: Can you send it UPS?    System response #15: Sure. What is your address?    User input #16: 555 Walnut Street, Anywhere USA.     System response #16: OK, we will send your computer out today, you should get it tomorrow.    
 
         [0142]     Thus, system  101  may be utilized to provide a virtual salesman functionality to individuals who visit an e-commerce website.  
         [0143]     While embodiments of the present invention have been described in detail it will be evident to those skilled in the art that the present invention may be embodied otherwise without departing from its spirit and scope.