Patent Description:
Today's automobiles are highly computerized. Additionally, surveys have shown that new car buyers are very interested in car electronics that allow for continued connectivity while on the road. Accordingly, car manufactures now offer highly-advanced, voice-controlled infotainment systems within their vehicles that provide the user with many different types of functionality. One specific functionality that these infotainment systems offer is the ability to interface with external systems (such as smart phones and tablet computers).

Unfortunately, the voice interface for these infotainment systems is often underwhelming, as selecting between the functionality offered by the external system and the functionality offered by the infotainment system often proves difficult.

<CIT> discloses vocal control of a computer system that comprises a vehicle infotainment system.

Other features and advantages will become apparent from the description, the drawings, and the claims.

In <FIG>, there is shown system selection process <NUM>. System selection process <NUM> may reside on and may be executed by vehicle infotainment system <NUM> (a computing device). Examples of vehicle infotainment system <NUM> may include any of the types of infotainment systems that are incorporated into vehicles, such as vehicle navigation systems, vehicle music systems, vehicle video systems, and vehicle climate control systems.

The instruction sets and subroutines of system selection process <NUM>, which may be stored on storage device <NUM> coupled to vehicle infotainment system <NUM>, may be executed by one or more processors (not shown) and one or more memory architectures (not shown) included within vehicle infotainment system <NUM>. Examples of storage device <NUM> may include but are not limited to: a hard disk drive; a RAID device; a random access memory (RAM); a read-only memory (ROM); and all forms of flash memory storage devices. Vehicle infotainment system <NUM> may execute an operating system, examples of which may include but are not limited to Microsoft Windows tm, Android tm, iOS tm Linux tm, or a custom operating system.

Vehicle infotainment system <NUM> may be configured to execute various different functionalities that may be of interest / useful to a user (e.g., user <NUM>). Examples of such functionalities may include but are not limited to: radio functionality (e.g., that enables the playing of terrestrial radio stations and satellite radio stations); audio functionality (e.g., that enables the playing of audio, wherein this audio may be disc-based or locally stored on storage device <NUM>); video functionality (e.g., that enables the playing of video, wherein this video may be disc-based or locally stored on storage device <NUM>); and navigation functionality (e.g., that enables the execution of navigation / guidance functionality).

Vehicle infotainment system <NUM> may include a plurality of buttons (e.g., physical buttons or electronic buttons) that enable the selection of the above-described functionality. For example, the above-described radio functionality may be selectable via "radio" button <NUM>; the above-described audio functionality may be selectable via "audio" button <NUM>; the above-described video functionality may be selectable via "video" button <NUM>; and the above-described navigation functionality may be selectable via "nav" button <NUM>.

Vehicle infotainment system <NUM> may be configured to interface with one or more external systems (e.g., external system <NUM>). Examples of external system <NUM> may include but are not limited to: a cellular telephone; a smart phone; a tablet computing device; a portable computing device; a remote computing device, a handheld entertainment device (e.g., such as a gaming device) or a cloud service / platform. When interfacing with vehicle infotainment system <NUM>, external system <NUM> may be releasably coupled to vehicle infotainment system <NUM> via a hardwired connection (e.g., USB cable <NUM>). Alternatively, external system <NUM> may be wirelessly coupled to vehicle infotainment system <NUM> via wireless communication channel <NUM> established between external system <NUM> and antenna <NUM> of vehicle infotainment system <NUM>. An example of wireless communication channel <NUM> may include but is not limited to a Bluetooth communication channel. As is known in the art, Bluetooth is a telecommunications industry specification that allows e.g., mobile phones, computers, and personal digital assistants to be interconnected using a short-range wireless connection.

Vehicle infotainment system <NUM> and/or external system <NUM> may be configured to be wirelessly coupled to / access an external network (e.g., network <NUM>). Examples of network <NUM> may include but are not limited to the internet, a cellular network, a WiFi network, and/or a cloud-based computing platform.

As discussed above, vehicle infotainment system <NUM> may be configured to execute various different functionalities that may be of interest / useful for a user (e.g., user <NUM>). Some of these functionalities may be functionalities that are resident on (provided by) external system <NUM>. Examples of such functionality may include phone functionality (e.g., that enables the placing of phone calls using external system <NUM> via vehicle infotainment system <NUM>) and system access functional (e.g., that enables user <NUM> to access content or functionality of external system <NUM>). Accordingly, the above-described phone functionality may be selectable via "phone" button <NUM> and the above-described system access functionality may be selectable via "ext" button <NUM>. Vehicle infotainment system <NUM> may also include display screen <NUM> and one or more knobs / dials <NUM>, <NUM> that effectuate the use of such functionalities.

Vehicle infotainment system <NUM> may include microphone assembly <NUM> and speech-to-text conversion system <NUM> (such as those available from Nuance Communications, Inc. of Burlington, MA). Accordingly, vehicle infotainment system <NUM> may be configured to accept verbal commands (e.g., verbal command <NUM>) that are spoken and provided by (in this example) user <NUM>. As will be discussed below in greater detail, these verbal commands (e.g., verbal command <NUM>) may be configured to allow user <NUM> to access and control the above-described functionalities in a hands-free fashion.

Unfortunately, since (in this example) vehicle infotainment system <NUM> and external system <NUM> may both be capable of providing functionalities to user <NUM> (oftentimes with these differing functionalities overlapping), confusion may occur when a verbal command (e.g., verbal command <NUM>) is received for a functionality that may be provided & processed by either of vehicle infotainment system <NUM> and external system <NUM>. For example, if a verbal command (e.g., verbal command <NUM>) asks for driving directions, this navigation functionality may be provided by either the navigation system included within vehicle infotainment system <NUM> or by a navigation application (e.g., Waze tm, Apple tm Maps, Google tm Maps) installed on external system <NUM>. Accordingly, system selection process <NUM> may be configured to intercept these verbal commands (e.g., verbal command <NUM>) so that they may be routed to the appropriate (or preferred) system.

Referring also to <FIG>, assume for the following example that user <NUM> is driving and issues verbal command <NUM>. For example, user <NUM> may select a voice command button (not shown) within the vehicle into which vehicle infotainment system <NUM> is installed, and then user <NUM> may speak verbal command <NUM>. Alternatively, user <NUM> may say a wake up word / phrase (e.g., "Hey Siri" or "Hey Alexa") and then speak verbal command <NUM>; or user <NUM> may simply speak verbal command <NUM> and system selection process <NUM> may interpret the request; or user <NUM> may respond to a prompt / request made by system selection process <NUM> by speaking verbal command <NUM>. System selection process <NUM> may then receive <NUM> verbal command <NUM> (from user <NUM>) on vehicle infotainment system <NUM>.

Examples of verbal command <NUM> may include but are not limited to commands that concern: playing a terrestrial radio station, playing a satellite radio station, playing music within a music library, obtaining driving directions to a desired destination, placing a phone call to a spouse, locating a local gas station, identifying local places to eat, and receiving stock market quotes.

Upon receiving <NUM> verbal command <NUM>, system selection process <NUM> may identify <NUM> a preferred system for executing verbal command <NUM>, wherein this preferred system may be selected from e.g., vehicle infotainment system <NUM> and external system <NUM>. Once the preferred system is identified <NUM>, system selection process <NUM> may route <NUM> verbal command <NUM> to this preferred system.

The manner in which the preferred system is identified <NUM> by system selection process <NUM> may be accomplished using various methodologies. For example, some system preferences may be pre-defined, while other system preferences may be learned. Additionally, some verbal commands may be unknown to system selection process <NUM>, thus requiring additional inquiry.

When identifying <NUM> a preferred system (chosen from vehicle infotainment system <NUM> and external system <NUM>) for executing the verbal command (e.g., verbal command <NUM>), system selection process <NUM> may identify <NUM> the preferred system based, at least in part, upon one or more of a defined system preference associated with the verbal command and a learned system preference associated with the verbal command.

In the configuration in which system selection process <NUM> identifies <NUM> the preferred system based, at least in part, upon a defined system preference associated with the verbal command, a lookup table (e.g., lookup table <NUM>) may be utilized. For example, system selection process <NUM> may have access to lookup table <NUM>, wherein lookup table <NUM> may associate various verbal commands with various functionalities of e.g., vehicle infotainment system <NUM> or external system <NUM>. Lookup table <NUM> may be stored locally or remotely stored. For example, lookup table <NUM> may be stored locally within (or stored upon) storage device <NUM> that is coupled to vehicle infotainment system <NUM>. Alternatively, lookup table <NUM> may be stored remotely within network <NUM>. The associations defined within lookup table <NUM> may be defined by the user (e.g. user <NUM>), may be defined by the maker of vehicle infotainment system <NUM>, or may be designed by the manufacturer of the vehicle into which vehicle infotainment system <NUM> is installed.

For example, samples of the types of entries defined within lookup table <NUM> may include but are not limited to:.

Accordingly and in a configuration that identifies <NUM> the preferred system based (at least in part) upon a defined system preference associated with the verbal command, if verbal command <NUM> requests driving directions to Yellowstone National Park, system selection process <NUM> may process lookup table <NUM> and route <NUM> verbal command <NUM> to the navigation functionality included within vehicle infotainment system <NUM> (i.e., the preferred system). Further, if verbal command <NUM> requests the playing of <NUM> FM (i.e., a terrestrial radio station), system selection process <NUM> may process lookup table <NUM> and route <NUM> verbal command <NUM> to the radio functionality included within vehicle infotainment system <NUM> (i.e., the preferred system). Conversely, if verbal command <NUM> requests the dialing of phone number <NUM>-<NUM>-<NUM>, system selection process <NUM> may process lookup table <NUM> and route <NUM> verbal command <NUM> to the phone functionality included within remote system <NUM> (i.e., the preferred system). Additionally, if verbal command <NUM> requests the playing of "Sirius tm Summer Jazz" (i.e., a satellite radio station), system selection process <NUM> may process lookup table <NUM> and route <NUM> verbal command <NUM> to the satellite radio functionality included within remote system <NUM> (i.e., the preferred system). The satellite radio functionality included within remote system <NUM> may be effectuated by remote system <NUM> via one or more applications (e.g., applications <NUM>, <NUM>, <NUM>, <NUM>) executed on remote system <NUM>.

In the event that verbal command <NUM> is requesting a functionality that a) may be handled by either vehicle infotainment system <NUM> or external system <NUM>, and b) lookup table <NUM> is silent concerning what the preferred system is for that particular type of functionality, a defined system-level default may be applied. For example, assume that verbal command <NUM> is "Play some <NUM> music" and lookup table <NUM> does not identify a preferred system for the requested audio functionality. Further, this requested audio functionality may be provided by vehicle infotainment system <NUM> via locally-stored music content available on vehicle infotainment system <NUM>. Alternatively, this requested audio functionality may be provided by external system <NUM> via locally-stored music content available on remote system <NUM> or remotely-available music content accessible to remote system <NUM>. Accordingly and in such a situation, a defined system-level default may be applied that e.g., routes such undefined functionality requests to the local system (e.g., vehicle infotainment system <NUM>).

In the configuration in which system selection process <NUM> identifies <NUM> the preferred system based, at least in part, upon a learned system preference associated with the verbal command, system selection process <NUM> may determine the manner in which the functionality defined within the verbal command (e.g., verbal command <NUM>) was processed in the past. and may use that processing history to decide how to process verbal command <NUM> now. For example, if verbal command <NUM> requests driving directions to Boston's Logan Airport and the most recent seven requests for navigation functionality were handled by the navigation functionality included within vehicle infotainment system <NUM>, system selection process <NUM> may route <NUM> verbal command <NUM> to the navigation functionality included within vehicle infotainment system <NUM> (i.e., the preferred system).

When system selection process <NUM> identifies <NUM> the preferred system based, at least in part, upon a learned system preference, system selection process <NUM> may utilize some form of machine learning and/or artificial intelligence. For example, system selection process <NUM> may utilize probabilistic modeling to analyze functionality usage data within vehicle infotainment system <NUM> and external system <NUM> to uncover such learned preferences.

When identifying <NUM> a preferred system (chosen from vehicle infotainment system <NUM> and external system <NUM>) for executing the verbal command (e.g., verbal command <NUM>), system selection process <NUM> may identify <NUM> the preferred system based, at least in part, upon an embedded system preference included within the verbal command.

For example, if verbal command <NUM> is "Play some Led Zeppelin on Apple Music", system selection process <NUM> may identify <NUM> the preferred system by processing and/or parsing verbal command <NUM> to determine if a portion of verbal command <NUM> indicates the specific functionality requested. Assuming that remote system <NUM> is an Apple tm product, remote system <NUM> may include an application (e.g., applications <NUM>, <NUM>, <NUM>, <NUM>) that enables the playing of Led Zeppelin via the "Apple Music" system. Accordingly and upon identifying <NUM> the "Apple Music" portion of verbal command <NUM>, system selection process <NUM> may route <NUM> verbal command <NUM> to the audio functionality / Apple Music application within remote system <NUM> (i.e., the preferred system).

When identifying <NUM> a preferred system (chosen from vehicle infotainment system <NUM> and external system <NUM>) for executing the verbal command (e.g., verbal command <NUM>), system selection process <NUM> may identify <NUM> the preferred system based, at least in part, upon the existence of an active session with one of the vehicle infotainment system and the external system.

For example, assume that user <NUM> is driving in their car to Yellowstone National Park and they realize that they need gas. Accordingly, user <NUM> may issue verbal command <NUM> which states "Get me to the closest gas station". Accordingly, being that user <NUM> is currently using the navigation functionality of vehicle infotainment system <NUM>, system selection process <NUM> may route <NUM> verbal command <NUM> to the navigation functionality within vehicle infotainment system <NUM> (i.e., the preferred system).

When identifying <NUM> a preferred system (chosen from vehicle infotainment system <NUM> and external system <NUM>) for executing the verbal command (e.g., verbal command <NUM>), system selection process <NUM> may provide <NUM> a verbal inquiry to the user; and may identify <NUM> the preferred system based, at least in part, upon a verbal response received from the user concerning the verbal inquiry provided to the user.

As discussed above, there may be situations in which verbal command <NUM> is requesting a functionality that a) may be handled by either vehicle infotainment system <NUM> or external system <NUM>, and b) lookup table <NUM> is silent concerning what the preferred system is for that particular type of functionality.

While (as discussed above), a defined system-level default may be applied, other configurations are possible. For example, assume again that verbal command <NUM> is "Play some <NUM> music" and lookup table <NUM> does not identify a preferred system for the requested audio functionality, wherein this requested audio functionality may be provided by vehicle infotainment system <NUM> via locally-stored music content available on vehicle infotainment system <NUM>. Alternatively, this requested audio functionality may be provided by external system <NUM> via locally-stored music content available on remote system <NUM> or remotely-available music content accessible to remote system <NUM>. Accordingly and in such a situation, system selection process <NUM> may provide <NUM> verbal inquiry <NUM> (e.g., "How would you like to play this <NUM> music? Locally? Remotely? Pandora?". User <NUM> may then provide verbal response <NUM> (e.g., "Locally") and system selection process <NUM> may identify <NUM> the preferred system (e.g., vehicle infotainment system <NUM>) based, at least in part, upon verbal response <NUM> received from user <NUM> concerning verbal inquiry <NUM> provided to user <NUM>.

When identifying <NUM> a preferred system (chosen from vehicle infotainment system <NUM> and external system <NUM>) for executing the verbal command (e.g., verbal command <NUM>), when only one system is available for (or capable of) providing the functionality requested in verbal command <NUM>, system selection process <NUM> may select that available system.

For example, assume that vehicle infotainment system <NUM> does not include navigation functionality. Further assume that verbal command <NUM> requests driving directions to Disney World in Orland, Florida. Accordingly, system selection process <NUM> may route <NUM> verbal command <NUM> to the navigation functionality included within external system <NUM> (i.e., the preferred system), as vehicle infotainment system <NUM> does not include or offer such functionality.

When identifying <NUM> a preferred system (chosen from vehicle infotainment system <NUM> and external system <NUM>) for executing the verbal command (e.g., verbal command <NUM>), system selection process <NUM> may provide <NUM> verbal command <NUM> to both vehicle infotainment system <NUM> and external system <NUM> and may determine <NUM> the preferred system based, at least in part, upon a response received from one or more of vehicle infotainment system <NUM> and external system <NUM>.

For example, assume again that verbal command <NUM> is "Play some <NUM> music" and lookup table <NUM> does not identify a preferred system for the requested audio functionality. Accordingly, system selection process <NUM> may provide <NUM> verbal command <NUM> to both vehicle infotainment system <NUM> and external system <NUM>. System selection process <NUM> may then listen for a response from either vehicle infotainment system <NUM> and external system <NUM> and may determine <NUM> the preferred system based, at least in part, upon the response received.

For example, system selection process <NUM> may identify the preferred system as the first system to respond. Accordingly, if vehicle infotainment system <NUM> starts to play <NUM> music, system selection process <NUM> may e.g., cancel the request made of external system <NUM> or mute the audio of external system <NUM>.

As another example, assume that verbal command <NUM> is "navigate to Ristorante Pablo". Accordingly, system selection process <NUM> may provide <NUM> verbal command <NUM> to both vehicle infotainment system <NUM> and external system <NUM>. System selection process <NUM> may then listen for a response from either vehicle infotainment system <NUM> and external system <NUM>. If vehicle infotainment system <NUM> responds with "Sorry, no matches found", that response may be suppressed by system selection process <NUM>. Conversely, if external system <NUM> responds with "Here are your matches", system selection process <NUM> may determine <NUM> external system <NUM> to be the preferred system.

System selection process <NUM> may be configured to monitor the text-to-speech system included within external system <NUM> to determine <NUM> the gender of the text-to-speech voice of external system <NUM>. System selection process <NUM> may then set <NUM> the gender of the text-to-speech voice of vehicle infotainment system <NUM> based upon the gender of the text-to-speech voice of external system <NUM>. For example, vehicle infotainment system <NUM> may set the gender of the voice of vehicle infotainment system <NUM> to a) have the text-to-speech voice of vehicle infotainment system <NUM> match the text-to-speech voice of external system <NUM> (to provide a homogenous user experience); or b) have the text-to-speech voice of vehicle infotainment system <NUM> be the opposite of the text-to-speech voice of external system <NUM> (to provide for audible system differentiation).

Additionally, if there is more than one text-to-speech voice available on vehicle infotainment system <NUM> for a particular gender (e.g., there is a "Jennifer" text-to-speech voice and a "Sherry" text-to-speech voice), system selection process <NUM> may choose the text-to-speech voice (either "Jennifer" or "Sherry") that most closely matches the text-to-speech voice of external system <NUM>. For example, if vehicle infotainment system <NUM> detects Siri's text-to-speech voice on external system <NUM>, system selection process <NUM> may set the "Sherry" text-to-speech voice for vehicle infotainment system <NUM> because the "Sherry" text-to-speech voice sounds similar to Siri's text-to-speech voice.

System selection process <NUM> may be configured to route verbal command <NUM> to third party systems. As discussed above, examples of network <NUM> may include but are not limited to the internet, a cellular network, a WiFi network, and/or a cloud-based computing platform. Accordingly and upon receiving verbal command <NUM>, system selection process <NUM> may be configured to route verbal command <NUM> to a third party system available via network <NUM>, thus allowing user <NUM> to e.g., arm / disarm their home security system, open a garage door, unlock the front door of their home, or adjust the temperature of their apartment.

As will be appreciated by one skilled in the art, the present disclosure may be embodied as a method, a system, or a computer program product. Accordingly, the present disclosure may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a "circuit," "module" or "system. " Furthermore, the present disclosure may take the form of a computer program product on a computer-usable storage medium having computer-usable program code embodied in the medium.

Any suitable computer usable or computer readable medium may be utilized. More specific examples (a non-exhaustive list) of the computer-readable medium may include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a transmission media such as those supporting the Internet or an intranet, or a magnetic storage device. The computer-usable or computer-readable medium may also be paper or another suitable medium upon which the program is printed, as the program can be electronically captured, via, for instance, optical scanning of the paper or other medium, then compiled, interpreted, or otherwise processed in a suitable manner, if necessary, and then stored in a computer memory. In the context of this document, a computer-usable or computer-readable medium may be any medium that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. The computer-usable medium may include a propagated data signal with the computer-usable program code embodied therewith, either in baseband or as part of a carrier wave. The computer usable program code may be transmitted using any appropriate medium, including but not limited to the Internet, wireline, optical fiber cable, RF, etc..

Computer program code for carrying out operations of the present disclosure may be written in an object oriented programming language such as Java, Smalltalk, C++ or the like. However, the computer program code for carrying out operations of the present disclosure may also be written in conventional procedural programming languages, such as the "C" programming language or similar programming languages. In the latter scenario, the remote computer may be connected to the user's computer through a local area network / a wide area network / the Internet (e.g., network <NUM>).

The present disclosure is described with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the disclosure. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, may be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer / special purpose computer / other programmable data processing apparatus, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in a computer-readable memory that may direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including instruction means which implement the function/act specified in the flowchart and/or block diagram block or blocks.

The flowcharts and block diagrams in the figures may illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present disclosure. It will also be noted that each block of the block diagrams and/or flowchart illustrations, and combinations of blocks in the block diagrams and/or flowchart illustrations, may be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.

The corresponding structures, materials, acts, and equivalents of all means or step plus function elements in the claims below are intended to include any structure, material, or act for performing the function in combination with other claimed elements as specifically claimed. The description of the present disclosure has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the disclosure in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the disclosure. The embodiment was chosen and described in order to best explain the principles of the disclosure and the practical application, and to enable others of ordinary skill in the art to understand the disclosure for various embodiments with various modifications as are suited to the particular use contemplated.

Claim 1:
A computer-implemented method executed on a computing device, said method comprising
on a vehicle infotainment system (<NUM>) that is configured to interface with an external system (<NUM>), wherein the vehicle infotainment system (<NUM>) and the external system (<NUM>) are both capable of providing functionalities to a user (<NUM>) with differing functionalities overlapping,
receiving (<NUM>) a verbal command (<NUM>) from the user (<NUM>), wherein the verbal command (<NUM>) can be processed by either of the vehicle infotainment system (<NUM>) and the external system (<NUM>);
identifying (<NUM>) a preferred system for executing the verbal command (<NUM>); and
routing (<NUM>) the verbal command (<NUM>) to the preferred system, wherein the preferred system is selected from the vehicle infotainment system (<NUM>) and the external system (<NUM>) and
wherein the external system is one of a smart phone and a tablet computing device,
wherein identifying (<NUM>) the preferred system comprises one of:
identifying (<NUM>) the preferred system based on a learned system preference associated with the verbal command (<NUM>),
identifying the preferred system based at least in part on a defined system preference associated with the verbal command (<NUM>), and
identifying (<NUM>) the preferred system based at least in part on an embedded system preference included within the verbal command (<NUM>).