Patent Publication Number: US-8996386-B2

Title: Method and system for creating a voice recognition database for a mobile device using image processing and optical character recognition

Description:
FIELD 
     The present disclosure relates to a method and system for creating a voice recognition database for a mobile device using image processing and character recognition. 
     BACKGROUND 
     Typical head units of vehicles provide users with complex user interfaces for controlling systems within the vehicles. For example, the user interface of the head unit allow a user to control an audio/visual system of the vehicle, an HVAC system, and/or a GPS system. The head unit may have a touch screen, whereby the user can enter user input by touching a section of the screen corresponding to a command for adjusting or controlling an attribute of one of the systems. For example, the user can adjust the volume of the audio/visual system by pressing a section of the screen displaying an input mechanism, e.g. a button, for adjusting the volume levels. 
     Additionally, the head unit of a vehicle may have a set of predefined commands for providing user input. A user will issue a voice command by uttering a specific command, e.g. “Increase Volume.” A voice recognition module associated with the head unit executes voice recognition software to identify the word or phrase uttered by the user. The voice recognition module will then determine if the uttered word or phrase is a recognized command. If so, the voice recognition module will communicate the recognized command to the appropriate vehicle system, which executes the command. 
     Further, a user can synchronize a mobile device to the vehicle head unit. The mobile device will connect to the head unit via a wired connection, e.g. a USB connection, or wireless connection, e.g. a Bluetooth connection. Once connected, a user can have limited interaction with the mobile device via the head unit. For example, a user can perform hands free talking or can have access to a play list on the mobile device. The user, however, is unable to control the mobile device using the voice recognition capabilities of the vehicle&#39;s head unit. Furthermore, as more third party developers develop applications for mobile devices, there is a growing need for an efficient way to issue voice commands for the applications through the vehicle head unit. 
     The background description provided herein is for the purpose of generally presenting the context of the disclosure. Work of the presently named inventors, to the extent it is described in this background section, as well as aspects of the description that may not otherwise qualify as prior art at the time of filing, are neither expressly nor impliedly admitted as prior art against the present disclosure. 
     SUMMARY 
     In one aspect of the disclosure, a method for remotely operating a mobile device using a vehicle head-unit is disclosed. The method comprises receiving a representation of a user interface screen of the mobile device from the mobile device and scanning the representation of the user interface screen to find a representation of an input mechanism. The input mechanism is used to provide a command to the mobile device. The method further comprises scanning the representation of the input mechanisms to determine a voice recognition command and associating the voice recognition command with the input mechanism in a voice recognition database. When a user utters the voice recognition command the head unit transmits a signal corresponding to the input mechanism to the mobile device. 
     In another aspect of the disclosure, a head unit of a vehicle configured to remotely operate a mobile device using voice recognition is disclosed. The head-unit comprises a communication module that receives a representation of a user interface screen of the mobile device from the mobile device. The head unit further includes an image scanning module that scans the representation of the user interface screen to find a representation of an input mechanism on the representation of the user interface screen. The input mechanism is used to provide a command to the mobile device. The head unit further comprises a character recognition module that scans the representation of the input mechanism found by the image scanning module to determine a voice recognition command, wherein the voice recognition command is determined based on at least one character or symbol identified by the character recognition module. The head unit also includes a mobile device voice recognition database that stores the voice recognition command corresponding to the input mechanism found in the user interface screen. When a user utters the voice recognition command the head unit transmits a signal corresponding to the input mechanism to the mobile device. 
     Further areas of applicability of the present disclosure will become apparent from the detailed description provided hereinafter. It should be understood that the detailed description and specific examples are intended for purposes of illustration only and are not intended to limit the scope of the disclosure. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The present disclosure will become more fully understood from the detailed description and the accompanying drawings, wherein: 
         FIG. 1  is a drawing illustrating exemplary user interface screens of a mobile device and a vehicle head unit; 
         FIGS. 2A and 2B  are drawings illustrating a default user interface of a mobile device and an application user interface, respectively; 
         FIG. 3  is a component diagram illustrating exemplary components of a head unit for performing voice recognition; 
         FIG. 4  is a flow chart illustrating an method for populating a mobile device voice recognition database of a head unit; 
         FIG. 5  is a flow chart illustrating an alternate method for populating a mobile device voice recognition database of a head unit; 
         FIG. 6  is a flow chart illustrating an exemplary method for performing voice recognition; and 
         FIG. 7  is a flow chart illustrating an alternate method for performing voice recognition. 
     
    
    
     DETAILED DESCRIPTION 
     As vehicle head units are becoming more advanced, so too are the communication capabilities between the head unit and mobile devices of a user. Referring now to  FIG. 1 , an exemplary head unit  100  and mobile device  120  are shown. The head unit  100  is typically located at the center console of the vehicle and allows a user to control various aspects of the vehicle. For instance, the user can control the vehicle&#39;s audio/visual system, HVAC system, or GPS system using a touch screen that displays user interface  102  having input mechanisms  104 ,  106 ,  108 , and  110  to the user. The user can touch an input mechanism  104 ,  106 ,  108 , or  110  on the screen to issue a command to the head unit  100 . 
     The head unit  100  is further configured to connect to or communicate with the mobile device  120 . The connection between the mobile device  120  and the head unit  100  can be established by way of a wired connection, e.g. a USB connection, or a wireless connection, e.g. a Bluetooth or WiFi connection. Once a connection is established between the head unit  100  and the mobile device  120 , the exemplary head unit  100  can receive a representation of the current user interface  122  of the mobile device  120 . The current user interface  122  of the mobile device  120  is the screen currently displayed by the mobile device  120 . The head unit  100  is configured to display the graphical representation of the current user interface  102  on the screen of the head unit  100 . 
     The current user interface  122  of the mobile device  120  includes input mechanisms  124 ,  126 ,  128 , and  130  displayed on the screen of the mobile device  120 . Exemplary input mechanisms  124 ,  126 ,  128 , and  130  are buttons having symbols or text indicating a command that can be executed by the mobile device  120 . The input mechanisms  124 ,  126 ,  128 , and  130  displayed on the screen of the mobile device  120  are dependant on the state of the mobile device  120  itself. For instance, if the mobile device  120  is in a default state, the user interface may present a user will a plurality of applications to choose from. Exemplary applications include a telephone application, a text messaging application, a GPS or maps application, a music player application, a weather application, an email application and third party applications. If the mobile device is executing an application, e.g. the user has selected the telephone application or a third party application, the user interface  122  of the mobile device  120  will display input mechanisms  124 ,  126 ,  128 , and  130  specific to the application. 
     As mentioned, the head unit  100  receives the current user interface  122  of the mobile device  120  and displays a user interface  102  corresponding to the current user interface  122  displayed by the mobile device  120 , including input mechanisms  104 ,  106 ,  108 , and  110 . The input mechanisms  104 ,  106 ,  108 , and  110  displayed on the head unit  100  can be used by the user to provide input to the mobile device  120 . The user presses the section of the screen displaying the input mechanism  104 ,  106 ,  108 , or  110 , and the head unit  100  will transmit a message to the mobile device  120  indicating that a particular input mechanism or location of the screen was pressed or selected by the user. The effect of pressing one of the input mechanisms  104 ,  106 ,  108 , and  110  is the same as if the user had pressed a corresponding input mechanism  124 ,  126 ,  128 , or  130  on the mobile device  120 . Upon receiving the communication from the head unit  100 , the mobile device  120  executes a command corresponding to the input mechanism  104 ,  106 ,  108 , or  110  pressed by the user. 
       FIGS. 2A and 2B  illustrate exemplary user interface screens.  FIG. 2A  illustrates an exemplary default screen  222  and a corresponding default user interface screen  202  displayed on the head unit  100 . In the default user interface screen  222  of the mobile device  120 , a plurality of exemplary input mechanisms are displayed. The plurality of exemplary input mechanisms include input mechanisms to initiate a text messaging application  224 , a telephone application  226 , an email application  228 , an internet radio application  230 , a GPS application  232 , and a music player application  234  are depicted. A corresponding plurality of input mechanisms  204 ,  206 ,  208 ,  210 ,  212 , and  214  are displayed on the screen of the head unit  100 . The user can press one of the input mechanisms on either the head unit  100  or the mobile device  120  to initiate the application corresponding to the selected input mechanism. 
       FIG. 2B  illustrates an exemplary user interface  262  of an application selected by a user and executing on the mobile device  120 . The head unit  100  is displaying a corresponding user interface  242 . In the example provided in  FIG. 2B , the user has selected the internet radio application input mechanism  210  or  230  ( FIG. 2A ). Thus, a user interface  262  for an internet radio application is displayed on the screen of the mobile device  120  and a corresponding user interface  242  is displayed on the screen of the head unit  100 . As previously discussed, the head unit  100  receives a representation of the current user interface  262  from the mobile device  120  and displays the representation on the screen of the head unit  100 . The user interface  262  includes a plurality of input mechanisms  264 ,  266 ,  268 ,  270 ,  272 , and  274  for controlling the internet radio application. For instance, the input mechanisms for the internet radio application can include input mechanisms for selecting a “Rock” radio station  264 , a “Classical” radio station  266 , a “News” station  268 , and a “Custom” station  270 . Further, input mechanisms having symbols displayed thereon include input mechanisms to pause  272 , e.g. two vertical bars, or play  274 , e.g. a right pointing triangle, a radio stream. The head unit  100  displays corresponding input mechanisms  244 ,  246 ,  248 ,  250 ,  252 , and  254 . The user can control the internet radio application from the head unit  100  or the mobile device  120 . 
     The examples provided in  FIGS. 2A , and  2 B are meant to provide an example of user interfaces for controlling the mobile device  120  or applications executing thereon and how the head unit  100  can display the current user interface of the mobile device  120 . The applications and user interfaces provided are exemplary in nature and not intended to be limiting. 
     The exemplary head unit  100  includes voice recognition capabilities. Voice recognition capabilities allow a user to utter voice commands for controlling various systems within the vehicle.  FIG. 3  illustrates an exemplary head unit  100  and components of the head unit  100  for performing voice recognition and controlling other vehicle systems. 
     As described above, the head unit  100  can connect and communicate with a mobile device  120  via a communication module  306 . As previously discussed, the mobile device  120  and the head unit  100  can communicate over wired or wireless connections. A communication module  306  is configured to allow communication between the two devices  100  and  120 . Thus, in some embodiments, the communication module  306  may include a port to support the wired communication, e.g. a USB port. In other embodiments, the communication module  306  may include a transceiver to support wireless communication, e.g. WiFi or Bluetooth. Using the communication module  306  the head unit  100  receives the graphical representation of the current user interface  122  from the mobile device  120 , and the head unit  100  communicates commands to the mobile device  120 . It is appreciated that other communications between the head unit  100  and the mobile device  120  can be enabled, such as the ability to perform hands free talking. 
     As mentioned the head unit  100  includes voice recognition capabilities, which are performed in part by a voice recognition module  310 . The voice recognition module  310  can include a microphone (not shown) for receiving speech commands from a user. In some embodiments, the voice recognition module  310  parses the speech command into phonemes and determines the word or phrase uttered based on the phonemes. The voice recognition module  310  may use any now known or later developed speech recognition techniques, such as Hidden Markov Models (HMM) or dynamic time warping based speech recognition. Once a word or phrase is determined from the speech, the voice recognition module  310  can query a mobile device voice recognition database  316  or a head unit voice recognition database  318  to determine if a valid command has been entered. If a valid command is found in one of the databases  316  or  318 , the database will return a voice recognition action to the voice recognition module  310 . A voice recognition action indicates to the voice recognition module  310  what action the speaker has requested. For instance, in the case that a command is found in the head unit voice recognition database  318 , the voice recognition module  310  receives a voice recognition action which indicates a command to adjust or control a setting in one of the settings of the vehicle, i.e. adjust a particular HVAC setting or adjust the volume of the audio/visual system. In this scenario, the voice recognition module  310  can communicate the command to a head unit control module  308 , which transmits commands to the various vehicle systems. 
     When a voice command is found in the mobile device voice recognition database  316 , the voice recognition module  310  receives a voice recognition action which indicates an input mechanism selected by the user. For example, if the user interface module  302  is displaying a user interface  242  ( FIG. 2B ) corresponding to the internet radio user interface  242  ( FIG. 2B ) executing on the mobile device  120  and the user utters the word “Rock,” the voice recognition module  310  receives an voice recognition action corresponding to the “Rock” input mechanism  264  ( FIG. 2B ). The voice recognition module  310  then communicates the voice recognition action to the user interface module  302 , thereby indicating to the user interface that the user has selected a particular input mechanism. The user interface module  302  in turn transmits a signal to the mobile device  120 , via the communication module  306 , indicating that the particular input mechanism has been selected. The mobile device  120  receives the signal and executes the command corresponding to the user selection. 
     The head unit voice recognition database  318  can be preloaded with predefined voice commands. An entry in the head unit voice recognition database  318  can include a field for the actual command and a voice recognition action. In some embodiments, an entry in the head unit voice recognition database  318  can further include a field for the user interface screen or screens to which the voice command corresponds to. For example, in these embodiments, if the head unit  100  is displaying a user interface screen relating to the audio/visual system, a command for adjusting the HVAC settings may not be recognized. 
     The mobile device voice recognition database  316  is dependant on the mobile device  120  of a user, and a state thereof. Further, the head unit  100  likely has no prior knowledge of the user interface screens or the set of voice commands for controlling the mobile device  120 . Thus, the head unit  100  is configured to learn the input mechanisms of the current user interface  122  ( FIG. 1 ) of the mobile device  120 , and to populate the mobile device voice recognition database  316  based on the learned input mechanisms. 
     The head unit  100  includes an image scanning module  312  and a character recognition module  314  to determine the locations of input mechanisms on the current user interface  122  ( FIG. 1 ) and to determine a voice command to associate with located input mechanisms, respectively. The image scanning module  312  receives the graphical representation of the current user interface  122  ( FIG. 1 ) from the mobile device  120  and scans the graphical representation of the user interface  122  to locate predefined shapes which are indicative of an input mechanism. For example, the image scanning module  120  can look for borders that form predefined shapes, such as squares, rectangles, or circles. Further, in some embodiments, the head unit  100  may be configured to receive firmware updates. In these embodiments, as new popular applications are designed and made available for the mobile device  120 , the image scanning module  312  can be updated to search for particular patterns indicative of input mechanism of the popular applications. In some embodiments, the image scanning module  312  outputs graphical representations of the input mechanisms and the locations and dimensions of the input mechanisms to the character recognition module  314 . In other embodiments, the character recognition module  314  can receive the entire graphical representation of the user interface. In these embodiments, the image scanning module  312  outputs the locations of found input mechanisms to the character recognition module  314 . 
     The character recognition module  314  determines voice commands for the current user interface based on the locations of found input mechanisms. The character recognition module  314  will perform character recognition on the input mechanisms to determine the text on the input mechanism or a known symbol. In some embodiments, the character recognition module  314  performs optical character recognition on the input mechanisms. In these embodiments, the character recognition module  314  recognizes the fixed static shape of one or more characters or symbols. When more than one character is identified, the character recognition module  314  generates a string of characters corresponding to the identified characters. When the character recognition module  314  identifies a symbol, the character recognition module  314  can use a look-up table or a similar sufficient structure to determine a word or phrase to associate with the symbol. For example, if a gas pump symbol is identified, the look-up table may associate the phrase “Gas Station” with the station with the gas pump symbol. 
     In the instance that characters are detected, the character recognition module  314  will determine a word or phrase on the analyzed input mechanism and will generate a voice command entry for the mobile device voice recognition database  316 . For instance, in the user interface  242  of the head unit  100  depicted in  FIG. 2B , the character recognition module  314  will scan the input mechanism  244  and determine that from left to right, the characters R-O-C-K are spelled out in the input mechanism  244 . The character recognition module  314  will then generate an entry for the input mechanism  244 . The entry will include the voice command “ROCK,” and the location on the user interface  242  where the “Rock” input mechanism  244  is displayed. The character recognition module  314  can further include an application identifier in the entry for the input mechanism  244 , such that when the voice recognition module  310  is performing voice recognition for a voice command uttered during the execution of a particular application, an increased accuracy of the voice recognition may be achieved. 
     In the instance that a symbol is detected by the character recognition module  314 , the character recognition module  314  will look the symbol up in a look-up table or equivalent structure to determine a word or phrase associated with the symbol. For instance, in the user interface  242  of the head unit  100  depicted in  FIG. 2B , the character recognition module  314  will scan the input mechanism  254  and determine that a right-pointing triangle is depicted. The character recognition module  314  will query the look-up table and determine that a right-pointing triangle is the recognized symbol for “Play.” Further, the look-up table may have additional analogous words to associate with the symbol, such as “Resume” or “Start.” The character recognition module will then generate a database entry for the “play” input mechanism  254  using the terms retrieved from the look-up table. The database entry will include the voice command “PLAY” and the location on the user interface  242  where the “Play” input mechanism  254  is displayed. The character recognition module  314  can further include entries for the analogous words as well, if more than one word is associated with the identified symbol. The character recognition module  314  can further include an application identifier in the entry for the input mechanism  254 , such that when the voice recognition module  310  is performing voice recognition for a voice command uttered during the execution of a particular application, an increased accuracy of the voice recognition may be achieved. 
     Once the character recognition module  314  has populated the mobile device voice recognition database  316 , the voice recognition module  310  can support voice commands for the mobile device  120 . The voice recognition module  310  determines if the mobile device  120  is connected to or in communication with the head unit  100  and if so, will query the mobile device voice recognition database  316  with received voice commands. If the voice command is found in the mobile device voice recognition database  316 , the voice recognition module  310  sends a message to the user interface module  302  indicating that the user has selected a particular input mechanism corresponding to the voice command. The user interface module  302  then notifies the mobile device  120  that the particular input mechanism has been selected. It is appreciated that in other embodiments, the voice recognition module  310  can communicate the selection of a user to the mobile device  120  directly. If the command is not found, the voice recognition module  310  will query the head unit voice recognition datastore  318  to determine if the user has uttered a voice command specific to the head unit  100 . For example, the user may utter a command to disconnect the mobile device  120 . 
     It is appreciated that the exemplary components of the head unit  100  are provided for example and are not limiting. It is appreciated that other configurations and components can be implemented to achieve the functionality described herein. For instance, the head unit  100  may further include a module that creates voice recognition database entries upon receiving a voice command and a corresponding location or action. Furthermore, the list of components described are the components to achieve the described functionality. Additional components of the head unit  100  which would not affect the voice recognition capabilities of the head unit  100  are not shown. 
     Referring now to  FIG. 4  exemplary steps for populating a mobile device voice recognition database  316  are depicted. Generally, the head unit  100  will receive a graphical representation of the current user interface screen from the mobile device  120 , as shown at  410 . In some embodiments, the head unit  100  will receive the graphical representation as raw data. The head unit  100  will either have to convert the raw graphical representation into a format that is compatible with the image scanning module  312  or the image scanning module  312  is configured to process the raw graphical representation. 
     The image scanning module  312  will scan the graphical representation of the current user interface to determine the possible locations of the input mechanisms depicted in the current user interface of the mobile device  120 , as shown at step  412 . The image scanning module  312  will scan the image searching for predetermined shapes. For instance, the image scanning module  312  can scan the graphical representation of the user interface for squares, rectangles, or circles. Each instance of the predetermined shape is recorded as a potential input mechanism and analyzed by the character recognition module  314 . It is appreciated that the image scanning module  312  can describe the potential input mechanisms in any known manner. For instance, the image scanning module  312  can identify a center point, a height, and a width of the of the potential input mechanism. Further, the image scanning module  312  can record the shape of the potential input mechanism. The image scanning module  312  provides the data relating to each potential input mechanism to the character recognition module  314 . 
     The character recognition module  314  receives the locations of potential input mechanisms with respect to the graphical representation of the user interface and performs optical character recognition on the potential input mechanisms, as shown at step  414 . In an exemplary embodiment, the character recognition module  314  can be configured to recognize different characters or symbols. Assuming that the language being analyzed is written left to right, e.g. English, German, Russian, the character recognition module  314  may scan the area of the potential input mechanism from left to right. If a character or symbol is found, the character recognition module  314  will check a look-up table stored in the memory of the head unit  100  to determine if the character or symbol is a recognized character or symbol. If the character or symbol is recognized, the character recognition module  314  records the recognized character or symbol in a string or similar structure. The character recognition module  314  continues to scan the input mechanism in this manner until the potential input mechanism has been completely analyzed. 
     Furthermore, the character recognition module  314  can be programmed to recognize combinations of characters and symbols that are particular to popular applications. It is appreciated that the majority of applications available by users are designed by third party developers. These third party applications range in subject matter from internet banking applications, to Internet radio applications and social networking applications, and are selectively downloaded to the mobile device  120  by the user. It is appreciated that some of the third party applications are extremely popular. These popular applications may have input mechanisms that have symbols in lieu of words. The character recognition module  314  can be updated, e.g. via a firmware update, to recognize symbols that are specific to popular third party applications as the third party application becomes available or popular. For instance, one currently popular third party application is the Pandora® Radio Application. The Pandora® Radio application user interface includes input mechanisms having a thumb pointing up and a thumb pointing down that are displayed so that the user may indicate to the Pandora® system whether the user likes or dislikes a song. Based on the popularity of the Pandora® Radio application, the character recognition module  314  can be updated to recognize these symbols which are specific to Pandora. Thus, when the Pandora® Radio user interface is being displayed and the character recognition module  314  encounters a thumb pointing up, the character recognition module  314  will associate a word or phrase such as “like” and/or “thumbs up” with the input mechanism, such that when the user utters “like” the voice recognition module will understand that the user is selecting the input mechanism with the thumb pointing up. 
     Once optical character recognition is performed on an input mechanism, the character recognition module  314  will generate a voice command entry for the mobile device voice recognition database  316 . A voice command entry includes the voice command and the location of the input mechanism on the user interface screen. Thus, when a voice command is found in the mobile device voice recognition database  316 , the voice recognition module  310  can indicate to the mobile device  120  which input mechanism the user has selected. Additionally, in the instance where a symbol was recognized, the voice command entry will have the word or phrase that the symbol represents in place of the symbol. Further, if more than one word or phrase are associated with the symbol, e.g. “like” and “thumbs up”, separate voice command entries can be generated by the character recognition module  314 , each of which includes the same location or action of the input mechanism. The voice command entry may further include a field indicating which user interface screen and/or application that the entry belongs to. Once one or more voice command entries are generated by the character recognition module  314 , the voice command entries can be stored in the mobile device voice recognition database  316 , as shown at step  416 . 
     Referring now to  FIG. 5 , an exemplary method for populating a mobile device voice recognition database  316  is depicted. The head unit  100  is enabled to detect when the mobile device  120  requests to initiate communication therewith. Thus, the head unit  100  monitors the communication module  306  to determine if a connection with the mobile device  120  has been established, as shown at steps  510  and  512 . 
     Once a connection is established between the mobile device  120  and the head unit  100 , the head unit  100  will receive a set of predefined voice recognition commands of the mobile device  120 , if available, from the mobile device  120 , as shown at step  514 . The mobile device  120  may have a voice recognition database preloaded thereon. For instance, the voice recognition database of the mobile device  120  may include the voice command entries for initiating telephone calls to the user&#39;s contacts. Thus, the head unit  100  may receive the entries of the voice recognition database of the mobile device  120  and store them in the mobile device voice recognition database  316  or a third database specific for predefined voice commands. If the entries are stored in the mobile device voice recognition database  316 , the entries may include an actual command to communicate to the telephone, rather than a location of an input mechanism. 
     The head unit will then determine if a user interface screen needs to be scanned and analyzed. The head unit  100  will determine if the user interface of the mobile device  120  is to be displayed on the head unit touch screen  304  ( FIG. 3 ), as shown at step  516 . In some embodiments, the head unit  100 , upon detecting a connection with the mobile device  120  will ask the user if the user would like the mobile device  120  user interface to appear on the display  304  of the head unit  100 . If the user answers in the affirmative, then the mobile device  120  will transmit a graphical representation of the current user interface to the head unit  100 , as shown at step  518 . 
     It is appreciated that when the mobile device  120  transmits the current user interface to the head unit  100 , the mobile device  120  may include additional metadata indicating whether the user interface is an application user interface or a user interface of the mobile device  120 . Further, an identifier can be assigned to the particular user interface screen. Using this metadata, the head unit  100  can determine whether predefined voice recognition commands for the current user interface screen were previously received from the mobile device  120  (at step  514 ), as shown at step  520 . If voice commands were received for the current user interface screen, then the head unit  100  does not need to analyze the user interface screen, and the head unit  100  waits to receive the next user interface screen from the mobile device  120 , e.g. steps back to step  516 . 
     If, however, no predefined voice recognition commands were received, then the head unit  100  determines whether the current user interface has been previously analyzed, as shown at step  522 . Again, the head unit  100  can use the metadata pertaining to the current user interface to determine if the current If the current user interface has been previously analyzed. If the current user interface screen has been analyzed, then the head unit  100  waits to receive the next user interface screen from the mobile device  120 , e.g. steps back to step  516 . If the current user interface screen has not been analyzed, then the head unit  100  determines that the current user interface screen is to be analyzed. 
     As described in greater detail above, the image scanning module  312  will receive and scan the current user interface screen received from the mobile device  120  to determine where any potential input mechanisms are located on the user interface screen, as shown at step  524 . If one or more potential input mechanisms are located on the current user interface screen, the character recognition module  314  will perform character recognition on the potential input mechanisms to determine a voice command to associate with the potential input mechanisms, as shown at step  526 . The character recognition module  314  will create a voice command entry for each input mechanism that had characters or recognizable symbols displayed thereon. The voice command entries are then stored in the mobile device voice recognition database  316 , as shown at step  528 . It is appreciated that in some instances, the image scanning module  312  and/or the character recognition module  314  may falsely identify a location of the screen as an input mechanism. In these instances, an entry may still be generated and stored in the mobile device voice recognition database  316 . If the user utters a voice command corresponding to the falsely identified input mechanism, the voice recognition module  310  or user interface module  302  will communicate the location of the falsely identified input mechanism to the mobile device  120 , which will be disregarded by the mobile device  120 , e.g. as if the user pressed a portion of the screen that was not associated with a command. 
     It is appreciated that the method depicted in  FIG. 5  is merely illustrative in nature and is not intended to be limiting. It is appreciated that additional steps may be performed and some of the steps may be performed out of order. 
     Referring now to  FIG. 6 , a method for performing voice recognition is depicted. Typically, when a user wants to use the voice recognition feature of a vehicle, the user will initiate voice recognition by pressing a button located in the vehicle, e.g. on the steering wheel or counsel of the vehicle. Thus to initiate voice recognition, the user will press a voice recognition button and utter a command, as shown at step  610 . The voice recognition module  310  will then determine which database to use for voice recognition—that is, the voice recognition will choose between the mobile device voice recognition database  316  or the head unit voice recognition database  318 . To determine which database to use, the voice recognition module  310  will determine whether the user interface module  302  is displaying the current user interface of the mobile device  120 , as shown at step  612 . If the user interface module  302  is displaying the current user interface of the mobile device  120 , the voice recognition module  310  will use the mobile device voice recognition database  316  to perform voice recognition, as shown at step  614 . If the user interface module  302  is not displaying the current user interface of the mobile device  120 , the voice recognition module  310  will use the head unit voice recognition database  318  to perform voice recognition, as shown at step  620 . Similarly, if the mobile device voice recognition database  316  is selected but the uttered command is not found in the mobile device voice recognition database  316 , then the voice recognition module  310  will use the head unit voice recognition database  318 , as shown at step  620 . When the mobile device voice recognition database  316  is selected and the uttered command is found in the mobile device voice recognition database  316  at step  616 , the voice recognition module  310  will communicate the input mechanism that was selected by the user, as shown at step  618 . 
     When the head unit voice recognition database  318  is used, the voice recognition module  310  will check the head unit voice recognition database  318  for the uttered voice command. If the command is found in the head unit voice recognition database  318 , then the command will be executed, as shown at step  624 . If the command is not found in the head unit voice recognition database  318 , then the command is deemed not found, and the user may be notified that an invalid command was uttered. 
     Referring now to  FIG. 7 , an alternative method for performing voice recognition is illustrated. Initially, the user will initiate the voice recognition functionality by performing an affirmative action such as pressing a button for voice recognition. The user will then utter a voice command. The voice recognition module  310  receives the voice command of the user, as shown at step  710 . As discussed above, the voice recognition module  310  may use techniques such as Hidden Markov Models to determine the word or phrase that was uttered by the user. Upon receiving a voice command, the voice recognition module  310  will determine which voice recognition database to search first. If the mobile device  120  is connected to or in communication with the head unit  100  (step  712 ) and the head unit  100  is displaying the current user interface screen of the mobile device  120  (step  714 ), then the voice recognition module  310  will use the mobile device voice recognition database  316 , as shown at step  716 . If, however, the mobile device  120  is not connected to or in communication with the head unit  100 , or if the head unit  100  is not displaying the current user interface of the mobile device  120 , then the voice recognition module  310  will use the head unit voice recognition database  318  to initially perform voice recognition, as shown at step  726 . 
     In the instance that the voice recognition module  310  utilizes the mobile device voice recognition database  316 , the voice recognition module  310  will query the mobile device voice recognition database  316  with the word or phrase determined at step  710 . If the voice recognition module  310  finds a command in the mobile device voice recognition database  316  that matches the uttered command, then the voice recognition module  310  can communicate to the mobile device  120  that the user has selected a user input mechanism at a particular location of the current user interface screen, as shown at step  720 . As described earlier, entries in the mobile device voice recognition database  316  include the voice command and the location of the input mechanism on the user interface screen. It is appreciated that in some embodiments, the voice recognition module  310  will communicate to the user interface module  302  that the user has selected a particular input mechanism, and the user interface module  302  communicates the location of the selected input mechanism to the mobile device  120 . 
     If the voice command is not found in the mobile device voice recognition database  316 , then the voice recognition module  310  will determine whether the voice command was searched for in the head unit voice recognition database  318 , as shown at step  722 . If the head unit voice recognition database  318  has been searched, then the voice recognition module  310  will determine that the uttered voice command is not found, as shown at step  724 . In this scenario, the head unit  100  may provide the user with some feedback, such as an audible message indicating that the command was not found. 
     When the voice recognition module  310  determines that the head unit voice recognition database  318  has not been searched, then the voice recognition module  310  will search the head unit voice recognition database  318  for the uttered voice command. The voice recognition module  310  will query the head unit voice recognition database  318  with the uttered voice command determined at step  710 . If a match is found in the head unit voice recognition database  318 , the voice recognition module  310  will receive a command or action corresponding to the uttered voice command from the head unit voice recognition database  318 . The voice recognition module  310  will communicate the command to the head unit control module  308 , which will execute the command, as shown at step  730 . 
     If the uttered voice command is not found in the head unit voice recognition database  318 , the voice recognition module  310  will determine if the mobile device  120  is connected to or in communication with the head unit  100 . If the mobile device  120  is not connected to or in communication with the head unit  100 , then the voice recognition module  310  determines that the uttered voice command is not found, as shown at step  736 . If, however, the mobile device  120  is connected to or in communication with the head unit  100 , then the voice recognition module  310  will determine whether the mobile device voice recognition database  316  has already been searched for the voice command, as shown at step  734 . If the mobile device voice recognition database  316  has already been searched, then the voice recognition module  310  determines that the uttered voice command is not found, as shown at step  736 . As mentioned above, when the voice recognition module  310  determines that an uttered voice command cannot be found, an audible message may be played to the user indicating that the command is not found. If the mobile device voice recognition database  316  has not been searched, then the voice recognition module  310  searches the mobile device voice recognition database  316  for the uttered voice command, as shown at step  716 . 
     The foregoing description is merely illustrative in nature and is in no way intended to limit the disclosure, its application, or uses. As used herein, the phrase at least one of A, B, and C should be construed to mean a logical (A or B or C), using a non-exclusive logical or. It should be understood that steps within a method may be executed in different order without altering the principles of the present disclosure. 
     As used herein, the term module may refer to, be part of, or include an Application Specific Integrated Circuit (ASIC); an electronic circuit; a combinational logic circuit; a field programmable gate array (FPGA); a processor (shared, dedicated, or group) that executes code; other suitable components that provide the described functionality; or a combination of some or all of the above, such as in a system-on-chip. The term module may include memory (shared, dedicated, or group) that stores code executed by the processor. 
     The term code, as used above, may include software, firmware, and/or microcode, and may refer to programs, routines, functions, classes, and/or objects. The term shared, as used above, means that some or all code from multiple modules may be executed using a single (shared) processor. In addition, some or all code from multiple modules may be stored by a single (shared) memory. The term group, as used above, means that some or all code from a single module may be executed using a group of processors. In addition, some or all code from a single module may be stored using a group of memories. 
     The apparatuses and methods described herein may be implemented by one or more computer programs executed by one or more processors. The computer programs include processor-executable instructions that are stored on a non-transitory tangible computer readable medium. The computer programs may also include stored data. Non-limiting examples of the non-transitory tangible computer readable medium are nonvolatile memory, magnetic storage, and optical storage. 
     The broad teachings of the disclosure can be implemented in a variety of forms. Therefore, while this disclosure includes particular examples, the true scope of the disclosure should not be so limited since other modifications will become apparent to the skilled practitioner upon a study of the drawings, the specification, and the following claims.