PATENT DOCUMENT

Publication Number: US-9483461-B2
Application Number: US-201213413449-A
Country: US
Kind Code: B2

Title: Handling speech synthesis of content for multiple languages

Abstract:
Techniques that enable a user to select, from among multiple languages, a language to be used for performing text-to-speech conversion. In some embodiments, upon determining that multiple languages may be used to perform text-to-speech conversion for a portion of text, the multiple languages may be displayed to the user. The user may then select a particular language to be used from the multiple languages. The portion of text may then be converted to speech in the user-selected language.

Claims:
What is claimed is: 
     
       1. A method comprising:
 at an electronic device with a display, one or more input devices, and one or more audio output devices:
 displaying, on the display, a portion of displayed text that includes a plurality of words; 
 receiving a request to convert the plurality of words in the portion of the displayed text to speech; 
 determining whether a language ambiguity exists based on an analysis of the plurality of words of the portion of the displayed text, wherein the language ambiguity indicates that a plurality of candidate languages are applicable for converting the plurality of words in the portion of displayed text to speech; 
 in accordance with the determination that the language ambiguity exists,
 concurrently displaying, on the display, the plurality of candidate languages for converting the plurality of words in the portion of the displayed text to speech, wherein the plurality of candidate languages was selected based on the analysis of the plurality of words in the portion of the displayed text; 
 while concurrently displaying the plurality of candidate languages, receiving, with the one or more input devices, input indicative of selection of a first candidate language from the concurrently displayed plurality of candidate languages; and 
 in response to receiving the input indicative of selection of the first candidate language, outputting, with the one or more audio output devices, audio corresponding to the plurality of words in the portion of the displayed text, wherein the audio comprises a conversion of the plurality of words in the portion of the displayed text to speech in the first candidate language. 
 
 
 
     
     
       2. The method of  claim 1  wherein the conversion of the plurality of words in the portion of the displayed text to speech in the first candidate language comprises using a language synthesizer corresponding to the first candidate language to generate speech for the plurality of words in the portion of the displayed text. 
     
     
       3. The method of  claim 1  wherein the portion of the displayed text is the entire displayed text or a subset of the displayed text. 
     
     
       4. The method of  claim 1  wherein the conversion of the plurality of words in the portion of the displayed text to speech comprises:
 converting a first character in the plurality of words in the portion of the displayed text to speech using a first language synthesizer corresponding to the first candidate language; and 
 converting a second character following the first character in the plurality of words in the portion of the displayed text to speech using a second language synthesizer different from the first language synthesizer, the second language synthesizer corresponding to a second candidate language. 
 
     
     
       5. The method of  claim 1  wherein the conversion of the plurality of words in the portion of the displayed text to speech comprises:
 reading a first character in the plurality of words in the portion of the displayed text; 
 determining a first language to be used for converting the first character to speech; 
 associating the first language with the first character; 
 reading a second character in the plurality of words in the portion of the displayed text, the second character following the first character; 
 determining a second language to be used for converting the second character to speech, wherein the second language is different from the first language; and 
 associating the second language with the second character. 
 
     
     
       6. The method of  claim 1  wherein determining whether a language ambiguity exists further comprises performing at least one of:
 determining a language for converting the plurality of words in the portion of the displayed text to speech based upon one or more loaded keyboards; 
 determining a language for converting the plurality of words in the portion of the displayed text to speech based upon one or more tags associated with the displayed text; 
 determining a language for converting the plurality of words in the portion of the displayed text to speech based upon data provided by an application associated with the displayed text; or 
 determining a language for converting the plurality of words in the portion of the displayed text to speech based upon encoding information associated with one or more characters in the displayed text. 
 
     
     
       7. The method of  claim 1  wherein determining whether a language ambiguity exists further comprises performing at least one of:
 determining a language for converting the plurality of words in the portion of the displayed text to speech based upon one or more user preferences; 
 determining a language for converting the plurality of words in the portion of the displayed text to speech based upon a language selected for a prior text-to-speech conversion; 
 determining a language for converting the plurality of words in the portion of the displayed text to speech based upon a source of the displayed text; 
 determining a language for converting the plurality of words in the portion of the displayed text to speech based country code top-level domain information associated with the displayed text; or 
 determining a language for converting the plurality of words in the portion of the displayed text to speech based upon global positioning system (GPS) information. 
 
     
     
       8. The method of  claim 1  wherein determining whether a language ambiguity exists comprises:
 determining a first list of languages for converting the plurality of words in the portion of the displayed text to speech; and 
 determining a second list of languages from the first list of languages by filtering out at least one language from the first list of languages. 
 
     
     
       9. A non-transitory computer-readable storage medium storing a plurality of instructions for controlling a processor, the plurality of instructions comprising:
 instructions that cause the processor to display, on a display, a portion of displayed text that includes a plurality of words; 
 instructions that cause the processor to receive a request to convert the plurality of words in the portion of the displayed text to speech; 
 instructions that cause the processor to determine whether a language ambiguity exists based on an analysis of the plurality of words of the portion of the displayed text, wherein the language ambiguity indicates that a plurality of candidate languages are applicable for converting the plurality of words in the portion of the displayed text to speech; 
 instructions that cause the processor to, in accordance with the determination that the language ambiguity exists, 
 concurrently display, on the display, the plurality of candidate languages for converting the plurality of words in the portion of the displayed text to speech, wherein the plurality of candidate languages was selected based on the analysis of the plurality of words in the portion of the displayed text;
 while concurrently displaying the plurality of candidate languages, receive, with one or more input devices, input indicative of selection of a first candidate language from the concurrently displayed plurality of candidate languages, and 
 in response to receiving the input indicative of selection of the first candidate language, output, with one or more audio output devices, audio corresponding to the plurality of words in the portion of the displayed text, wherein the audio comprises a conversion of the plurality of words in the portion of the displayed text to speech in the first candidate language. 
 
 
     
     
       10. The non-transitory computer-readable storage medium of  claim 9  further comprising instructions that cause the processor to use a language synthesizer corresponding to the first candidate language to generate speech for the plurality of words in the portion of displayed text. 
     
     
       11. The non-transitory computer-readable storage medium of  claim 9  wherein the portion of the displayed text is the entire displayed text or a subset of the displayed text. 
     
     
       12. The non-transitory computer-readable storage medium of  claim 9  further comprising:
 instructions that cause the processor to read a first character in the plurality of words in the portion of the displayed text; 
 instructions that cause the processor to determine a first language to be used for converting the first character to speech; 
 instructions that cause the processor to associate the first language with the first character; 
 instructions that cause the processor to read a second character in the plurality of words in the portion of the displayed text, the second character following the first character; 
 instructions that cause the processor to determine a second language to be used for converting the second character to speech, wherein the second language is different from the first language; 
 instructions that cause the processor to associate the second language with the second character; 
 instructions that cause the processor to convert the first character to speech using a language synthesizer corresponding to the first language associated with the first character; and 
 instructions that cause the processor to convert the second character to speech using a language synthesizer corresponding to the second language associated with the second character. 
 
     
     
       13. The non-transitory computer-readable storage medium of  claim 9 , further comprising instructions that cause the processor to determine that the plurality of words corresponds to the plurality of candidate languages, wherein the instructions cause the processor to perform at least one of:
 determine a language for converting the plurality of words in the portion of the displayed text to speech based upon one or more loaded keyboards; 
 determine a language for converting the plurality of words in the portion of the displayed text to speech based upon one or more tags associated with the displayed text; 
 determine a language for converting the plurality of words in the portion of the displayed text to speech based upon character encoding information associated with one or more characters in the displayed text; 
 determine a language for converting the plurality of words in the portion of the displayed text to speech based upon one or more user preferences; 
 determine a language for converting the plurality of words in the portion of the displayed text to speech based upon a language selected for a prior text-to-speech conversion; 
 determine a language for converting the plurality of words in the portion of the displayed text to speech based upon a source of the displayed text; 
 determine a language for converting the plurality of words in the portion of the displayed text to speech based country code top-level domain information associated with the displayed text; or 
 determine a language for converting the plurality of words in the portion of the displayed text to speech based upon global positioning system (GPS) information. 
 
     
     
       14. The non-transitory computer-readable storage medium of  claim 9 , further comprising instructions that cause the processor to determine that the plurality of words corresponds to the plurality of candidate languages for converting the plurality of words in the portion of the displayed text to speech, wherein the instructions comprise:
 instructions that cause the processor to determine a first list of languages for converting the plurality of words in the portion of the displayed text to speech; and 
 instructions that cause the processor to determine a second list of languages from the first list of languages by filtering out at least one language from the first list of languages. 
 
     
     
       15. A system comprising:
 an electronic device with a display, one or more input devices, and one or more audio output devices; 
 a memory configured to store text; and 
 one or more processors coupled to the memory, the one or more processors configured to:
 display, on the display, a portion of displayed text that includes a plurality of words; 
 receive a request to convert the plurality of words in the portion of the displayed text to speech; 
 determine whether a language ambiguity exists based on an analysis of the plurality of words of the portion of the displayed text, wherein the language ambiguity indicates that a plurality of candidate languages are applicable for converting the plurality of words in the portion of displayed text to speech; 
 in accordance with the determination that the language ambiguity exists, 
 cause to be concurrently displayed, on the display, the plurality of candidate languages for converting the plurality of words in the portion of the displayed text to speech, wherein the plurality of candidate languages was selected based on the analysis of the plurality of words in the portion of the displayed text; and 
 while concurrently displaying the plurality of candidate languages, receiving, with one or more input devices, input indicative of selection of a first candidate language from the concurrently displayed plurality of candidate languages, 
 in response to receiving the input indicative of selection of the first candidate language, output, with one or more audio output devices, audio corresponding to the plurality of words in the portion of the displayed text, wherein the audio comprises a conversion of the plurality of words in the portion of the displayed text to speech in the first candidate language. 
 
 
     
     
       16. The system of  claim 15 , wherein the one or more processors are configured to use a language synthesizer corresponding to the first candidate language to generate speech for the plurality of words in the portion of the displayed text. 
     
     
       17. The system of  claim 15  wherein the portion of the displayed text is the entire displayed text or a subset of the displayed text. 
     
     
       18. The system of  claim 15  wherein the one or more processors are configured to:
 read a first character in the plurality of words in the portion of the displayed text; 
 determine a first language to be used for converting the first character to speech; 
 associate the first language with the first character; 
 read a second character in the plurality of words in the portion of the displayed text, the second character following the first character; 
 determine a second language to be used for converting the second character to speech, wherein the second language is different from the first language; 
 associate the second language with the second character; 
 convert the first character to speech using a language synthesizer corresponding to the first language associated with the first character; and 
 convert the second character to speech using a language synthesizer corresponding to the second language associated with the second character. 
 
     
     
       19. The system of  claim 15  wherein the one or more processors are further configured to determine that the plurality of words corresponds to the plurality of candidate languages for converting the plurality of words in the portion of the displayed text to speech, wherein the determination comprises the one or more processors being configured to perform at least one of:
 determine a language for converting the plurality of words in the portion of the displayed text to speech based upon one or more loaded keyboards; 
 determine a language for converting the plurality of words in the portion of the displayed text to speech based upon one or more tags associated with the displayed text; 
 determine a language for converting the plurality of words in the portion of the displayed text to speech based upon character encoding information associated with one or more characters in the displayed text; 
 determine a language for converting the plurality of words in the portion of the displayed text to speech based upon one or more user preferences; 
 determine a language for converting the plurality of words in the portion of the displayed text to speech based upon a language selected for a prior text-to-speech conversion; 
 determine a language for converting the plurality of words in the portion of the displayed text to speech based upon a source of the displayed text; 
 determine a language for converting the plurality of words in the portion of the displayed text to speech based country code top-level domain information associated with the displayed text; or 
 determine a language for converting the plurality of words in the portion of the displayed text to speech based upon global positioning system (GPS) information. 
 
     
     
       20. The system of  claim 15  wherein:
 the displayed text is selected from a webpage; and 
 the one or more processors are further configured to determine that the plurality of words corresponds to the plurality of candidate languages based upon a domain associated with a web site hosting the webpage. 
 
     
     
       21. The method of  claim 1 , further comprising:
 receiving, with the one or more input devices, input indicative of a selection of the portion of the displayed text; and 
 concurrently displaying, on the display, the plurality of candidate languages based on the selection of the portion of the displayed text. 
 
     
     
       22. The method of  claim 21 , wherein the selected portion of the displayed text is a first portion of the displayed text, wherein the displayed plurality of candidate languages is a first plurality of candidate languages, the method further comprising:
 while displaying the first plurality of candidate languages, receiving, with the one or more input devices, input indicative of a selection of a second portion of the displayed text, the second portion of the displayed text being different from the first portion of the displayed text; 
 in response to the input indicative of the selection of the second portion of the displayed text:
 ceasing to display the first plurality of candidate languages; and 
 displaying, on the display, a second plurality of candidate languages for converting the second portion of the displayed text to speech, the second plurality of candidate languages different from the first plurality of candidate languages. 
 
 
     
     
       23. The method of  claim 1 , wherein concurrently displaying the plurality of candidate languages further comprises:
 determining whether the portion of the displayed text satisfies a first set of criteria and a second set of criteria; 
 in accordance with a determination that the portion of the displayed text satisfies the first set of criteria, displaying a first plurality of candidate languages concurrently with the text on the display; and 
 in accordance with a determination that the portion of the displayed text satisfies the second set of criteria, displaying a second plurality of candidate languages concurrently with the text on the display,
 wherein the second plurality of candidate languages is different from the first plurality of candidate languages. 
 
 
     
     
       24. The non-transitory computer-readable storage medium of  claim 9 , further comprising instructions that cause the processor to:
 receive, with the one or more input devices, input indicative of a selection of the portion of the displayed text; and 
 concurrently display, on the display, the selection of the portion of the displayed text. 
 
     
     
       25. The non-transitory computer-readable storage medium of  claim 24 , wherein the selected portion of the displayed text is a first portion of the displayed text, wherein the displayed plurality of candidate languages is a first plurality of candidate languages, the non-transitory computer-readable storage medium further comprising instructions that cause the processor to:
 while displaying the first plurality of candidate languages, receive, with the one or more input devices, input indicative of a selection of a second portion of the displayed text, the second portion of the displayed text different being from the first portion of the displayed text; 
 in response to the input indicative of the selection of the second portion of the displayed text:
 cease to display the first plurality of candidate languages; and 
 display, on the display, a second plurality of candidate languages for converting the second portion of the displayed text to speech, the second plurality of candidate languages different from the first plurality of candidate languages. 
 
 
     
     
       26. The non-transitory computer-readable storage medium of  claim 9 , wherein the instructions that cause the processor to concurrently display the plurality of candidate languages further comprise instructions that cause the processor to:
 determine whether the portion of the displayed text satisfies a first set of criteria and a second set of criteria; 
 in accordance with a determination that the portion of the displayed text satisfies the first set of criteria, display a first plurality of candidate languages concurrently with the text on the display; and 
 in accordance with a determination that the portion of the displayed text satisfies the second set of criteria, display a second plurality of candidate languages concurrently with the text on the display,
 wherein the second plurality of candidate languages is different from the first plurality of candidate languages. 
 
 
     
     
       27. The system of  claim 15 , wherein the one or more processors are further configured to:
 receive, with the one or more input devices, input indicative of a selection of the portion of the displayed text, and 
 concurrently display, on the display, the selection of the portion of the displayed text. 
 
     
     
       28. The system of  claim 27 , wherein the selected portion of the displayed text is a first portion of the displayed text, wherein the displayed plurality of candidate languages is a first plurality of candidate languages, and wherein the one or more processors are further configured to:
 while displaying the first plurality of candidate languages, receive, with the one or more input devices, input indicative of a selection of a second portion of the displayed text, the second portion of the displayed text being different from the first portion of the displayed text; 
 in response to the input indicative of the selection of the second portion of the displayed text: 
 cease to display the first plurality of candidate languages; and 
 display, on the display, a second plurality of candidate languages for converting the second portion of the displayed text to speech, the second plurality of candidate languages different from the first plurality of candidate languages. 
 
     
     
       29. The system of  claim 15 , wherein the one or more processors are configured to concurrently display the plurality of candidate languages by:
 determining whether the portion of the displayed text satisfies a first set of criteria and a second set of criteria; 
 in accordance with a determination that the portion of the displayed text satisfies the first set of criteria, displaying a first plurality of candidate languages concurrently with the text on the display; and 
 in accordance with a determination that the portion of the displayed text satisfies the second set of criteria, displaying a second plurality of candidate languages concurrently with the text on the display,
 wherein the second plurality of candidate languages is different from the first plurality of candidate languages. 
 
 
     
     
       30. The method of  claim 1 , further comprising:
 in accordance with a determination, by the processing device, that the plurality of words corresponds to a single respective candidate language for converting the portion of the displayed text to speech:
 in response to the request to convert the plurality of words in the portion of the displayed text to speech, outputting, with the one or more audio output devices, audio corresponding to the plurality of words in the portion of the displayed text, wherein the audio comprises a conversion of the portion of the displayed text to speech in the single respective candidate language. 
 
 
     
     
       31. The non-transitory computer-readable storage medium of  claim 9 , further comprising instructions that cause the processor to:
 in accordance with a determination that the plurality of words corresponds to a single respective candidate language for converting the portion of the displayed text to speech:
 in response to the request to convert the plurality of words in the portion of the displayed text to speech, output, with the one or more audio output devices, audio corresponding to the plurality of words in the portion of the displayed text, wherein the audio comprises a conversion of the portion of the displayed text to speech in the single respective candidate language.

Description:
BACKGROUND 
     The disclosed embodiments relate generally to text-to-speech synthesis, and more particularly to techniques that enable a user to select, from among multiple languages, a language to be used for performing text-to-speech synthesis or conversion. 
     The process of converting language text to speech is typically referred to as text-to-speech synthesis or text-to-speech conversion. Due to the diversity of languages spoken by humans, various languages are available for performing text-to-speech conversion. A system that can perform text-to-speech conversion in multiple languages typically provides multiple language synthesizers, each language synthesizer configured to convert the text to speech in a particular language. For example, an English language synthesizer may be provided for converting text to English speech, a French language synthesizer may be provided for converting text to French speech, a Japanese language synthesizer may be provided for converting text to Japanese speech, and so on. Depending upon the particular language to be used for the speech, a language synthesizer corresponding to that particular language is used for performing the text-to-speech conversion. 
     For languages that share characters, such as English, French, and German, the same piece of text may be converted to speech using any of the synthesizers corresponding to these languages. However, since a synthesizer for a particular language uses pronunciation rules and sounds that are specific to that language, the speech output for the same piece of text will sound differently for different synthesizers. For example, the speech resulting from text-to-speech conversion using an English synthesizer for a piece of text may sound very different from speech resulting from using a French synthesizer for the same piece of text. 
     In conventional systems, a default language synthesizer is generally automatically selected for performing text-to-speech conversion as long as that default synthesizer can output speech for the text being converted. This may however produce speech results that are undesirable to the user. For example, if the text to be converted is in the French language and an English language synthesizer is the default synthesizer, then the output could be French spoken with a bad English accent. 
     BRIEF SUMMARY 
     Certain embodiments are described that enable a user to select, from among multiple languages, a language to be used for performing text-to-speech conversion. 
     In some embodiments, multiple languages may be displayed to the user. The user may then select a particular language to be used from the multiple languages. The user-selected language may then be used to generate speech for text to be converted to speech. 
     In some embodiments, upon determining that multiple languages are eligible to perform text-to-speech conversion for a portion of text, the multiple languages may be displayed to the user. The user may then select a particular language to be used from the multiple languages. When speech is generated for the text, the portion of text may be converted to speech in the user-selected language. 
     In some embodiments, the text to be converted to speech is analyzed using one or more analysis criteria. Based upon the analysis, one or more languages may be determined as applicable for converting the text to speech. In some instances, the analysis may yield multiple languages as being applicable for the same portion of text. In this scenario, the multiple languages may be output to the user. The user may then select a particular language from the multiple languages. The portion of text is then converted to speech in the user-selected language using a language synthesizer corresponding to the user-selected language. 
     The portion of text for which multiple languages may be identified as possible candidates may be the entire text that is to be converted to speech or a subset of the text. A subset of the text may be, for example, without limitations, one or more characters within the text, one or more words within the text, one or more sentences within the text, and the like. 
     In some embodiments, analysis of the text to identify the one or more languages to be used to convert the text to speech may be based upon various criteria. Examples of criteria can include, without limitation, one or more loaded keyboards, one or more tags associated with the text, one or more languages identified by a language analysis tool upon analysis of the text to be converted to speech, application-specific data (e.g., domain information for a website hosting a webpage, sender&#39;s phone number for a messaging application), character encoding information (e.g., Unicode information) associated with one or more characters in the text, one or more user preferences (e.g., language or locale preferences), user history information (e.g., previous user language selections for text-to-speech conversion), a source of the text, country code top-level domain information associated with the text, global positioning system (GPS) information (e.g., identifying the location of the user or user device), and the like. 
     In some embodiments, for text including multiple languages, the language synthesizer used for performing text-to-speech conversion is automatically switched for the different languages. In some embodiments, the text may be processed character-by-character and a language determined to be used for converting the character to speech. Ranges of characters may be identified in the text to be converted to speech, each range associated with a language. When the text is converted to speech, each range portion is converted to speech using the language synthesizer corresponding to the language associated with that range. This enables language synthesizers to be automatically switched during text-to-speech conversion to facilitate conversion of the text to speech. 
     In some embodiments, the text-to-speech conversion may be provided as a web-based or cloud service or under a Software as a Service (SaaS) model. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  depicts a simplified diagram of a system that may incorporate an embodiment; 
         FIG. 2  depicts a simplified flowchart depicting a method for performing text-to-speech conversion according to some embodiments; 
         FIG. 3  depicts a simplified flowchart depicting a method for determining a set of languages for performing text-to-speech conversion according to some embodiments; 
         FIG. 4  depicts a simplified flowchart depicting a method for generating speech for text according to some embodiments; 
         FIGS. 5-11  depict examples including user interfaces that may be displayed to a user with respect to text-to-speech conversion according to some embodiments; 
         FIG. 12  is a simplified block diagram of a computer system that may incorporate components of a system for performing text-to-speech conversion according to some embodiments; and 
         FIG. 13  depicts a simplified diagram of a distributed system for performing text-to-speech conversion according to some embodiments. 
     
    
    
     DETAILED DESCRIPTION 
     In the following description, for the purposes of explanation, specific details are set forth in order to provide a thorough understanding of embodiments of the invention. However, it will be apparent that various embodiments may be practiced without these specific details. 
     Certain embodiments are described that enable a user to select, from among multiple languages, a language to be used for performing text-to-speech conversion. In some embodiments, multiple languages may be displayed to the user. The user may then select a particular language to be used from the multiple languages. A piece of text may then be converted to speech in the user-selected language. 
     In some embodiments, upon determining that multiple languages are eligible to perform text-to-speech conversion for a portion of text to be converted to speech, the multiple languages may be output to the user. The user may then select a particular language to be used from the multiple languages. The portion of text may then be converted to speech in the user-selected language using a synthesizer corresponding to the user-selected language. The portion of text may be the entire text that is to be converted to speech or a subset thereof such as one or more characters within the text, one or more words within the text, one or more sentences within the text, and the like. 
       FIG. 1  depicts a simplified diagram of a system  100  that may incorporate an embodiment. In the embodiment depicted in  FIG. 1 , system  100  includes multiple subsystems including a text-to-speech subsystem  102 , a heuristics subsystem  104 , an audio output subsystem  106 , an input/output (I/O) subsystem  108 , and a memory subsystem  122 . One or more communication paths may be provided enabling one or more of the subsystems to communicate with and exchange data with one another. The various subsystems depicted in  FIG. 1  may be implemented in software, in hardware, or combinations thereof. In some embodiments, the software may be stored on a transitory or non-transitory computer readable medium and executed by one or more processors. 
     It should be appreciated that system  100  depicted in  FIG. 1  may have other components than those depicted in  FIG. 1 . Further, the embodiment shown in  FIG. 1  is only one example of a system that may incorporate an embodiment of the invention. In some other embodiments, system  100  may have more or fewer components than shown in  FIG. 1 , may combine two or more components, or may have a different configuration or arrangement of components. In some embodiments, system  100  may be part of a portable communications device, such as a mobile telephone, a smart phone, or a multifunction device. Exemplary embodiments of portable devices include, without limitation, the iPhone®, iPod Touch®, and iPad® devices from Apple Inc. of Cupertino, Calif. In some other embodiments, system  100  may also be incorporated in other devices such as desktop computers, kiosks, and the like. 
     I/O subsystem  108  provides an interface that allows a user to interact with system  100 . I/O subsystem  100  may enable system  100  to output information to the user. For example, I/O subsystem  108  may include a display device such as a monitor or a screen. I/O subsystem  108  may also enable the user to provide inputs to system  100 . I/O subsystem  108  may include one or more input devices that allow a user to provide inputs to system  100 . The input devices may include, without limitation, a mouse, a pointer, a keyboard, or other input device. In some embodiments, I/O subsystem  108  may include a touch-sensitive interface (also sometimes referred to as a touch screen) that can both display information to a user and also receive inputs from the user. 
     Memory subsystem  122  may be configured to store data and instructions used by some embodiments of the invention. In some embodiments, memory  122  may include volatile memory such as random access memory or RAM (sometimes referred to as system memory). Instructions or code or programs that are executed by one or more processors of system  100  may be stored in the RAM. Memory  122  may also include non-volatile memory such as one or more storage disks or devices, flash memory, or other non-volatile memory devices. 
     In some embodiments, heuristics subsystem  104  and text-to-speech subsystem  102  working in cooperation are responsible for performing processing related to text-to-speech conversion. Heuristics subsystem  104  is configured to receive text  128  that is to be converted to speech. Text  128  may be received via I/O subsystem  108  or from other sources. For example, a user of system  100  may select text using I/O subsystem  108  and then initiate the text-to-speech conversion process for the selected text. 
     In some embodiments, heuristics subsystem  104  analyzes text  128  to determine one or more languages that are applicable for converting text  128  to speech. Heuristics subsystem  104  may determine the one or more languages from a set of languages that are available to system  100  for performing text-to-speech conversion. The set of languages that are available for use by system  100  may depend upon one or more language synthesizers  112  that are available, each synthesizer being configured for a particular language. In one embodiment, information identifying the various language synthesizers  112  and their corresponding languages may be provided to heuristics subsystem  104  and may be used by heuristics subsystem  104  to determine the one or more languages for converting a particular piece of text to speech. 
     Heuristics subsystem  104  may use various pieces of information  110  to determine the one or more languages that are applicable for text  128 . In some embodiments, heuristics-based analysis may be performed based upon various criteria to identify the one or more languages for converting text  128  to speech. Further details related to various criteria that may be used by heuristics subsystem  104  and the manner in which some of criteria may be used are provided below. 
     In addition to determining the one or more languages that are applicable for converting text  128  to speech, in some embodiments, heuristics subsystem  104  is also configured to determine if there is any language ambiguity. For purposes of this disclosure, language ambiguity exists if it is determined that a portion of text  128  may be converted to speech using multiple languages available for text-to-speech conversion. Since each language corresponds to a particular language synthesizer, language ambiguity exists when it is determined that multiple language synthesizers are available for converting the same portion of text to speech. The portion of text  128  that may cause a language ambiguity situation may be the entire text  128  or a subset of text  128  such as one or more characters within text  128 , one or more words within text  128 , one or more sentences within text  128 , and the like. 
     For example, in one embodiment, heuristics subsystem  104  may determine, based upon analysis performed by heuristics subsystem  104 , that for a set of words within text  128 , either an English language synthesizer or a French language synthesizer may be used to convert the words to speech. Since more than one language is a candidate for converting the same portion of text to speech, heuristics subsystem  104  may determine that a language ambiguity exists for these set of words. 
     As another example, heuristics subsystem  104  may detect the occurrence of a set of Chinese language characters within text  128  to be converted to speech. Upon processing this set of characters, heuristics subsystem  104  may determine that there are four separate language synthesizers available that are capable of reading the Chinese characters and converting them to speech, namely, a Mandarin language synthesizer, a Cantonese language synthesizer, a Shanghainese language synthesizer, and a Taiwanese language synthesizer. In other words, heuristics subsystem  104  determines that there are four languages available to convert the set of Chinese characters to speech. In this case again, heuristics subsystem  104  may determine that a language ambiguity exists for the set of Chinese characters. 
     As yet another example, heuristics subsystem  104  may determine, based upon heuristics analysis performed by heuristics subsystem  104 , that for the entire text  128 , there are two separate language synthesizers available that are capable of reading and converting text  128  to speech, namely, a France French language synthesizer and a Canadian French language synthesizer. In other words, heuristics subsystem  104  determines that there are two languages available to convert text  128  to speech. In this case again, heuristics subsystem  104  may determine that a language ambiguity exists for the entire text. 
     Further, a particular piece of text may comprise multiple portions, each giving rise to a language ambiguity. Accordingly, is some instances, text  128  to be converted to speech may be determined to have multiple language ambiguities. For example, the text to be converted to speech may include a first portion that gives rise to a language ambiguity between English and French. The same text may include a second portion, different from the first portion, which gives rise to a language ambiguity between Mandarin, Cantonese, Shanghainese, and Taiwanese. This represents a first language ambiguity between English and French and a second language ambiguity between Mandarin, Cantonese, Shanghainese, and Taiwanese. Accordingly, zero or more language ambiguities may exist in the text to be converted to speech. 
     Upon performing language ambiguity processing, heuristics subsystem  104  may then cause information to be displayed to the user based upon whether a language ambiguity was detected to exist or not. In the case where heuristics subsystem  104  does not detect any language ambiguity situation, heuristics subsystem  104  may cause information to be displayed to the user, via I/O subsystem  108 , which allows the user to initiate text-to-speech conversion for text  128 . For example, in one embodiment, a “Speak” option may be displayed to the user. When heuristics subsystem  104  receives an indication that the user has selected the “Speak” option, a signal may be sent to text-to-speech subsystem  102  to initiate the text-to-speech conversion. Heuristics subsystem  104  may also send information to text-to-speech subsystem  102  indicating the one or more languages that heuristics subsystem  104  has determined to be used for the text-to-speech conversion. Text-to-speech subsystem  102  may then perform the text-to-speech conversion for text  128  using language synthesizers corresponding to the one or more languages identified by heuristics subsystem  104 . 
     In the case where a language ambiguity is detected, heuristics subsystem  104  may cause information to be displayed to the user to resolve the ambiguity. In some embodiments, heuristics subsystem  104  may cause a “Speak . . . ” option to be displayed to the user. Upon the user selecting the “Speak . . . ” option, heuristics subsystem  104  may cause information to be displayed to the user, via I/O subsystem  108 , for each language ambiguity, identifying the multiple languages causing the ambiguity. The user may be prompted to select a particular language for performing text-to-speech conversion from among the multiple languages causing the language ambiguity. For example, if the language ambiguity is between languages English and French, in one embodiment, a menu may be displayed to the user identifying English and French as candidate languages and allowing the user to select one of the two languages for performing text-to-speech conversion. Upon the user selecting a particular language, heuristics subsystem  104  may send a signal to text-to-speech subsystem  102  to initiate the text-to-speech conversion using the user-selected language. 
     As indicated above, heuristics subsystem  104  sends information to text-to-speech subsystem  102  identifying the one or more languages to be used by text-to-speech conversion for text-to-speech conversion. In the case where a language ambiguity is detected, the one or more languages may include a user-selected language. In the case where a language ambiguity is not detected, information identifying one or more “non-ambiguous” languages (i.e., languages not causing a language ambiguity) may be sent to text-to-speech subsystem  102 . In some instances, the information communicated to text-to-speech subsystem  102  may include a combination of user-selected and non-ambiguous languages. Text-to-speech conversion may then convert text  128  to speech using the one or more languages identified by heuristics subsystem  104 . As part of this text-to-speech conversion, for a portion of text  128  causing a language ambiguity, the portion is converted to speech by text-to-speech subsystem  102  using a language synthesizer corresponding to the user-selected language for that portion. 
     Text-to-speech subsystem  102  is configured to convert text  128  to speech using one or more languages identified by heuristics subsystem  104 . In the embodiment depicted in  FIG. 1 , text-to-speech conversion includes a set of language synthesizers  112  and a synthesizer controller  120 . The various components of text-to-speech subsystem  102  depicted in  FIG. 1  may be implemented in software, in hardware, or combinations thereof. In some embodiments, text-to-speech subsystem  102  may have more or less components than those depicted in  FIG. 1 . 
     In some embodiments, language synthesizers  112  include one or more synthesizers that are available for performing text-to-speech conversion. Each synthesizer may correspond to a particular language that can be used for text-to-speech conversion. Accordingly, the set of synthesizers in language synthesizers  112  identifies the various languages that are available for text-to-speech conversion using system  100 . Examples of languages include but are not restricted to English, French (in some embodiments France French and Canadian French may be available as two separate languages), German, Japanese, Mandarin, Cantonese, Taiwanese, Shanghainese, and the like. 
     In some embodiments, synthesizer controller  120  is configured to read text  128  and convert the read text to speech using one or more language synthesizers  112 . An example of how text-to-speech subsystem  102  may convert text  128  to speech is depicted in  FIG. 4  and described below. The speech generated by text-to-speech subsystem  102  may be in the form of audio signals, which can then be output as speech  124  using audio output subsystem  106 , which may include a speaker. In some embodiments, the audio signals may be stored as an audio file  126  (e.g., a .wav file) in memory subsystem  122  of system  100 . Audio file  126  may then be output as speech using audio output subsystem  106 . 
     System  100  depicted in  FIG. 1  may be provided in various configurations. In some embodiments, system  100  may be configured as a distributed system where one or more components of system  100  may be distributed and coupled via one or more networks.  FIG. 13  depicts a simplified diagram of a distributed system  1300  for performing text-to-speech conversion according to some embodiments. In the embodiment depicted in  FIG. 13 , heuristics subsystem  104  and text-to-speech subsystem  102  are provided on a server  1302  that is communicatively coupled with a remote client device  1304  via network  1306 . 
     Network  1306  may include one or more communication networks, which could be the Internet, a local area network (LAN), a wide area network (WAN), a wireless or wired network, an Intranet, a private network, a public network, a switched network, or any other suitable communication network. Network  1306  may include many interconnected systems and communication links including but not restricted to hardwire links, optical links, satellite or other wireless communications links, wave propagation links, or any other ways for communication of information. Various communication protocols may be used to facilitate communication of information via network  1306 , including but not restricted to TCP/IP, HTTP protocols, extensible markup language (XML), wireless application protocol (WAP), protocols under development by industry standard organizations, vendor-specific protocols, customized protocols, and others. 
     In the configuration depicted in  FIG. 13 , a user of client device  1304  may select text to be converted to speech using device  1304 . Upon selection of the text, the text may be communicated to server  1302  via network  1306 . Heuristics subsystem  104  located on server  1302  may then perform analysis to determine the one or more languages to be used for converting the text to speech. In some embodiments, the information used by heuristics subsystem  104  for performing the analysis may also be communicated from client device  1304  to server  1302 . In some embodiments, server  1302  may also store some of the information used for the analysis or may collect the information from other sources possibly connected to server  1302  via network  1306 . As part of the analysis, heuristics subsystem  104  may also determine if any language ambiguities exist. Heuristics subsystem  104  may then cause appropriate user interfaces to be displayed by client device  1304 . For example, if no language ambiguities are determined then a “Speak” option may be displayed to the user via an output interface of client device  1304 . If one or more language ambiguities are detected, heuristics subsystem  104  may cause a “Speak . . . ” to be displayed to the user via client device  1304 . A list of languages may be displayed to the user upon user selection of “Speak . . . ”. The user may then select a particular language using client device  1304 . Information identifying any user-selected languages and any other non-ambiguous languages identified by heuristics subsystem  104  may then be communicated to text-to-speech subsystem  102  on server  1302 . Text-to-speech subsystem  102  may then generate speech for the text and the speech may be communicated to client device  1304  for output to the user using a speaker of client device  1304 . 
     In the configuration depicted in  FIG. 13 , text-to-speech subsystem  102  and heuristics subsystem  104  are remotely located from client device  1304 . Server  1302 , including text-to-speech subsystem  102  and heuristics subsystem  104 , provides text-to-speech conversion services for client  1304 . In some embodiment, server  1302  may provide text-to-speech conversion services for multiple clients. The multiple clients may be served concurrently or in a serialized manner. In some embodiments, the services provided by server  1302  may be offered as web-based or cloud services or under a Software as a Service (SaaS) model. 
     It should be appreciated that various different distributed system configurations are possible, which may be different from distributed system  1300  depicted in  FIG. 13 . For example, in some embodiments, text-to-speech subsystem  102  and heuristics subsystem  104  could also be remotely located from each other. The embodiment shown in  FIG. 13  is thus only one example of a system that may incorporate some embodiments and is not intended to be limiting. 
       FIG. 2  depicts a simplified flowchart  200  depicting a method for performing text-to-speech conversion according to some embodiments. The processing depicted in  FIG. 2  may be implemented in software (e.g., code, instructions, program) executed by one or more processors, hardware, or combinations thereof. The software may be stored on a non-transitory computer-readable storage medium. The particular series of processing steps depicted in  FIG. 2  is not intended to be limiting. 
     As depicted in  FIG. 2 , the method may be initiated at  202  upon receiving text to be converted to speech. There are various ways in which the text to be converted to speech is identified. In some embodiments, the mere selection of text by a user using, for example, I/O subsystem  108 , may trigger flowchart  200  depicted in  FIG. 2 . For example, a user may use a touch screen on a device such as an iPhone® or iPad® to select text and this may cause the processing in  FIG. 2  to be initiated. 
     At  204 , analysis is performed to identify a set of one or more languages that are applicable and may be used to convert the text received in  202  to speech. In some embodiments, the analysis performed in  204  can include heuristics-based analysis based upon information available or provided to system  100 . Details related to the analysis performed in  204  in some embodiments are described below with respect to flowchart  300  depicted in  FIG. 3 . 
     At  206 , it is determined whether a language ambiguity exists. For purposes of this disclosure, a language ambiguity exists if a portion of the text received in  202  can be converted to speech using multiple languages available for text-to-speech conversion. Since each language corresponds to a particular language synthesizer, language ambiguity exists when multiple language synthesizers are available for converting the same portion of the text received in  202  to speech. 
     The portion of text  128  that gives rise to a language ambiguity may be the entire text or a subset of the text such as one or more characters within the text received in  202 , one or more words within the text received in  202 , one or more sentences within the text received in  202 , and the like. For example, as described earlier, a language ambiguity may exist if it is determined that one or more words within text  128  may be converted to speech in English (using an English language synthesizer) or in French (using a French language synthesizer). As another example, language ambiguity may exist if it is determined in  206  that multiple language candidates (e.g., Mandarin, Cantonese, Shanghainese, and Taiwanese) and corresponding language synthesizers exist for converting a set of Chinese language characters to speech. Further, as previously described, a particular piece of text may give rise to multiple language ambiguities. This may occur, for example, when the text to be converted to speech includes multiple portions, each giving rise to a language ambiguity. 
     Accordingly, the text to be converted to speech may cause zero or more language ambiguities to occur. The processing to detect any language ambiguities is performed in  206 . In some embodiments, with respect to language ambiguity and one or more languages identified in  204 , the following scenarios may occur:
     (1) A single language is identified for converting the entire text to speech, in which case there is no language ambiguity.   (2) Multiple languages are identified, but there is no language ambiguity. This may occur when the text to be converted to speech includes multiple portions and a non-ambiguous language is determined for each portion. For example, a first language may be determined for a first portion of the text received in  202  and a second language may be determined for a second portion of the text received in  202 , where the first and second portions do not overlap. Since only one language is determined for each portion of text there is no language ambiguity. It is to be noted that a determination of multiple languages does not by itself cause a language ambiguity. For purposes of explanation, a language that is not part of an ambiguous set of languages is referred to as a non-ambiguous language.   (3) Multiple languages are identified that include one or more non-ambiguous languages and languages that cause one or more language ambiguities. For example, a first language may be determined for a first portion of the text received in  202  (no language ambiguity) and multiple languages may be determined for a second portion of the text received in  202  resulting in a language ambiguity for the second portion.   (4) Multiple languages are identified that do not include any non-ambiguous languages but include languages causing one or more language ambiguities. For example, a first language and a second language may be determined for a first portion of the text received in  202  and multiple languages may be determined for a second portion of the text received in  202  resulting in two sets of languages causing language ambiguities for the first portion and the second portion.   (5) No language is identified. This indicates that the system was unable find a language synthesizer that can read and convert the text received in  202  to speech. In this case (not shown in  FIG. 2 ), the processing ends and a message may be displayed to the user that text-to-speech conversion cannot be performed for the selected text.   In some embodiments, if any language ambiguity exists then processing proceeds with  216  else processing proceeds with  208 .   

     If it is determined in  206  that no language ambiguity exists, then information may be displayed to the user at  208  that enables the user to initiate the text-to-speech conversion of the text received in  202 . For example, in some embodiments, a “Speak” option may be displayed to the user. Upon receiving user input indicating selecting of the “Speak” option at  210 , text-to-speech conversion for the text received in  202  may be performed at  212  using the one or more languages determined in  204  and their corresponding language synthesizers. At  214 , the speech generated in  212  may be output to the user. For example, the speech may be output using an audio output device such as a speaker. 
     Going back to  206 , if it is instead determined that a language ambiguity exists, then information may be displayed to the user that allows the user to select a particular language and resolve the ambiguity. For example, a “Speak . . . ” option may be displayed to the user at  216 . The “Speak . . . ” option indicates that the user has to provide some inputs before text-to-speech conversion can be initiated. 
     At  218 , information may be received indicating that the user has selected the “Speak . . . ” option. At  220 , for each language ambiguity, information may be displayed to the user identifying the multiple languages causing the language ambiguity and allowing the user to select a particular language from among the multiple languages for performing text-to-speech conversion. Accordingly, in  220 , information may be displayed to the user that allows the user to provide input to resolve all the language ambiguities. For example, if the language ambiguity is between languages English and French, information may be displayed to the user identifying English and French and allowing the user to select one of the two languages for performing text-to-speech conversion. 
     If there are multiple language ambiguities, then information may be displayed for each language ambiguity such that the user can select a particular language to resolve that language ambiguity. For example, in addition to the language ambiguity between English and French, if another language ambiguity exists due to Mandarin, Cantonese, Shanghainese, and Taiwanese, information may be displayed to the user identifying English and French and allowing the user to select one of the two languages for performing text-to-speech conversion and additionally, information may be displayed to the user identifying Mandarin, Cantonese, Shanghainese, and Taiwanese and allowing the user to select one of the four languages for performing text-to-speech conversion. 
     At  222 , input may be received from the user identifying one or more languages selected by the user for performing text-to-speech conversion. For example, information may be received from the user in  222  indicating that the user has selected English (between French and English) and Mandarin (between Mandarin, Cantonese, Shanghainese, and Taiwanese). 
     At  224 , the text received in  202  is converted to speech using any languages selected by the user in  222  and any other non-ambiguous languages identified in  204 . For each language, a corresponding language synthesizer is used to convert a portion of the text to speech in that language. For example, for a portion of the text resulting in a language ambiguity between English and French, if the user selected French in  222 , then that portion of text is converted to speech using a French language synthesizer. The generated speech may then be output to the user at  214  via an audio output device such as a speaker. 
     As described above, in some embodiments, when a language ambiguity is detected, the user is allowed to resolve the language ambiguity by selecting a particular language from the multiple languages causing the language ambiguity. In this manner, the user is allowed to choose a language for text-to-speech conversion per the user&#39;s choice. 
     As described above, in  204 , analysis is performed to determine one or more languages that can be used to convert the text to speech.  FIG. 3  depicts a simplified flowchart  300  depicting a method for determining the one or more languages for performing text-to-speech conversion according to some embodiments. The processing depicted in  FIG. 3  may be implemented in software (e.g., code, instructions, program) executed by one or more processors, hardware, or combinations thereof. The software may be stored on a non-transitory computer-readable storage medium. The particular series of processing steps depicted in  FIG. 3  is not intended to be limiting. In one embodiment, the processing may be performed by heuristics subsystem  104  depicted in  FIG. 1 . 
     At  302 , various criteria may be used to determine a set of languages to be used for converting the text to speech. In some embodiments, the following criteria may be used, without limitation, to identify language candidates in  302  for converting the text to speech:
     (1) Loaded keyboards—A device, such as an iPhone®, incorporating system  100  may have one or more keyboards corresponding to one or more languages loaded. For example, an iPhone® may have a French keyboard and an English keyboard loaded. This information may be used to identify languages to be used for performing the text-to-speech conversion. The presumption here is that if a user has loaded a particular language keyboard, there is a high likelihood that the user may want to have the text-to-speech conversion performed using that particular language.   (2) Linguistic tags—In some embodiments, tags may be associated with the text to be converted to speech identifying one or more language(s) for the text. Multiple tags may be used to identify multiple languages. A tagging language such as XML or HTML may be used to provide the tags in some embodiments. For example, in HTML, a “lang” attribute tag may be used to indicate the language of the text. In XML, an “xml:language” attribute tag may be used to indicate the language of the text. For example, tags are commonly used by web page designers who often insert tags in web pages to convey additional information related to the web page. One or more of these tags may be used to identify language(s) associated with the content provided on the web page. Accordingly, if the text selected by a user to be converted to speech is from a web page, the web page may be analyzed to determine if there are any tags associated with the selected text that identify any language(s) for the text or portions thereof. The tag information, if available, may then be used to identify one or more languages to be used for the text-to-speech conversion. In some embodiments, tags provided according to RFC 5646 may also be used to identify the language(s) to be used.   (3) Language analysis tool (or linguistic tagger)—Language analysis tools are available that can analyze a piece of text and determine one or more associated languages. The language(s) identified by such a tool may then be used to identify the one or more languages for performing text-to-speech conversion for the text or portions thereof. Generally, the reliability of results from a language analysis tool is dependent on the length of the text being analyzed—the longer the text, generally more reliable the results. Accordingly, the weight given to results obtained from a language analysis tool may depend upon the length of the text being analyzed. Generally, if the text is shorter than 300 words, then the results are not considered very reliable.   (4) Application-specific data—Some applications may provide information or have information associated with their content that can be used to determine a language for text arising from that application. Accordingly, data provided by an application associated with the text may be used to determine one or more languages to be used for the text. For example, for a text message in a messaging application, the sender&#39;s phone number may be analyzed to determine the country code used and the corresponding country, which in turn may be used to determine a language to be used for the text message. As another example, for an email message, the sender&#39;s country code or the domain name for the country where the email originated may be determined and used to determine a language to be used for text-to-speech conversion of the email or a portion thereof. As yet another example, for text selected from a webpage, the domain associated with a website hosting the webpage may be used to determine a language to be used for converting the text to speech.   (5) Unicode or other character-based encoding—The Unicode Standard is a character coding system designed to support the worldwide interchange, processing, and display of written texts of diverse languages. The Unicode standard provides a unique number for every character, irrespective of the language. Accordingly, for text that has been encoded according to the Unicode standard, the Unicode number associated with each character in the text may be used to determine a language to be associated with the character. Character-by-character Unicode analysis for the characters in the text to be converted to speech may be performed to determine the language(s) to be used for text-to-speech conversion. In some embodiments, other character-related encoding information associated with the characters in the text may be used to identify languages associated with the characters.   (6) User preferences and history—If available, information related to a user&#39;s preferences or past language selections may be used to determine the language(s) to be used for text-to-speech conversion. For example, the user&#39;s preference or history information may indicate that the user&#39;s language preference is set to French or that the user has repeatedly chosen French as the language of choice. This information may then be used to identify the language(s) to be used for text-to-speech conversion and French may be selected for inclusion in the list of candidate languages for text-to-speech conversion.   (7) Source of the text—If information related to the source of the text is available, then that information may be used to identify the one or more languages to be used for text-to-speech conversion. For example, if the text selected for text-to-speech conversion is from an email received by a user, information identifying the sender of the email may be used to determine the language to be used. For example, if the text selected for text-to-speech conversion is part of an email, the sender information for the email may be used determine a particular language to be used for the text-to-speech conversion.   (8) Country code top-level domain (ccTLD)—A country code top-level domain (ccTLD) is an Internet top-level domain generally used or reserved for a country, a sovereign state, or a dependent territory. These are generally two letters long and may be associated with applications, such as a browser or domains. Examples of ccTLDs include without limitation: .us for the United States, .jp for Japan, .fr for France, etc. When available for text being converted to speech, these ccTLDs may be used to identify a corresponding country and a corresponding language(s) to be used for converting the text to speech.   (9) Global Positioning System (GPS) information—A large number of devices, especially mobile devices, now contain GPS chips that are able to provide information about the location of the devices and accordingly the locations of the users of the devices. Accordingly, if GPS information indicative of the location of the user for whom text-to-speech conversion is being performed or indicative of the location of a device used for selection of the text for conversion to speech is available, then this information may be used for determine the one or more languages to be used for text-to-speech conversion. For example, if the GPS information indicates that the user is in Mexico, then Spanish may be selected as a language for performing text-to-speech conversion.   

     The list of criteria identified above is not meant to be exhaustive or limiting. In some other embodiments, more or less than the criteria described above may be used. Further, the manner in which the various criteria are used may also vary between embodiments. For example, in one embodiment, each criterion may be used independent of the other criteria to identify zero or more possible language candidates for converting the text to speech. In such an embodiment, in  302 , a set of zero or more language candidates may be identified from analysis performed for each criterion. In another embodiment, two or more criteria may be combined to identify the candidate languages in  302 . The criteria-based processing may be performed in parallel, in a serialized manner, or a combination thereof. 
     The processing performed in  302  yields a list of zero of more languages as potential candidates for converting the text to speech. In some embodiments, if there are multiple languages in the list or if there are any language ambiguities in this list, then an attempt may be made in  304  to resolve the language ambiguities or, if the language ambiguities cannot be resolved, to reduce the number of languages involved in the language ambiguities. For example, if the list generated in  302  includes a language ambiguity caused by multiple languages, an attempt is made in  304  to resolve this language ambiguity based upon heuristics-based analysis. If the language ambiguity cannot be resolved, then an attempt is made, based upon heuristics-based analysis, to reduce the number of languages causing the ambiguity. Accordingly, processing may be performed in  304  that filters down the list of candidate languages generated in  302 . After processing in  304  is completed, processing continues with  206  in  FIG. 2 . 
     Various different criteria may be used for performing the processing in  304 . In some embodiments, the criteria used for the processing in  304  may include one or more of the criteria used in  302  (and described above) or other criteria not used in  302 . In one embodiment, weighing may be used to reduce the list of candidate languages. In one such embodiment, a weight may be calculated and assigned to each criterion used in  302 . The weight associated with a criterion may then be used to either keep or filter out the one or more languages identified based upon that criterion. For example, languages identified using a particular criterion may be filtered out if the weight associated with the criterion does not satisfy a certain configurable threshold. 
     For example, in one embodiment, the list of languages generated in  302  may include one or more languages determined based upon results obtained from a language analysis tool. As indicated above, the reliability of results from such a tool is directly proportional to the length of the text analyzed, and may be unreliable, for example, if the text is less than 300 words long. Accordingly, in  304 , a determination may be made as to the length of the text analyzed and based upon the determined length, a weight may be assigned to this criterion such that languages identified using this criterion may be filtered out if the length of the text is not above a certain threshold. For example, if the length of the analyzed text is determined to be less than 300 words, then one or more languages identified based upon results from this tool may be filtered out. 
     As another example, information related to the user&#39;s preferences and history may be used to filter down the list of candidate languages generated in  302 . For example, the user&#39;s preferences or history information may indicate that the user&#39;s language preference is set to French or that the user has repeatedly chosen French as the language of choice. So if there is a language ambiguity between English and French, the ambiguity may be resolved in  304  by selecting French instead of English as the language to use for text-to-speech conversion. In this scenario, English would be filtered out of the list of candidate languages. 
     As yet another example, the user&#39;s preferences may include a locale preference. For example, the user&#39;s locale preference may be set to Taiwan. In such a scenario, if there is a language ambiguity between languages Mandarin, Cantonese, Shanghainese, and Taiwanese, as a result of the user&#39;s locale preference Taiwanese would be identified as the language to use and Mandarin, Cantonese, and Shanghainese may be filtered out. 
     In some embodiments, certain criteria may be given more weight in identification of a language to be used for text-to-speech conversion than other factors. For example, in some embodiments, the importance of the various factors may be as follows (in decreasing order of importance): Unicode or other character-related information, loaded keyboards, tags associated with the text, and results from linguistic analysis tool. 
     As previously described, in some embodiments, a list of one or more languages to be used for text-to-speech conversion is forwarded by heuristics subsystem  104  to text-to-speech subsystem  102 . This list can include zero or more non-ambiguous languages and, if any language ambiguities were detected, one or more user-selected languages. Text-to-speech subsystem  102  then uses these languages to perform text-to-speech conversion in  212  or  224  in  FIG. 2 . 
       FIG. 4  depicts a simplified flowchart  400  depicting a method for generating speech for text according to some embodiments. The processing depicted in  FIG. 4  may be implemented in software (e.g., code, instructions, program) executed by one or more processors, hardware, or combinations thereof. The software may be stored on a non-transitory computer-readable storage medium. The particular series of processing steps depicted in  FIG. 4  is not intended to be limiting. In one embodiment, the processing may be performed by text-to-speech subsystem  102  depicted in  FIG. 1 . 
     At  402 , the first character from the text to be converted to speech may be read. At  404 , a language to be used for converting the read character to speech is determined. In one embodiment, the language is selected from the list of languages provided by heuristics subsystem  104 . The language selected in  404  for the read character may be a non-ambiguous language, or if the character is read from a portion of text causing a language ambiguity, a language selected by the user for that portion. 
     At  406 , the selected language is associated with the read character. Various techniques may be used for associating the selected language with the character. In one embodiment, the association information may be stored in memory. 
     At  408 , a determination is made if all characters in the text to be converted to speech have been processed. If it is determined in  408  that all characters have been processed, then it indicates that the entire text has been processed and processing continues with  416 . If it is determined in  408  that all characters have not been processed, then it indicates the presence of additional characters in the text that need to be processed and the next character is read from the text at  410 . 
     At  412 , a determination is made whether the currently selected language (i.e., the language selected for the previous read character) can be used to speak the character read in  410 . In some embodiments, a presently selected language may not be used to speak the character read in  410  due to various reasons. In one instance, a language synthesizer corresponding to a language associated with the previously read character may not be able to read and speak the next character read in  410 . For example, the previous character may have been an English character and the next character read in  410  is a Chinese character. In another instance, the previous character may have been associated with a non-ambiguous language and the next character read in  410  is from an ambiguous portion of the text and is to be associated with a user-selected language, where the user-selected language is different from the non-ambiguous language for the previous character. 
     If it is determined in  412  that the currently selected language can be used to speak the character read in  410  then processing continues with  406 . If it is determined in  412  that the currently selected language cannot be used to read the character read in  410 , then at  414 , a new language to be used for converting the character read in  410  to speech is determined. The new language may be a non-ambiguous language or a user-selected language. Processing then continues with  406  wherein the selected language is associated with the character. 
     In the manner described above, processing continues until all the characters in the text have been processed and a language associated with them. After all the characters have been processed, at  416 , ranges of one or more characters within the text with common associated languages are determined and, for each range, the language associated with the one or more characters in the range is associated with the range. For example, a text may comprise a first portion with characters having English as the associated language and a second portion having characters with Japanese as the associated language. In this example, the characters in the first portion may represent a first range of characters with English as the associated language, and the characters in the second portion represent a second range with Japanese as the associated language. 
     At  418 , speech is generated for the text. The text-to-speech conversion process includes, for each range determined in  416 , converting the characters in the range to speech using a language synthesizer corresponding to the language associated with that range. For example, for a range of characters having English as the associated language, an English language synthesizer is used to convert the range of characters to speech. The speech generated for the text in  418  may then be output in  420 . For example, the generated speech may be output using an audio output device such as a speaker. 
     In the embodiment depicted in  FIG. 4  and described, the text to be converted to speech is read on a character-by-character basis and a language associated with each character. When a character is encountered in the text that cannot be converted to speech by a currently selected language, a new language that can read and convert the character to speech is automatically selected and associated with the character. In this manner, multiple languages may be associated with different portions of the text to be converted to speech based upon a character-by-character analysis. Further, such an analysis enables language synthesizers to be automatically selected and switched to facilitate conversion of the text to speech. For example, if an English language synthesizer was currently selected and used to perform text-to-speech conversion, upon encountering a range of Chinese characters in the text, the language synthesizer used for text-to-speech conversion is automatically switched from the English language synthesizer to a language synthesizer than can covert the Chinese characters to speech, and the newly selected language synthesizer is used to convert the Chinese characters to speech. If later, another range of English characters is encountered in the text being converted to speech, then the language synthesizer used for text-to-speech conversion may be automatically switched from the Chinese language synthesizer to the English language synthesizer and used to convert the range of English characters to speech. In this manner, in some embodiments, the language synthesizer used for text-to-speech conversion is automatically and appropriately switched. 
       FIGS. 5-11  depict examples including user interfaces that may be displayed to a user with respect to text-to-speech conversion according to some embodiments. The user interfaces depicted in these figures may, for example, be displayed on devices such as an iPhone®, iPad®, etc. The examples depicted in  FIGS. 5-11  are not intended to be limiting. 
     In the example depicted in  FIG. 5  a user has selected text  502 . In response to the user selection, a callout menu  504  is displayed to the user. Callout menu  504  includes a “Speak” option  506 . Display of “Speak” option  506  indicates that the analysis of text  502  by heuristics subsystem  104  did not indicate any language ambiguity. The user can initiate text-to-speech conversion for text  502  by doing a long press on “Speak” option  506 . 
     In the example depicted in  FIG. 6  the user has selected text  602 , which is the same as text  502  in  FIG. 5 . In response to the user selection, a callout menu  604  is displayed to the user. However, unlike  FIG. 5 , callout menu  604  in  FIG. 6  displays a “Speak . . . ” option  606 . Display of “Speak . . . ” option  606  indicates that the analysis of text  602  by heuristics subsystem  104  indicated that a language ambiguity exists. The user may do a long press on option  606  in  FIG. 6  and this may cause callout menu  702  depicted in  FIG. 7  to be displayed. As shown in  FIG. 7 , callout menu  702  identifies two languages English  704  and French  706 , which cause the language ambiguity. The user can then select one of English  704  or French  706 , and upon the selection initiate text-to-speech conversion for text  602  using the selected language and the corresponding language synthesizer. 
     It is to be noted that even though the same text was selected for text-to-speech conversion in  FIGS. 5 and 6 , the resulting heuristics analysis yielded two different results. This may have been because in the example depicted in  FIG. 5 , the language tagger may have indicated English as the language and no other language was identified by any other heuristic criterion. However, in the example depicted in  FIG. 6 , the language tagger may have yielded English as a candidate language, but at the same time, a French keyboard may have been loaded thereby yielding French as another possible candidate language leading to a language ambiguity. In order to resolve the language ambiguity, both languages are displayed to the user as in  FIG. 7  and the user can then select the specific language to be used. For example, if the user selects English  704 , then text-to-speech conversion for text  602  is performed using the English language synthesizer. If on the other hand, the user selects French  706 , then text-to-speech conversion for text  602  is performed using the French language synthesizer. 
     In the example depicted in  FIG. 8  the user has selected text  802 . In response to the user selection, a callout menu  804  is displayed to the user including a “Speak . . . ” option  806 . Display of “Speak . . . ” option  806  indicates that the analysis of text  802  by heuristics subsystem  104  indicated that a language ambiguity exists. The user may do a long press on option  806  in  FIG. 8  and this may cause callout menu  902  depicted in  FIG. 9  to be displayed. As shown in  FIG. 9 , callout menu  902  identifies two user selectable options: English &amp; Japanese  904  and French &amp; Japanese  906 . In this scenario, languages English and French are causing the language ambiguity and Japanese has been identified as a non-ambiguous language. This may have been because the analysis of text  802  indicated that it includes two sections  808  and  810 . For section  808 , both English and French may be identified as the candidate languages for text-to-speech conversion leading to a language ambiguity. For section  810 , only Japanese may be identified as the language and as a result no ambiguity exists with respect to section  810 . The user can then select one of English &amp; Japanese  904  or French &amp; Japanese  906 , and upon the selection initiate text-to-speech conversion for text  802  using the selected languages and the corresponding language synthesizers. If English &amp; Japanese  904  is selected, then the text in section  808  is converted to speech using an English language synthesizer and the text in section  810  (including the Japanese characters) is converted to speech using the Japanese language synthesizer. 
     In the example depicted in  FIG. 9 , when performing the text-to-speech conversion, text-to-speech subsystem  102  uses the English language synthesizer until a Japanese character is encountered in the text and upon encountering a Japanese character automatically switches to using the Japanese language synthesizer. 
     In the example depicted in  FIG. 10  the user has selected text  1002  including Chinese characters. In response to the user selection, a callout menu  1004  is displayed to the user including a “Speak . . . ” option  1006 . Display of “Speak . . . ” option  1006  indicates that the analysis of text  1002  by heuristics subsystem  104  indicated that a language ambiguity exists. For example, heuristics subsystem  104  may determine that text  1002  includes Chinese characters that can be spoken in Mandarin, Cantonese, or Taiwanese and this language ambiguity could not be resolved using heuristics. When the user does a long press on option  1006  in  FIG. 10 , a callout menu  1102  as depicted in  FIG. 11  may be displayed. As shown in  FIG. 11 , callout menu  1102  includes three user-selectable options corresponding to the three languages causing the ambiguity, namely, Mandarin  1104 , Cantonese  1106 , and Taiwanese  1108 . The user can then select one of Mandarin  1104 , Cantonese  1106 , and Taiwanese  1108  from callout menu  1102  and text  1002  is converted to speech using a language synthesizer corresponding to the user&#39;s selection. 
     In some embodiments, the user&#39;s selection of a particular language may be stored as part of user preferences information. For example, for the example depicted in  FIGS. 10 and 11 , if the user selects Mandarin  1104  for the text-to-speech conversion, then this preference may be stored as part of the user&#39;s preferences and used for subsequent language analysis. For example, the next time that the user selects Chinese text, the language ambiguity between Mandarin, Cantonese, and Taiwanese may be automatically resolved using heuristics including the user&#39;s preferences. In this scenario, Mandarin may be automatically selected and used for the text-to-speech conversion. As a result, the use does not have to do another language selection. In this manner, a user&#39;s past selection can influence future language selections for text-to-speech conversion. 
     In some embodiments, previous language selections made by a user can be cleared thereby allowing a user to make new, possibly changed, selections. For example, a user may have previously chosen Canadian French as the language of choice instead of French French. Options may be provided that enable the user to reset this selection. In one embodiment, a user-selectable toggle feature “Speak Selection” may be provided that can be turned on or off, and the change of state causes the user&#39;s previous selection(s) to be cleared. 
     System  100  depicted in  FIG. 1  may be incorporated into various systems and devices.  FIG. 12  is a simplified block diagram of a computer system  1200  that may incorporate components of system  100  according to some embodiments. As shown in  FIG. 12 , computer system  1200  includes a processor  1202  that communicates with a number of peripheral subsystems via a bus subsystem  1204 . These peripheral subsystems may include a storage subsystem  1206 , including a memory subsystem  1208  and a file storage subsystem  1210 , user interface input devices  1212 , user interface output devices  1214 , and a network interface subsystem  1216 . 
     Bus subsystem  1204  provides a mechanism for letting the various components and subsystems of computer system  1200  communicate with each other as intended. Although bus subsystem  1204  is shown schematically as a single bus, alternative embodiments of the bus subsystem may utilize multiple busses. 
     Processor  1202 , which can be implemented as one or more integrated circuits (e.g., a conventional microprocessor or microcontroller), can control the operation of computer system  1200 . In various embodiments, processor  1202  can execute a variety of programs in response to program code and can maintain multiple concurrently executing programs or processes. At any given time, some or all of the program code to be executed can be resident in processor  1202  and/or in storage subsystem  1206 . Through suitable programming, processor  1202  can provide various functionalities described above for performing text-to-speech conversion and analysis. 
     Network interface subsystem  1216  provides an interface to other computer systems and networks. Network interface subsystem  1216  serves as an interface for receiving data from and transmitting data to other systems from computer system  1200 . For example, network interface subsystem  1216  may enable computer system  1200  to connect to a client device via the Internet. In some embodiments network interface  1216  can include radio frequency (RF) transceiver components for accessing wireless voice and/or data networks (e.g., using cellular telephone technology, advanced data network technology such as 3G, 4G or EDGE, WiFi (IEEE 802.11 family standards, or other mobile communication technologies, or any combination thereof), GPS receiver components, and/or other components. In some embodiments network interface  1216  can provide wired network connectivity (e.g., Ethernet) in addition to or instead of a wireless interface. 
     User interface input devices  1212  may include a keyboard, pointing devices such as a mouse or trackball, a touchpad or touch screen incorporated into a display, a scroll wheel, a click wheel, a dial, a button, a switch, a keypad, audio input devices such as voice recognition systems, microphones, and other types of input devices. In general, use of the term “input device” is intended to include all possible types of devices and mechanisms for inputting information to computer system  1200 . For example, in an iPhone®, user input devices  1212  may include one or more buttons provided by the iPhone®, a touch screen, and the like. A user may provide input regarding selection of which language to use for text-to-speech conversion using one or more of input devices  1212 . A user may also select the text to be converted to speech using one or more of input devices  1212 . 
     User interface output devices  1214  may include a display subsystem, indicator lights, or non-visual displays such as audio output devices, etc. The display subsystem may be a cathode ray tube (CRT), a flat-panel device such as a liquid crystal display (LCD), a projection device, a touch screen, and the like. In general, use of the term “output device” is intended to include all possible types of devices and mechanisms for outputting information from computer system  1200 . For example, menus and other options for selecting languages to be used for text-to-speech conversion may be displayed to the user via an output device. Further, the speech may be output via an audio output device. 
     Storage subsystem  1206  provides a computer-readable storage medium for storing the basic programming and data constructs that provide the functionality of some embodiments. Storage subsystem  1206  can be implemented, e.g., using disk, flash memory, or any other storage media in any combination, and can include volatile and/or non-volatile storage as desired. Software (programs, code modules, instructions) that when executed by a processor provide the functionality described above may be stored in storage subsystem  1206 . These software modules or instructions may be executed by processor(s)  1202 . Storage subsystem  1206  may also provide a repository for storing data used in accordance with the present invention. Storage subsystem  1206  may include memory subsystem  1208  and file/disk storage subsystem  1210 . 
     Memory subsystem  1208  may include a number of memories including a main random access memory (RAM)  1218  for storage of instructions and data during program execution and a read only memory (ROM)  1220  in which fixed instructions are stored. File storage subsystem  1210  provides persistent (non-volatile) storage for program and data files, and may include a hard disk drive, a floppy disk drive along with associated removable media, a Compact Disk Read Only Memory (CD-ROM) drive, an optical drive, removable media cartridges, and other like storage media. 
     Computer system  1200  can be of various types including a personal computer, a portable device (e.g., an iPhone®, an iPad®), a workstation, a network computer, a mainframe, a kiosk, a server or any other data processing system. Due to the ever-changing nature of computers and networks, the description of computer system  1200  depicted in  FIG. 12  is intended only as a specific example. Many other configurations having more or fewer components than the system depicted in  FIG. 12  are possible. 
     Various embodiments described above can be realized using any combination of dedicated components and/or programmable processors and/or other programmable devices. The various embodiments may be implemented only in hardware, or only in software, or using combinations thereof. The various processes described herein can be implemented on the same processor or different processors in any combination. Accordingly, where components are described as being configured to perform certain operations, such configuration can be accomplished, e.g., by designing electronic circuits to perform the operation, by programming programmable electronic circuits (such as microprocessors) to perform the operation, or any combination thereof. Processes can communicate using a variety of techniques including but not limited to conventional techniques for interprocess communication, and different pairs of processes may use different techniques, or the same pair of processes may use different techniques at different times. Further, while the embodiments described above may make reference to specific hardware and software components, those skilled in the art will appreciate that different combinations of hardware and/or software components may also be used and that particular operations described as being implemented in hardware might also be implemented in software or vice versa. 
     The various embodiments are not restricted to operation within certain specific data processing environments, but are free to operate within a plurality of data processing environments. Additionally, although embodiments have been described using a particular series of transactions, this is not intended to be limiting. 
     Thus, although the invention has been described with respect to specific embodiments, these are not intended to be limiting. Various modifications and equivalents are within the scope of the following claims.

Metadata:
Filing Date: 20120306
Publication Date: 20161101
Grant Date: 20161101
Priority Date: 20120306
Inventors: FLEIZACH CHRISTOPHER BRIAN
MINIFIE DARREN C.
Assignee: APPLE INC
CPC Classifications: [{"code": "G10L15/005", "inventive": false, "first": false, "tree": "[]"}, {"code": "G10L15/26", "inventive": false, "first": false, "tree": "[]"}, {"code": "G10L13/08", "inventive": false, "first": false, "tree": "[]"}, {"code": "G10L13/033", "inventive": true, "first": true, "tree": "[]"}, {"code": "G06F40/263", "inventive": true, "first": true, "tree": "[]"}, {"code": "G10L13/033", "inventive": true, "first": false, "tree": "[]"}, {"code": "G10L13/00", "inventive": false, "first": false, "tree": "[]"}, {"code": "G10L15/005", "inventive": false, "first": false, "tree": "[]"}, {"code": "G06F40/263", "inventive": true, "first": false, "tree": "[]"}, {"code": "G10L13/00", "inventive": false, "first": false, "tree": "[]"}, {"code": "G10L15/26", "inventive": false, "first": false, "tree": "[]"}, {"code": "G06F17/275", "inventive": true, "first": true, "tree": "[]"}, {"code": "G10L13/08", "inventive": false, "first": false, "tree": "[]"}, {"code": "G10L13/033", "inventive": true, "first": false, "tree": "[]"}, {"code": "G10L15/005", "inventive": false, "first": false, "tree": "[]"}, {"code": "G10L13/086", "inventive": true, "first": false, "tree": "[]"}]
Family ID: 48048178