Voice activated virtual assistant with a fused response

A voice activated knowledge management system may be used as a virtual assistant. In some cases, a knowledge management system may be configured to receive a voice request from a user, generate and send a knowledge base query to each of the two or more different knowledge base engines, and fuse the resulting responses from the knowledge base engines, resulting in a fused response. The fused response may be provided back to the user as a response to the voice request and/or may be provided as a device command to control a corresponding device.

BACKGROUND

The present disclosure relates to knowledge management systems, and more particularly, to voice activated knowledge management systems that can be used as a virtual assistant.

SUMMARY

The disclosure relates to knowledge management systems, and more particularly, to voice activated knowledge management systems that can be used as a virtual assistant. In some cases, a knowledge management system may be configured to receive a voice request from a user, generate and send a knowledge base query to each of the two or more different knowledge base engines, and fuse the resulting responses from the knowledge base engines, resulting in a fused response. The fused response may be provided back to the user as a response to the voice request and/or may be provided as a device command to control a device.

In an example of the disclosure, a voice activated knowledge management system may include an input for receiving a text based message from a speech recognition module that converts a spoken request from a user into the text based message, a knowledge base interface for interfacing with two or more different knowledge base engines and an output interface. A controller may be operatively coupled to the knowledge base interface and may be configured to generate and send a knowledge base query via the knowledge base interface to each of the two or more different knowledge base engines. The query may be based at least in part on the text based message received from the speech recognition module. The controller may also be configured to receive a corresponding response from each of the two or more different knowledge base engines via the knowledge base interface. The controller may fuse two or more responses from two or more different knowledge base engines, resulting in a fused response. The fused response may be output via the output interface.

In another example of the disclosure, a voice activated knowledge management system may include an input for receiving a text based message from a speech recognition module that converts a spoken request from a user into the text based message, a knowledge base interface for interfacing with two or more different knowledge base engines and an output interface. A controller may be operatively coupled to the knowledge base interface and may be configured to select less than all of the two or more different knowledge base engines based at least in part on the text based message, and generate and send a knowledge base query that is based at least in part on the text based message to each of the selected knowledge base engines via the knowledge base interface. The controller may also be configured to receive a corresponding response from each of the selected knowledge base engines via the knowledge base interface. The controller may generate an output that is based at least in part on the corresponding responses from each of the selected knowledge base engines, and deliver the output via the output interface.

In another example of the disclosure, a voice activated knowledge management system may include an input for receiving a first text based message from a speech recognition module that converts a spoken request from a user into the first text based message, a knowledge base interface for interfacing with two or more different knowledge base engines and an output interface. A controller may be operatively coupled to the knowledge base interface and may be configured to generate and send a first knowledge base query that is based at least in part on the first text based message to a first knowledge base via the knowledge base interface, and to receive a response from the first knowledge base via the knowledge base interface. The controller may be configured to modify the first text based message to a second text based message based at least in part on the response from the first knowledge base, and to generate and send a second knowledge base query that is based at least in part on the second text based message to a second knowledge base via the knowledge base interface, and to receive a response from the second knowledge base via the knowledge base interface. The controller may be configured to generate an output based at least in part on the response from the second knowledge base, and deliver the output via the output interface.

The preceding summary is provided to facilitate an understanding of some of the features of the present disclosure and is not intended to be a full description. A full appreciation of the disclosure can be gained by taking the entire specification, claims, drawings, and abstract as a whole.

DESCRIPTION

The following description should be read with reference to the drawings wherein like reference numerals indicate like elements. The drawings, which are not necessarily to scale, are not intended to limit the scope of the disclosure. In some of the figures, elements not believed necessary to an understanding of relationships among illustrated components may have been omitted for clarity.

FIG. 1is a schematic block diagram of an illustrative system10by which a user may present queries, including verbal queries, and obtain results from one or more of a plurality of knowledge bases12a,12bthrough12n. The illustrative system includes a device14through which a user may ask a question or give a command. The illustrative system also includes a knowledge management system16that may, for example, receive a query from the device14, process the query to prepare a suitable text query that can be searched within an appropriate knowledge base12a,12bthrough12n, conduct an appropriate search, and then return results to the user via the device14or to another device (e.g. a device that is to be controlled). In some cases, as will be discussed, the knowledge management system16may utilize two or more different knowledge bases of the knowledge bases12a,12bthrough12n, receive results from two or more different knowledge bases of the knowledge bases12a,12bthrough12n, and process the multiple results to provide a fused result to the user via the device14or to another device such as a device to be controlled.

It will be appreciated that there are any number of knowledge bases12a,12bthrough12nthat may be searched or otherwise queried. In some cases, the particular knowledge base12a,12bthrough12nthat may be searched or otherwise queried in response to a particular user query may depend upon the particular subject matter or context of the user query. For example, for a general information query, one or more of the knowledge bases12a,12bthrough12nthat may be searched may include the databases generally referenced as one or more of Wikipedia®, Google®, Yahoo®, Linkedin®, Facebook®, Twitter® and others. In some cases, these search engines may be referred to as being knowledge base engines, where the knowledge base engine compiles, organizes and searches the corresponding knowledge base. In some cases, terms such as Google® are relatively ubiquitous, and in some cases may be used to refer to either the knowledge base itself, or the knowledge base engine that drives it. To help determine the context, the user query may be processed using natural language processing techniques including, for example, parts of speech tagging, named entity recognition, sentiment analysis.

The particular databases that are selected for a particular query may depend on the context of the query. For example, in a news related request, one or more of the knowledge bases12a,12bthrough12nthat are searched may include any of a variety of different news sources such as Google®/news, Foxnews®, CNN® and the like. For a finance related request, one or more of the knowledge bases12a,12bthrough12nthat are searched may include any of a variety of different financial news sources such Google®/finance, Yahoo®/finance, the Wall Street Journal®, and the like. For a weather forecast related request, one or more of the knowledge bases12a,12bthrough12nthat are searched may include any of a number of weather information sources such as weather.com, noaa.gov, wunderground.com, and the like. For a weather science related request (e.g. what causes lighting?), one or more of the knowledge bases12a,12bthrough12nthat are searched may include any of a number of general information or science sources such as Wikipedia®, Google, weather.com, noaa.gov, and the like. Requests for travel related information may, for example, be submitted to travel information sources such as but not limited to Expedia®, Travelocity®, Tripadvisor®, and the like. Requests related to playing or purchasing music or other media may be submitted to any of a number of different sources, such as but not limited to, iTunes®, Spotify®, Soundhound®, Amazon® and the like. Requests for biographical information about a musician or band may be submitted to any of a number general information or music sources such as Wikipedia®, Google, Rollingstone®, Famouspeople®, and the like. It will be appreciated that these examples are merely intended to be illustrative, and are not intended to be limiting in any fashion.

In general terms, the device14may be configured to accept a query from the user, and to forward the query to the knowledge management system16. The device14may subsequently receive a result from the knowledge management system16, such as but not limited to, a fused result, and may present the result to the user. In some cases, the device14may be considered as including a controller18that may be configured to operate the device14and a display20that is operably coupled with the controller18such that the controller18is able to display information on the display20for the user. The device14may include a microphone22and a speaker24that are both operably coupled to the controller18. In some cases, the device14may receive verbal queries in the form of speech from the user via the microphone22and may verbally report results via the speaker24. In some cases, the device14may provide verbal results via the speaker24while also providing visual results such as text, images, video clips and the like, via the display20. In some cases, the result(s) may be submitted as a command to a device, such as device14or another device, to change the operation of the commanded device. In some instances, the display20may be a touch screen display, and thus may itself be configured to accept inputs from the user, including for example a query from the user.

In some cases, the device14may be a commercially available product. For example, the device14may be the Amazon Echo® hands free speaker device, which may be operably coupled to the Alexa® Voice Service available from Amazon. The Alexa® Voice Service may be connected to and service the Echo hands free speaker device, and may in turn communicate with the knowledge management system16. In some cases, some of the functionality of the knowledge management system16may reside within the Amazon Echo® hands free speaker device and/or the Alexa® Voice Service. In another example, the device14may be the Google Home® hands free speaker device, which may be operably coupled to the Google Home® Voice Service available from Google. The Google Home® Voice Service may be connected to and service the Google Home hands free speaker device, and may in turn communicate with the knowledge management system16. In some cases, some of the functionality of the knowledge management system16may reside within the Google Home® hands free speaker device and/or the Google Home® Voice Service.

In some cases, the device14may be built into another device, such as but not limited, to a Honeywell branded thermostat such as under the Honeywell Lyric™ brand. In some cases, the device14may itself be split between multiple devices such as a thermostat, a light bulb, a smoke detector and/or any other suitable device or devices. In some cases, the speaker24may be included in one device, and the microphone22may be included in another device. For example, the microphone22may be included in a thermostat, and the speaker may be included in a music player, television or other suitable device. When so provided, the voice command (e.g., sometimes a trigger phrase, such as “Alexa”, “Ok. Google”, or “Hello Lyric”, followed by voice command) may be received at one device (e.g. thermostat), and the response from the web-service may be heard back at a different device (e.g. music player or television). These are just examples.

The knowledge management system16may be manifested within a single housing. In some cases, portions of the knowledge management system16may be cloud-based. In any event, the knowledge management system16, which in some cases may be considered as being a voice activated knowledge management system, may include an input26for receiving a text based message from a speech recognition module28. In some cases, the speech recognition module28converts a spoken request, received from the device14, into a text based message. In some cases, the speech recognition module28may be configured to listen for a trigger word or phrase, and once the trigger word or phrase is detected, to listen for and receive the spoken request from the user. In some cases, the speech recognition module28may use Hidden MarKov Models and/or deep neural network for initial speech recognition. Parts of speech tagging and named entity recognition algorithms may be used on the recognized speech to identify key verbs and key nouns that comprise the spoken request. This is just an example, and it is contemplated that the speech recognition module28any suitable speech recognition algorithm.

The illustrative knowledge management system16includes a knowledge base interface30for interfacing with two or more different knowledge bases12a,12bthrough12n. An output interface32may be configured to output results back to the device14or another device. A controller34is operatively coupled to the speech recognition module28and the knowledge base interface30, and may be configured to generate and send a knowledge base query via the knowledge base interface30to each of the two or more different knowledge bases12a,12bthrough12cthat is based at least in part on the text based message, and to receive a corresponding response from each of the two or more different knowledge bases12a,12bthrough12nvia the knowledge base interface30.

In some cases, the controller34may be configured to select less than all of the two or more different knowledge bases12a,12bthrough12nand/or knowledge base engines based at least in part on the text based message, and to generate and send a knowledge base query that is based at least in part on the text based message to each of the selected knowledge bases12a,12bthrough12nor knowledge base engines via the knowledge base interface30, and receive a corresponding response from each of the selected knowledge bases12a,12bthrough12nand/or knowledge base engines via the knowledge base interface30. In some cases, the controller34may initially start with the key verbs and/or nouns in the spoken request that are identified by the speech recognition module28. A related semantic graph aligned to the initial key words may be used to attach additional keywords to the list if desired. The resulting keyword list may be used as input to a Machine Learning algorithm (e.g. neural network, classification and regression tree algorithm and/or random forest to determine a list of knowledge bases12a,12bthrough12nto which the particular knowledge base query should be sent.

In some cases, the controller34may be configured to determine a context based at least in part on the text based message, and generate and send a knowledge base query that is based at least in part on the determined context and the text based message to each of the two or more different knowledge bases12a,12bthrough12nand/or different knowledge base engines via the knowledge base interface30. In some instances, the controller34may be configured to determine the context by sending the text based message to a context knowledge base, and in response, receiving an indication of the context from the context knowledge base.

In some cases, as will be discussed, the controller34may be configured to fuse two or more responses from two or more different knowledge bases12a,12bthrough12nor knowledge base engines, resulting in a fused response, and may output the fused response via the output interface32. In some cases, for example, the controller34may be configured to fuse two or more responses by ranking the two or more responses and selecting only a best one of the two or more responses. Alternatively, the controller34may be configured to fuse two or more responses by combining information from each of two or more responses into a single response, or to sequentially output each of two or more responses, via the output interface32.

In some cases, a semantic analysis and voting on the confidence of each of the two or more responses from the two or more different knowledge bases12a,12bthrough12nor knowledge base engines are used. In some cases, such an analysis is used to: (1) rank order the results by confidence and relevance; and/or (2) provide a gap metrics for each knowledge base12a,12bthrough12nor knowledge base engine compared to the others. When so provided, the rank order and/or gap metrics may provide a further basis for combination of the results for output fusion. An iterative learning algorithm may be used to take the results as an addition to a training set to help increase the accuracy of future queries and selection methods.

In some cases, the knowledge management system16may include a memory36. In some cases, the memory36may be configured to store a user profile for the user, or perhaps a plurality of user profiles for a plurality of users, and the controller34may, for example, generate the knowledge base query based at least in part on the text based message and the user profile. In some cases, the memory36may store query results for subsequent use, particularly if the user or one of the plurality of users frequently asks similar questions or issues similar commands. The memory36may store the answer, or perhaps in some cases the memory36may store a ready-made query so that the controller34can easily send the query to the knowledge bases12a,12bthrough12nwithout having to significantly processes the query. In some cases, the controller34may use a learning algorithm that is configured to generate improved knowledge base queries with continued use. In some cases, the learning algorithm may be stored in the memory36.

In some cases, the controller34may be configured to select less than all of the two or more different knowledge bases12a,12bthrough12nand/or the corresponding knowledge base engines based at least in part on the text based message, and generate and send a knowledge base query that is based at least in part on the text based message to each of the selected knowledge bases12a,12bthrough12nand/or the corresponding knowledge base engines via the knowledge base interface, and receive a corresponding response from each of the selected knowledge bases12a,12bthrough12nand/or the corresponding knowledge base engines via the knowledge base interface30.

In some cases, the controller34may generate an output that is based at least in part on the corresponding responses from each of the selected knowledge bases12a,12bthrough12nand/or the corresponding knowledge base engines, and deliver the output via the output interface32. In some cases, the output may include a fusion of two or more responses from two or more different knowledge bases12a,12bthrough12nand/or the corresponding knowledge base engines. In some cases, the fusion includes selecting only a best one of the two or more responses, or in some cases combining information from each of two or more responses into a single response. Alternatively, and in some cases, each of two or more responses may be output via the output interface32.

In some instances, the knowledge management system16may receive a first text based message from the speech recognition module28, which converted a spoken request form the user into the first text based message. The controller34may then generate and send a first knowledge base query that is based at least in part on the first text based message to a first knowledge base12a,12bthrough12nvia the knowledge base interface30, and may then receive a response from the first knowledge base12a,12bthrough12nvia the knowledge base interface30. In some cases, the controller34may then modify the first text based message to a second text based message based at least in part on the response from the first knowledge base12a,12bthrough12n, and then generate and send a second knowledge base query that is based at least in part on the second text based message to a second knowledge base12a,12bthrough12nvia the knowledge base interface30, and to receive a response from the second knowledge base via the knowledge base interface30. In some cases, the controller34may be configured to generate an output based at least in part on the response from the second knowledge base12a,12bthrough12n, and deliver the output via the output interface32.

In some cases, for example, the controller34may be configured to generate the output based at least in part on the responses from the first knowledge base12a,12b, through12nand the second knowledge base12a,12bthrough12n. In some cases, the controller34may be configured to fuse the responses from the first knowledge base12a,12bthrough12nand the second knowledge base12a,12bthrough12ninto a consolidated response to the first knowledge base query.

Rather than outputting a response from the second knowledge base12a,12bthrough12n, the controller34may be configured to modify the second text based message to a third text based message based at least in part on the response from the second knowledge base12a,12bthrough12n, and then generate and send a third knowledge base query that is based at least in part on the third text based message to a third knowledge base12a,12bthrough12nvia the knowledge base interface30. The controller34may continue with this loop until the received response is determined to have a confidence level that is above a confidence level threshold. The controller34may generate an output and deliver the output via the output interface32. The confidence level may be indicated when a difference in information between the received response and the previous response(s) is less than a threshold value. In some cases, the user may provide feedback at one or more stages of the loop to indicate of the returned response is what is desired. This feedback may be used by the controller34to terminate the loop and/or help learn to processes future queries more efficiently and accurately.

FIG. 2is a flow diagram showing an illustrative method40that may be carried out via the system10, including the device14and the knowledge management system16. At block42, a voice signal is received, such as by the microphone22(FIG. 1) and is forwarded to the speech recognition module28so that the voice signal may be processed. As seen at block44, a determination is made as to whether the voice signal includes a recognized trigger phrase. It will be appreciated that a variety of background noises, including individuals talking, the soundtrack on a television, a radio station and the like, may be picked up by the microphone22. If a recognized trigger phrase is heard, the knowledge management system16is configured to proceed with processing a query, and control passes to block46, where the knowledge management system16continues to monitor the voice signal for a user query following the recognized trigger phrase.

If and when a user query is detected, control passes to block50, where the controller34generates and sends a knowledge base query to each of two or more different knowledge bases12a,12bthrough12n. The knowledge base query may, for example, be based at least in part upon the user query. In some cases, the knowledge base query may also be based at least in part upon information stored within a user profile52, which as noted above may be stored within the memory36. In some cases, the controller34may rely at least in part upon a knowledge base engine selection matrix54. The knowledge base engine selection matrix54may assist the controller34in determining the best knowledge bases12a,12bthrough12nand/or corresponding knowledge base engines to send a particular user query. In some cases, the knowledge base engine selection matrix54may include categories of query contexts, and lists of potential knowledge bases to search for each category. The knowledge base engine selection matrix54may also identify the proper query format for the various knowledge base engines. Each knowledge base engine may, for example, have an Application Program Interface (API) that expects the knowledge base queries received by the knowledge base engine to have a certain format. The knowledge base interface30may properly format each knowledge base query to comply with the corresponding formatting requirements. As will be discussed subsequently,FIG. 6provides a simplified example of the knowledge base engine selection matrix54.

As seen at block56, the controller34may receive the results from each knowledge bases12a,12bthrough12nand/or corresponding knowledge base engines and may fuse the received results, as noted at block58. In some cases, the controller34may then provide the fused results to an output device, as indicated at block60. In some instances, the controller34may instead use the fused results to update the knowledge base query, and the control may revert to block50.

FIG. 3is a flow diagram showing an illustrative method70that may be carried out via the system10, including the device14and the knowledge management system16. At block72, a user voice query is received, and is converted into a text input as seen at block74. The controller34may then process the text input to identify at least one of a user text query and a query context, as indicated at block76. In some cases, processing the text input to identify a user text query and/or a query context may include sending at least a portion of the text input to one or more knowledge base engines78a,78bthrough78mso that one or more of the knowledge base engines78a,78bthrough78mmay help process the text input and identify an appropriate query context. It is contemplated that the one or all of the knowledge base engines78a,78bthrough78mmay be the same or different from the knowledge bases12a,12bthrough12n. In some cases, the controller34may also rely at least in part upon information within the user profile52.

In one particular example, if the text input is “What will the temperature be tomorrow here”? The user profile52may be accessed to identify the zip code wherein the user lives. The controller34may submit the text input to one or more of the knowledge base engines78a,78bthrough78m, and based on the results, identify the query context as “Weather Request”. The controller34may also identify the date for tomorrow via one or more of the knowledge base engines78a,78bthrough78m. The controller34may then assembly the query “What will be the high and low temperature on May 10, 2017 in Minneapolis, Minnesota?”.

In some cases, and as indicated for example at block80, the controller34and/or the knowledge base interface30may identify a subset of knowledge base engines78a,78bthrough78nto send the user text query to. In some cases, identifying the subset may involve use of a knowledge base engine selection matrix54. In some cases, the query context may be used to identify the subset of knowledge base engines78a,78bthrough78n. The results from each of the identified knowledge base engines78a,78bthrough78nmay be received, as indicated at block84, and the results may be fused, at indicated at block86. In some cases, control passes to block88and the fused results may be output to the user and/or as a command to a device. In some cases, such as when the returned results are inconsistent with each other or otherwise are deemed to not meet a threshold confidence level, control may be passed back to block90, where the controller34may for example modify the user text query and/or the query context based upon the fused results.

In some cases, the returned results from each of the identified knowledge base engines78a,78bthrough78nmay be processed to identify a further user text query (e.g. block76) that could produce relevant results and/or identify one or more other knowledge base engines78a,78bthrough78nto submit the query (e.g. cascaded queries). The further user query, when identified, may be submitted to one or more knowledge base engines78a,78bthrough78n. Likewise, when one or more other knowledge base engines78a,78bthrough78nare identified, the user query (e.g. original user query and/or newly identified user query) may be submitted to the newly identified one or more other knowledge base engines78a,78bthrough78n. In some cases, the returned results from each of the identified knowledge base engines78a,78bthrough78nare processed only when the results are deemed to be inconsistent with each other and/or are otherwise deemed to not meet a threshold confidence level. In other some cases, the returned results from each of the identified knowledge base engines78a,78bthrough78nmay be processed even when the results are deemed to be consistent with each other and/or are otherwise deemed to meet a threshold confidence level.

FIG. 4is a flow diagram showing an illustrative method100that may be carried out via the system10, including the device14and the knowledge management system16. At block102, a user voice query is received, and is converted into a user text query at shown at block104. In some cases, information from the user profile52may be used by the controller34and/or the speech recognition module28in converting the user voice query into a user text query. Control passes to block106, where the controller34identifies and/or refines the user text query and/or the query context. In some cases, the controller34may solicit information and or advice from a knowledge base engine78, which may be a single knowledge base engine78or one of a plurality of knowledge base engines such as the knowledge base engines78a,78bthrough78m. In some cases, the controller34may also rely at least in part upon a set of rules108, and may use Machine Learning (ML) and/or Artificial Intelligence (AI) to increase the quality of the user text query over time. Such techniques may include the use of classification and regression trees, random forests, Bayesian belief networks, as well as iterative learning and/or reinforcement learning. These are just examples.

As seen at block110, the controller34and/or knowledge base interface30may identify a subset of knowledge base engines to send the user text query to, based at least in part, on the identified query context. In some cases, the controller34may consult the knowledge base engine selection matrix54. The user text query may then be sent to each of the identified knowledge base engines, as seen at block112. In some cases, the knowledge base engine selection matrix54may identify the proper query format for the various knowledge base engines. Each knowledge base engine may, for example, have an Application Program Interface (API) that expects the knowledge base queries received by the knowledge base engine to have a certain format. The knowledge base interface30may format the user text query into a format that is compatible with each of the selected knowledge base engines.

FIG. 5is a flow diagram showing an illustrative method120that may be carried out via the system10, including the device14and the knowledge management system16. At block122, a user voice query is received, and is converted into a user text query at shown at block124. In some cases, information from the user profile52may be used by the controller34and/or the speech recognition module28in converting the user voice query into a user text query. At block126, the user text query may be sent via the controller34to a first or next knowledge base engine in order to have the knowledge base engine assist in identifying and/or refining the user text query and/or the query context. Control passes to block128, where results are received from the first/next knowledge base engine. At block130, the controller34may refine the user text query and/or the query context using the results from the first/next knowledge base engine. At block134, the controller34determines if the results justify stopping. If so, control passes to block134and the final results are outputted. Otherwise, control reverts to block126, and the query and/or query context are refined.

FIG. 6shows a simplified knowledge base engine selection matrix54. In the illustrated example, the knowledge base engine selection matrix54includes a set of query contexts140, and for each of the query context140, a list of corresponding knowledge base engines142that may be suitable for that particular query context140. For example, if the query context140is a general information request, the knowledge base engine selection matrix54may suggest one or more knowledge base engines such as but not limited to Wikipedia®, Google® Yahoo®, Linkedin®, Facebook® and Twitter®. These are just examples. The knowledge base engine selection matrix54may include much more information. For example, the knowledge base engine selection matrix54may identify the proper query format for the various identified knowledge base engines. Each knowledge base engine may, for example, have an Application Program Interface (API) that expects the knowledge base queries received by the corresponding knowledge base engine to have a certain format. The knowledge base interface30consult the knowledge base engine selection matrix54to properly format each knowledge base query so as to comply with the formatting requirements.

FIG. 7is a flow diagram showing an illustrative method150that may be carried out via the system10, including the device14and the knowledge management system16, involving how results are outputted. At block152, the controller34may receive results from each of the identified knowledge base engines. Control passes to block154, where the controller34fuses the received results. If the previously determined query context was an information request, as indicated at block156, control passes to block160where the controller34may provide information and/or content for user consumption. If the previously determined query context was, for example a command as indicated at block158, control passes to block162where the controller34provides a command to control one or more devices. In some cases, the command may be HVAC-related, but other commands relating to home comfort or home security are contemplated, as well as other commands for other devices.

FIG. 8is a flow diagram showing an illustrative method170that may be carried out via the system10, including the device14and the knowledge management system16, involving how results are outputted. At block152, the controller34may receive results from each of the identified knowledge base engines. Control passes to block154, where the controller34fuses the received results. It will be appreciated that when attempting to fuse results, in some cases the multiple results may be redundant, as noted at block172; or conflicting, as noted at block174; or even ambiguous and/or incomplete, as indicated at block176. The controller34may determine how best to proceed. For example, in the case of redundant results, the controller34may provide a single result to an output device, as seen at block178. In the case of conflicting results, the controller34may output the multiple results, so that the user may determine how to interpret the conflicting results. In the case of ambiguous and/or incomplete results, the controller34may choose to not output any results (block182), but may instead decide to refine and resubmit the query, as noted at block184. It will be appreciated that, depending on the nature of the query, that this may become an iterative process. The controller34may ultimately provide information and/or content for the user's consumption, as noted at block186, and/or output a command to control one or more devices, as noted at block188.

In some cases, the results from each of the identified knowledge base engines may be processed to identify a further user text query that could produce relevant results and/or identify one or more other knowledge base engines to submit the query. The further user query, when identified, may be submitted to one or more knowledge base engines (block184). Likewise, when one or more other knowledge base engines are identified, the user query (e.g. original user query and/or newly identified user query) may be submitted to the newly identified one or more other knowledge base engines. In some cases, the returned results from each of the identified knowledge base engines are processed only when the results are deemed to be ambiguous/inconsistent with each other and/or are otherwise deemed to not meet a threshold confidence level. In other some cases, the returned results from each of the identified knowledge base engines may be processed even when the results are deemed to be consistent with each other and/or are otherwise deemed to meet a threshold confidence level.

Use Case #1: Query Weather Forecast1. System Converts the User Query “What is the weather forecast for tomorrow?” to text.2. System determines a knowledge base query of “Weather forecast for Apr. 20, 2017 in Minneapolis, Minnesota”, where the location is pulled from the user's profile, and the query context may be “Weather Request”.3. System consults the knowledge base engine selection matrix54and identifies knowledge base engines API's of weather.com, noaa.com and wunderground.com.4. System sends the knowledge base query and query context to each of the knowledge base engines, each formatted for the identified knowledge base engine's API.5. System received the results from the knowledge base engines.6. System fuses the received results and presents the results to the user: “Tomorrow will be cloudy in the morning but clear in the afternoon with a high of 72 degrees”.

Use Case #2: Where can I Buy a New Air Filter for My Furnace?1. System Converts User Query “Where can I buy a new air filter for my furnace?” to text.2. System determines query context of “Air Filter” and “purchase”.3. System consults the user profile to identify if the user has an account on the Honeywell Cloud Service, and if so queries the knowledge base of Honeywell Cloud Service to identify the user's furnace type and location.4. System consults the knowledge base engine selection matrix54and identifies the knowledge base of amazon, google shopping, Lowes, and Home Depot to extract the current availability and price for the type of filter for purchase.5. System queries the user profile to checks if the user has an account registered with amazon, google shopping, Lowes, or Home Depot or other online retailer.6. System fuses information to provide the type of furnace filter needed, and the prices at various retail stores.7. System prompts the user if user wants to purchase with his online retailer account and does so based on the user response.

Use Case 3: Temperature Setback Command1. System Converts to User Query “Set back my thermostat” to text.2. System determines query context of “Command” and “Temperature Setback”.3. System consults the user profile to identify if the user has an account on the Honeywell Cloud Service, and if so:4. System consults the knowledge base engine selection matrix54and identifies the knowledge bases of Honeywell Cloud, weather service, connected calendar service, and traffic service.5. System determines the weather forecast from the weather service to determine the temperature and humidity profile for the day, and calculates the best setback temperature based on the weather data.6. System queries the calendar and traffic knowledge bases to determine the user's schedule and traffic patterns to determine an expected return time of the user, and sets the temperature setback time to that time.7. System sends a command to the Honeywell Cloud Service to schedule the thermostat to those temperatures.

Use Case 4: “Set My Cabin to 72 degrees”1. System Converts to User Query “Set My Cabin to 72 degrees” to text.2. System determines query context of “Command” and “Set Temperature”.3. System consults the knowledge base engine selection matrix54and identifies the knowledge base of Honeywell Cloud.4. System consults the user profile to identify if the user has an account on the Honeywell Cloud Service, and if so:5. System sends a command to the Honeywell Cloud Service to change the thermostat temperature to 72 degrees.

Use Case 5: What is My Calendar Today?.1. System Converts to User Query “What is on my calendar today” to text.2. System determines query context of “Calendar”.3. System consults the user profile to identify one or more calendar knowledge bases to which the user subscribes.4. System queries all identified calendar knowledge bases subscribed to by the user.5. System fuses the results by generating a list of all calendar events.6. System outputs the fused results to the user.

Use Case 6: What is the Value of Pi?1. System Converts to user query “What is the Value of Pi” to text.2. System determines a query context of “Mathematical”.3. System consults the knowledge base engine selection matrix54and identifies knowledge bases “Wikipedia”, “Wolfram alpha” etc.4. System sends knowledge base query to the identified knowledge bases “Wikipedia”, “Wolfram alpha” etc.5. The system receives from some of the knowledge bases the definition of pi—“It is the ratio of circumference and diameter of a circle” and others the numerical value “3.141592 . . . .”6. System provide a fused response of “Pi is defined as the ratio of circumference and diameter of a circle and has the numerical value 3.141592 . . . .”

Use Case 7: “are My Basement Lights Switched Off?”1. System convers the user query “Are my basement lights switched off?” to text.3. System determines that the query needs to be sent to only one knowledge engine (e.g. Lutron or other light control knowledge base).4. System sends the knowledge base query to that knowledge engine

Use Case 8: “Reorder Tide Pods”1. System converts user query “Reorder tide pods” to text.2. System determines that the query needs to be sent to one knowledge engine (e.g. Amazon engine for purchases).3. System sends a knowledge base query to that knowledge engine.4. System provides results from that query.