Text-to-speech (TTS) systems convert raw text into sound using a process sometimes known as speech synthesis. In a typical implementation, a TTS system first preprocesses raw text input by disambiguating homographs, expanding abbreviations and symbols (e.g., numerals) into words, and the like. The preprocessed text input can be converted into a sequence of words or subword units, such as phonemes. The resulting phoneme sequence is then associated with acoustic features of a number small speech recordings, sometimes known as speech units. The phoneme sequence and corresponding acoustic features are used to select and concatenate speech units into an audio representation of the input text.
Different voices may be implemented as sets of speech units and data regarding the association of the speech units with a sequence of words or subword units. Speech units can be created by recording a human while the human is reading a script. The recording can then be segmented into speech units, which can be portions of the recording sized to encompass all or part of words or subword units. In some cases, each speech unit is a diphone encompassing parts of two consecutive phonemes. Different languages may be implemented as sets of linguistic and acoustic rules regarding the association of the language phonemes and their phonetic features to raw text input. During speech synthesis, a TTS system utilizes linguistic rules and other data to select and arrange the speech units in a sequence that, when heard, approximates a human reading of the input text. The linguistic rules as well as their application to actual text input are typically determined and tested by linguists and other knowledgeable people during development of a language or voice used by the TTS system.
Throughout the drawings, reference numbers may be re-used to indicate correspondence between referenced elements. The drawings are provided to illustrate example embodiments described herein and are not intended to limit the scope of the disclosure.
Introduction
Generally described, the present disclosure relates to speech synthesis systems. Specifically, the aspects of the disclosure relate to automating development of languages and voices for text to speech (TTS) systems. TTS systems may include an engine that converts textual input into synthesized speech, conversion rules which are used by the engine to determine which sounds correspond to the written words of a language, and voices which allow the engine to speak in a language with a specific voice (e.g., a female voice speaking American English). In some embodiments, a group of users may be presented with text and a synthesized speech recording of the text. The users can listen to the synthesized speech recording and submit feedback regarding errors or other issues with the synthesized speech. A system of one or more computing devices can analyze the feedback, automatically modify the voice or the conversion rules, and recursively test the modifications. The modifications may be determined through the use of machine learning algorithms or other automated processes. In some embodiments, the modifications may be determined through semi-automatic or manual processes in addition to or instead of such automated processes.
Although aspects of the embodiments described in the disclosure will focus, for the purpose of illustration, on interactions between a language development system and client computing devices, one skilled in the art will appreciate that the techniques disclosed herein may be applied to any number of hardware or software processes or applications. Further, although various aspects of the disclosure will be described with regard to illustrative examples and embodiments, one skilled in the art will appreciate that the disclosed embodiments and examples should not be construed as limiting. Various aspects of the disclosure will now be described with regard to certain examples and embodiments, which are intended to illustrate but not limit the disclosure.
With reference to an illustrative embodiment, a speech synthesis system, such as a TTS system for a language, may be created. The TTS system may include a set of audio clips of speech units, such as phonemes, diphones, or other subword parts. Optionally, the speech units may be words or groups of words. The audio clips may be portions of a larger recording made of a person reading a text aloud. In some cases, the audio clips may be modified recordings or they may be computer-generated rather than based on portions of a recording. The audio clips, whether they are voice recordings, modified voice recordings, or computer-generated audio, may be generally referred to as speech segments. The TTS system may also include conversion rules that can be used to select and sequence the speech segments based on the text input. The speech segments, when concatenated and played back, produce an audio representation of the text input.
A language/voice development component can select sample text and process it using the TTS system in order to generate testing data. The testing data may be presented to a group of users for evaluation. Users can listen to the audio representations, compare them to the corresponding written text, and submit feedback. The feedback may include the users' evaluation of the accuracy of the audio representation, any conversion errors or issues, the effectiveness of the audio representation in approximating a recording of a human reading the text, etc. Feedback data may be collected from the users and analyzed using machine learning components and other automated processes to determine, for example, whether there are consistent errors and other issues reported, whether there are discrepancies in the reported feedback, and the like. Users can be notified of feedback discrepancies and requested to reconcile them.
The language/voice development component can determine which modifications to the conversion rules, speech segments, or other aspects of the TTS system may remedy the issues reported by the users or otherwise improve the synthesized speech output. The language/voice development component can recursively synthesize a set of audio representations for test sentences using the modified TTS system components, receive feedback from testing users, and continue to modify the TTS system components for a specific number of iterations or until satisfactory feedback is received.
Leveraging the combined knowledge of the group of users, sometimes known as “crowdsourcing,” and the automated processing of machine learning components can reduce the length of time required to develop languages and voices for TTS systems. The combination of such aggregated group analysis and automated processing systems can also reduce or eliminate the need for persons with specialized knowledge of linguistics and speech to test the developed languages and voices or to evaluate feedback from testers.
Network Computing Environment
Prior to describing embodiments of speech synthesis language and voice development processes in detail, an example network computing environment in which these features can be implemented will be described.
The network 108 may be a publicly accessible network of linked networks, possibly operated by various distinct parties, such as the Internet. In other embodiments, the network 108 may include a private network, personal area network, local area network, wide area network, cable network, satellite network, etc. or some combination thereof, each with access to and/or from the Internet.
The language/voice development component 102 can be any computing system that is configured to communicate via a network, such as the network 108. For example, the language/voice development component 102 may include a number of server computing devices, desktop computing devices, mainframe computers, and the like. In some embodiments, the language/voice development component 102 can include several devices physically or logically grouped together, such as an application server computing device configured to generate and modify speech syntheses languages, a database server computing device configured to store records, audio files, and other data, and a web server configured to manage interaction with various users of client computing devices 104a-104n during evaluation of speech synthesis languages. In some embodiments, the language/voice development component 102 can include various modules and components combined on a single device, multiple instances of a single module or component, etc.
The client computing devices 104a-104n can correspond to a wide variety of computing devices, including personal computing devices, laptop computing devices, hand held computing devices, terminal computing devices, mobile devices (e.g., mobile phones, tablet computing devices, etc.), wireless devices, electronic readers, media players, and various other electronic devices and appliances. The client computing devices 104a-104n generally include hardware and software components for establishing communications over the communication network 108 and interacting with other network entities to send and receive content and other information. In some embodiments, a client computing device 104 may include a language/voice development component 102.
The content server 108 illustrated in
Language Development Component
The language/voice development component 102 can include a speech synthesis engine 202, a conversion rule generator 204, a user interface (UI) generator 206, a data store of speech segments 208, a data store of conversion rules 210, a data store of test texts 212, and a data store of feedback data 214. The various modules of the language/voice development component 102 may be implemented as two or more separate computing devices, for example as computing devices in communication with each other via a network, such as network 108. In some embodiments, the modules may be implemented as hardware or a combination of hardware and software on a single computing device.
The speech synthesis engine 202 can be used to generate any number of test audio representations for use in evaluating the language or voice. For example, the speech synthesis engine 202 can receive raw text input from any number of different sources, such as a file or records from content sources such as the content server 106, the test texts data store 212, or some other component. The speech synthesis engine 202 can determine which language applies to the text input and then load conversion rules 210 for synthesizing text written in the language. The conversion rules 210 may be used by the speech synthesis engine 202 to select and sequence speech segments from the speech segments data store 208. The conversion rules 210 may specify which subword units correspond to portions of the text, which speech segment best represents each subword unit based on the linguistic or acoustic features and context of the subword unit within the text, etc. In addition, the conversion rules 210 may specify which subword units to use based on any desired accentuation or intonation in an audio representation. For example, interrogative sentences (e.g., those that end in question marks) may be best represented by rising intonation, while affirmative sentences (e.g., those that end in periods) may be best represented by using falling intonation. Speech segments 208 may be concatenated in a sequence based on the conversion rules 210 to create an audio representation of the text input. The output of the speech synthesis engine 202 can be a file or stream of the audio representation of the text input.
The conversion rule generator 204 can include various machine learning modules for analyzing testing feedback data 214 for the language and voice. For example, a number of test audio representations, generated by the speech synthesis generator 202, can be presented to a group of users for testing. Based on the feedback data 214 received from the users, including data regarding errors and other issues, the conversion rule generator 204 can determine which errors and issues to correct. In some embodiments, the conversion rule generator 204 can take steps to automatically correct errors and issues without requiring further human intervention. The conversion rule generator 204 may detect patterns in the feedback data 214, such as a number of users exceeding a threshold have reported a similar error regarding a specific portion of an audio representation. Certain issues may also be prioritized over others, such as prioritizing the correction of homograph disambiguation errors over issues such as an unnatural sounding audio representation. In one example, an error regarding an incorrect homograph pronunciation (e.g., depending on the context, the word “bass” can mean a fish, an instrument, or a low frequency tone, and there are at least two different pronunciations depending on the meaning) has been reported by a number of users, and a portion of the test sentence has been reported as unnatural sounding by a single user. The conversion rule generator 204 can, based on previously configured settings or on machine learning over time, determine that the unnatural sounding portion is a lower priority and should be corroborated before any conversion rule is modified. The conversion rule generator 204 can also automatically generate a new conversion rule regarding the disambiguation of the homograph that may be based on the context (e.g., when “bass” is found within two words of “swim” then use the pronunciation for the type of fish).
The UI generator 206 can be a web server or some other device or component configured to generate user interfaces and present them, or cause their presentation, to one or more users. For example, a web server can host or dynamically create HTML pages and serve them to client devices 104, and a browser application on the client device 104 can process the HTML page and display a user interface. The language/voice development component 102 can utilize the UI generator 206 to present test sentences to users, and to receive feedback from the users regarding the test sentences. The interfaces generated by the UI generator 206 can include interactive controls for displaying the text of one or more test sentences, playing an audio representation of the test sentences, allowing a user to enter feedback regarding the audio representation, and submitting the feedback to the language/voice development component 102.
The data store of conversion rules 210 can be a database or other electronic data store configured to store files, records, or objects representing the conversion rules for various languages and voices. In some embodiments, the conversion rules 210 may be implemented as a software module with computer executable instructions which, alone or in combination with records from a database, implement the conversion rules. The data store of speech segments 208 may be a database or other electronic data store configured to store files, records, or objects which contain the speech segments. In similar fashion, the data store of test texts 212 and the data store of feedback data 214 may be databases or other electronic data stores configured to store files, records, or objects which can be used to, respectively, generate audio representations for testing or to modify the conversion rules and speech segments.
Language Development Process
Turning now to
The TTS system developer may then utilize any number of testing users to evaluate the output of the TTS system and provide feedback. Advantageously, one or more components of a TTS development system may, based on the feedback, automatically modify the conversion rules or determine that additional voice recordings or other speech segments are desirable in order to address issues raised in the feedback. Moreover, the entire evaluation and modification process may automatically be performed recursively until the conversion rules and speech segments are determined to be satisfactory based on predetermined or dynamically determined criteria.
The process 300 of generating a TTS system voice begins at block 302. The process 300 may be executed by a language/voice development component 102, alone or in conjunction with other components. In some embodiments, the process 300 may be embodied in a set of executable program instructions and stored on a computer-readable medium drive associated with a computing system. When the process 300 is initiated, the executable program instructions can be loaded into memory, such as RAM, and executed by one or more processors of the computing system. In some embodiments, the computing system may encompass multiple computing devices, such as servers, and the process 300 may be executed by multiple servers, serially or in parallel.
At block 304, the language/voice development component 102 can generate conversion rules 210 for a TTS system to use when synthesizing speech. The conversion rules 210 may be used by the speech synthesis engine 202 to select and sequence speech segments from the speech segments data store 208 to produce an audio representation of a text input. The conversion rules 210 may specify which subword units correspond to portions of the text, which speech segment best represents each subword unit based on linguistic or acoustic features or context of the subword unit within the text, etc. Conversion rules 210 may be based on linguistic models and rules, or may be derived from data. For example, the conversion rules 210 may include homograph pronunciation variants based on the context of the homograph, rules for expanding abbreviations and symbols into words, prosody models, data regarding whether a speech unit is voiced or unvoiced, the position of a speech unit or speech segment within a syllable, syllabic stress levels, speech unit length, phrase intonation, etc. In some cases, voice-specific conversion rules may be included, such as rules regarding the accent of a particular voice, rules regarding phrasing and intonation to imitate certain character voices, and the like. The initial conversion rules 210 for a language or voice may be created by linguists or other knowledgeable people, through the use of machine learning algorithms, or some combination thereof.
At block 306, the language/voice development component 102 or some other computing system executing the process 300 can obtain a voice recording of a text, generate speech segments from the voice recording according to the conversion rules and the text, and store the speech segments and data regarding the speech segments in the speech segments data store 208. In a typical implementation, a human may be recorded while reading aloud a predetermined text. Optionally, the voice that is used to read the text may be computer generated. The text can be selected so that one or more instances of each word or subword unit of interest may be recorded for separation into individual speech units. For example, a text may be selected so that several instances of each phoneme of a language may be read and recorded in a number of different contexts. In some embodiments, it may be desirable to use diphones as the recorded speech unit. The actual number of desired diphones (or other subword units, or entire words) may be quite large, and several instances of each diphone, in similar contexts and in a variety of different contexts, may be recorded.
In response to the completion of the recording, the language/voice development component 102 or some other component can generate speech segments from the voice recording. As described above, a speech segments may be based on diphones or some other subword unit, or on words or groups of words. Audio clips of each desired speech unit may be extracted from the voice recording and stored for future use, for example in a data store for speech segments 208. In some embodiments, the speech segments may be stored as individual audio files, or a larger audio file including multiple speech segments may be stored with each speech segments indexed.
At block 308, the language/voice development component 102 can select sentences or other text portions from which to generate synthesized speech for testing and evaluation. The language/voice development component 102 may have access to a repository of text, such as a test texts data store 212. In some embodiments, text may be obtained from an external source, such as a content server 106. The text that is chosen to create synthesized speech for testing and evaluation may be selected according to the intended use of the voice under development, sometimes known as the domain. For example, if the voice is to be used in a TTS system within a book reading application, then text samples may be chosen from that domain, such as popular books or other sources which use similar vocabulary, diction, and the like. In another example, if the voice is to be used in a TTS system with more specialized vocabulary, such as synthesizing speech for technical or medical literature, examples of text from that domain, such as technical or medical literature, may be selected.
Audio representations of the selected test text may be created by the speech synthesis engine 202 of the language/voice development component 102. Synthesis of the speech may proceed in a number of steps. In a sample embodiment, the process includes: (1) preprocessing of the text, including expansion of abbreviations and symbols into words; (2) conversion of the preprocessed text into a sequence of phonemes or other subword units based on word-to-phoneme rules and other conversion rules; (3) association of the phoneme sequence with acoustic, linguistic, and/or prosodic features so that speech segments may be selected; and (4) concatenation of speech segments into a sequence corresponding to the acoustic, linguistic, and/or prosodic features of the phoneme sequence to create an audio representation of the original input text. As will be appreciated by one of skill in the art, any number of different speech synthesis techniques and processes may be used. The sample process described herein is illustrative only and is not meant to be limiting.
As described in detail below, users may listen to the synthesized speech, compare the speech with the written test sentence, and provide feedback that the language/voice development component 102 may use to modify the conversion rules 210 so that the correct pronunciation of “bass” is more likely to be chosen in the future. A similar process may be used for detecting and correcting other types of errors in the conversion rules 210 and speech segments 208. For example, incorrect expansion of an abbreviation or numeral (e.g., pronouncing 57 as “five seven” instead of “fifty seven”), a mispronunciation, etc. may indicate conversion rule 210 issues. Errors and other problems with the speech segments 208 may also be reported. For example, a particular speech segment may, either alone or in combination with other speech segments, cause audio problems such as poor quality playback.
In addition to synthesized speech, one or more recordings of complete sentences, as read by a human, may be included in the set of test sentences and played for the users without indicating to the users which of the sentences are synthesized and which are recordings of completely human-read sentences. By presenting users with actual human-read sentences in addition to synthesized sentences, the language/voice development component 102 may determine a baseline with which to compare user feedback collected during the testing process. For example, users who find a number of errors in a human read sentence that is chosen because it is a correct reading of the text can be flagged and the feedback of such users may be excluded or given less weight, etc. In another example, when a threshold number or portion of users provide similar feedback for the human-read sentences as the synthesized sentences, the TTS developer may determine that the language is ready for release, or that different users should be selected to evaluate the voice.
Returning to
The UI generator 206 of the language/voice development component 102 may prepare a user interface which will be used to present the test sentences to the testing users. For example, the UI generator 206 may be a web server, and may serve HTML pages to client devices 104a-104n of the testing users. The client devices 104a-104n may have browser applications which process the HTML pages and present interactive interfaces to the testing users.
Returning to the previous example, one test sentence may include the words “The bass swims in the ocean.” The pronunciation of the word “bass” may correspond to the instrument or tone rather than the fish. From the context of the word “bass” in the test sentence (e.g., followed immediately by the word “swim” and shortly thereafter by the word “ocean”), the user may determine that the correct pronunciation of the word “bass” likely corresponds to the fish rather than the instrument. If the incorrect pronunciation is included in the test audio representation, the user may highlight 508 the word in the text readout 506 and select a category for the error from the category selection control 510. In this example, the user can select the “Homograph error” category. The user may then describe the issue in the narrative field 514. The language/voice development component 102 can receive the feedback data from the users and store the feedback data in the feedback data store 214 or in some other component.
In some embodiments, additional controls may be included in the UI 500. For example, if the user chooses “Homograph error” from the category selection field 510, a new field may be displayed which includes the various options for the correct pronunciation of the highlighted word 508 in the text readout 506, the correct part of speech of the highlighted word 508, etc. A control to indicate the severity of the issue or error may also be added to the UI 500. For example, a range of options may be presented, such as minor, medium, or critical.
The quality score selection control 512 may be used to provide a quality score or metric, such as a naturalness score indicating the overall effectiveness of the audio representation in approximating a human-read sentence. The language/voice development component 102 may use the quality score to compare the user feedback for the synthesized audio representations to the recordings of human-read test sentences. In some embodiments, once the quality score exceeds a threshold, the audio representation of the test sentence may be considered substantially issue-free or ready for release. The threshold may be predetermined or dynamically determined. In some embodiments, the threshold may be based on the quality score that the user or group of users assigned to the recordings of human-read sentences. For example, once the average quality score for synthesized audio representations is greater than 85% of the quality score given to the recordings of human-read sentences, the language or voice may be considered ready for release.
At block 312 of
At decision block 314, the language/voice development component 102 determines whether there are any feedback discrepancies. When a feedback discrepancy for a test sentence is detected, the users may be notified at block 316 and requested to or otherwise given the opportunity to listen to the audio representation again and reevaluate any potential error or issue with the audio representation. In such as case, the process 300 may return to block 308 after notifying the user.
If no discrepancy is detected in the feedback data received from the users, the process 300 may proceed to decision block 318 of
If the process 300 arrives at decision block 320, the language/voice development component 102 may have determined that there is no error or other issue which requires a modification to the conversion rules or speech segments in order to accurately synthesize speech for the test sentence or sentences analyzed. Therefore, the language/voice development component 102 may determine whether the overall quality scores indicate that the conversion rules or speech segments associated with the test sentence or sentences are ready for release or otherwise satisfactory, as described above. If the language/voice development component 102 determines that the quality score does not exceed the appropriate threshold, or if it is otherwise determined that additional modifications are desirable, the process 300 can proceed to block 322. Otherwise, the process 300 may proceed to decision block 326, where the language/voice development component 102 can determine whether to release the voice (e.g.: distribute it to customers or otherwise make it available for use), or to continue testing the same features or other features of the language or voice. If additional testing is desired, the process 300 returns to block 304. Otherwise, the process 300 may terminate at block 328. Termination of the process 300 may include generating a notification to users or administrators of the TTS system developer. In some embodiments, the process 300 may automatically return to block 308, where another set of test sentences are selected for evaluation. In additional embodiments, the voice may be released and the testing and evaluation process 300 may continue, returning to block 304 or to block 308.
At block 322, the language/voice development component 102 can determine the type of modification to implement in order to correct the issue or further the goal of raising the quality score above a threshold. In some cases, the language/voice development component 102 may determine that one or more speech segments are to be excluded or replaced. In such cases, the process 300 can return to block 304. For example, multiple users may report an audio problem, such as noise or muffled speech, associated with at least part of one or more words. The affected words need not be from the same test sentence, because the speech segments used to synthesize the audio representations may be selected from a common pool of speech segments, and therefore one speech segment may be used each time a certain word is used, or in several different words whenever the speech segment corresponds to a portion of a word. The language/voice development component 102 can utilize the conversion rules, as they existed when the test audio representations were created, to determine which speech segments were used to synthesize the words identified by the users. If the user feedback indicates an audio problem, the specific speech segment that is the likely cause of the audio problem may be excluded from future use. If the data store for speech segments 208 contains other speech segments corresponding to the same speech unit (e.g.; the same diphone or other subword unit), then one of the other speech segments may be substituted for the excluded speech segment. If there are no speech segments in the speech segment data store 208 that can be used as a substitute for the excluded speech segment, the language/voice development component 102 may issue a notification, for example to a system administrator, that additional recordings are necessary or desirable. The process 300 may proceed from block 304 in order to test the substituted speech segment.
The language/voice development component 102 may instead (or in addition) determine that one or more conversion rules are to be modified. In such a case the process 300 can return to block 306. For example, as described above with respect to
Other examples of feedback regarding issues associated with speech segments and/or conversion rules may include feedback regarding a text expansion issue, such as the number 57 being pronounced as “five seven” instead of “fifty seven.” In a further example, feedback may be received regarding improper syllabic stress, such as the second syllable in the word “replicate” being stressed. Other examples include a mispronunciation (e.g.: pronouncing letters which are supposed to be silent), a prosody issue (e.g.: improper intonation), or a discontinuity (e.g.: partial words, long pauses). In these and other cases, a conversion rule may be updated/added/deleted, a speech segment may be modified/added/deleted, or some combination thereof.
Terminology
Depending on the embodiment, certain acts, events, or functions of any of the processes or algorithms described herein can be performed in a different sequence, can be added, merged, or left out all together (e.g., not all described operations or events are necessary for the practice of the algorithm). Moreover, in certain embodiments, operations or events can be performed concurrently, e.g., through multi-threaded processing, interrupt processing, or multiple processors or processor cores or on other parallel architectures, rather than sequentially.
The various illustrative logical blocks, modules, routines, and algorithm steps described in connection with the embodiments disclosed herein can be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. The described functionality can be implemented in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the disclosure.
The steps of a method, process, routine, or algorithm described in connection with the embodiments disclosed herein can be embodied directly in hardware, in a software module executed by a processor, or in a combination of the two. A software module can reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, a removable disk, a CD-ROM, or any other form of a non-transitory computer-readable storage medium. An exemplary storage medium can be coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium can be integral to the processor. The processor and the storage medium can reside in an ASIC. The ASIC can reside in a user terminal. In the alternative, the processor and the storage medium can reside as discrete components in a user terminal.
Conditional language used herein, such as, among others, “can,” “could,” “might,” “may,” “e.g.,” and the like, unless specifically stated otherwise, or otherwise understood within the context as used, is generally intended to convey that certain embodiments include, while other embodiments do not include, certain features, elements and/or steps. Thus, such conditional language is not generally intended to imply that features, elements and/or steps are in any way required for one or more embodiments or that one or more embodiments necessarily include logic for deciding, with or without author input or prompting, whether these features, elements and/or steps are included or are to be performed in any particular embodiment. The terms “comprising,” “including,” “having,” and the like are synonymous and are used inclusively, in an open-ended fashion, and do not exclude additional elements, features, acts, operations, and so forth. Also, the term “or” is used in its inclusive sense (and not in its exclusive sense) so that when used, for example, to connect a list of elements, the term “or” means one, some, or all of the elements in the list.
Conjunctive language such as the phrase “at least one of X, Y and Z,” unless specifically stated otherwise, is to be understood with the context as used in general to convey that an item, term, etc. may be either X, Y, or Z, or a combination thereof. Thus, such conjunctive language is not generally intended to imply that certain embodiments require at least one of X, at least one of Y and at least one of Z to each be present.
While the above detailed description has shown, described, and pointed out novel features as applied to various embodiments, it can be understood that various omissions, substitutions, and changes in the form and details of the devices or algorithms illustrated can be made without departing from the spirit of the disclosure. As can be recognized, certain embodiments of the inventions described herein can be embodied within a form that does not provide all of the features and benefits set forth herein, as some features can be used or practiced separately from others. The scope of certain inventions disclosed herein is indicated by the appended claims rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.
Number | Date | Country | Kind |
---|---|---|---|
401371 | Oct 2012 | PL | national |
Number | Name | Date | Kind |
---|---|---|---|
5873059 | Iijima et al. | Feb 1999 | A |
5920840 | Satyamurti et al. | Jul 1999 | A |
6308156 | Barry et al. | Oct 2001 | B1 |
6671617 | Odinak et al. | Dec 2003 | B2 |
7454348 | Kapilow et al. | Nov 2008 | B1 |
7567896 | Coorman et al. | Jul 2009 | B2 |
8321222 | Pollet et al. | Nov 2012 | B2 |
8473297 | Jang et al. | Jun 2013 | B2 |
20020087224 | Barile | Jul 2002 | A1 |
20030004711 | Koishida et al. | Jan 2003 | A1 |
20030171922 | Beerends et al. | Sep 2003 | A1 |
20030234824 | Litwiller | Dec 2003 | A1 |
20050182629 | Coorman et al. | Aug 2005 | A1 |
20060095848 | Naik | May 2006 | A1 |
20070118377 | Badino et al. | May 2007 | A1 |
20070124142 | Mukherjee | May 2007 | A1 |
20070156410 | Stohr et al. | Jul 2007 | A1 |
20080129520 | Lee | Jun 2008 | A1 |
20080140406 | Burazerovic et al. | Jun 2008 | A1 |
20090254345 | Fleizach et al. | Oct 2009 | A1 |
20100082328 | Rogers et al. | Apr 2010 | A1 |
20100082344 | Naik et al. | Apr 2010 | A1 |
20110161085 | Boda et al. | Jun 2011 | A1 |
Number | Date | Country |
---|---|---|
WO 2011088053 | Jul 2011 | WO |
Number | Date | Country | |
---|---|---|---|
20140122081 A1 | May 2014 | US |