Speech recognition systems have progressed to the point where humans can interact with computing devices using their voices. Such systems employ techniques to identify the words spoken by a human user based on the various qualities of a received audio input. Speech recognition combined with natural language understanding processing techniques enable speech-based user control of a computing device to perform tasks based on the user's spoken commands. The combination of speech recognition and natural language understanding processing techniques is referred to herein as speech processing. Speech processing may also involve converting a user's speech into text data which may then be provided to various text-based software applications. Speech processing may be used by computers, hand-held devices, telephone computer systems, kiosks, and a wide variety of other devices to improve human-computer interactions.
Statistical machine translation systems generate translations on the basis of statistical models derived from an analysis of bilingual text. In particular, text segments can be translated based upon a probability distribution that a segment in a target language (e.g. Spanish) is a translation of a segment in a source language (e.g. English).
For a more complete understanding of the present disclosure, reference is now made to the following description taken in conjunction with the accompanying drawings.
Offered is a system that can improve machine translation and correction by providing a user with the ability to manipulate and correct segments of a translated sentence through a graphical user interface (GUI). In particular, the system can display a machine translation of a sentence together with an untranslated version of the sentence, and can cause both of the displayed sentences to break apart into component parts in response to receiving a command to do so, for example by detecting a user double-tapping on one of them. In response to selection (e.g., tap) corresponding to any portion of either version of the sentence, the system can identify a corresponding portion of the other version (in the other language), as well as reveal information about the selected portion (e.g., a dictionary definition) and/or enable selection of a modification to the selected portion (e.g., a different one of the N-best results that were generated by a translation service). In some implementations, the sentences can first be broken down into phrases (noun phrases, verb phrases, gerund phrases, infinitive phrases, appositive phrases, adverbial phrases, adjectival phrases, participial phrases, prepositional phrases, absolute phrases, etc.), and the resulting phrases can further be broken down (e.g., by double tapping on them), and so on, until one or both of the sentences have been fully broken down into discrete words.
In some embodiments, the system can generate the original and translated versions of the sentence in response to a user spoken command. For instance, in some implementations a user device can include both a microphone and a display screen, and an automatic speech recognition (ASR) engine can be used to transcribe the user's speech in one language (e.g., English) into text. The resulting text can then be translated into another language (e.g., Spanish) by a translation service and displayed on the display screen along with the untranslated text, as noted above.
In some embodiments, a user device can begin transmitting audio data to an ASR engine upon detection of an uttered wakeword, e.g., “Alexa.” Additionally or alternatively, in some embodiments, translation of an uttered phrase can be performed in response to the recognition of a user's verbal request for that service. For example, after uttering a wakeword, e.g., “Alexa,” a user might say “translate Hello, how are you into Spanish.” After being converted to text, a natural language understanding (NLU) engine may interpret such an utterance as requesting that the phrase “Hello, how are you?” be translated from English into Spanish, and proceed accordingly.
In other implementations, the system can additionally or alternatively receive textual input through a keyboard or other input, and/or can determine the language into which an input sentence should be translated based upon another input, e.g., a drop down menu, a verbal command, or the like.
In some implementations, the routine 100 may be executed exclusively, or nearly exclusively, by the user device 110 after the device 110 receives an ASR results lattice, a word/word group linking table, a translation results lattice, and/or dictionary information from one or more servers 320 (not illustrated in
When the original and translated versions of the sentence are displayed (shown in screen 202 of
Although not specifically illustrated in
In the example routine of
As shown in
In the illustrated example, when the device detects a double-tap (or other configured selection) corresponding to an item (step 126 in
In some implementations, the sentences 232 and 234 can be broken down based on the system identification of the respective phrases they contain (e.g., noun phrases, verb phrases, gerund phrases, infinitive phrases, appositive phrases, adverbial phrases, adjectival phrases, participial phrases, prepositional phrases, absolute phrases, etc.) and metadata or some other technique can be used to link together the individual words contained within each identified phrase. In some embodiments, either or both of the sentences 232 and 234 can, for example, be sent to a parsing service 310 (discussed in more detail below in connection with
As for the single tap actions, in each instance, detecting a selection of a given segment in one language may cause the system to emphasize the selected segment (e.g., segment 240 on screen 248, segment 242 on screen 250, segment 244 on screen 252, segment 246 on screen 254, and segment 268 on screen 258) and also causes the system to identify the corresponding segment(s) in the other language (e.g., segment 244 on screen 248, segment 246 on screen 250, segment 240 on screen 252, segment 242 on screen 254, and segments 262 and 264 on screen 258). In some cases, multiple segments in one language can correspond to a single segment in the other language. For example, as shown on screen 258 in
Also, in the example implementation shown, single tapping on a segment may further cause the system to display certain information about the selected segment, e.g., in a box 236 between the segments. In the illustrated example, the type of information the system presents on the screens 248, 250, 252, 254, and 258 in response to a single tap depends on whether the selected segment contains a single word (e.g., segments 240, 244 and 268) or multiple words (e.g., segments 242 and 246). As illustrated by screens 248, 252, and 258, single-tapping a segment containing a single word may cause the system to present dictionary information for the selected segment in a box 236 (e.g., see boxes 236c, 236e, and 236g). As illustrated by screens 250 and 254, on the other hand, single-tapping a segment containing multiple words may cause the system to present options for correcting the selected segment. A similar process was described above in connection with screens 204 and 206 in
Additionally or alternatively, when the selected multi-word segment is a translation, e.g., generated by a translation service, of something the user said or typed, the system can present the user with a list of alternate translation results (as well as corresponding back-translations for those alternate translation results) for the segment (e.g., see box 236b on screen 206 and box 236f on screen 254). Further, in some implementations, information in a box 236 can be accompanied by an icon 272 or other identifier that can be selected to cause the system to generate audio feedback about the selected segment, e.g., by playing back retrieved audio data, or converting the text of the selected segment into a speech signal that is amplified and fed to a speaker. As noted previously, in some embodiments, the example routine shown in
In some embodiments, the system allows the user to select both the source language of the input sentence and the destination language of the translation of the input sentence, e.g., using a drop-down menu, or stores profile settings on the device 110 or elsewhere that determine such parameters. The device 110 and/or a remote service may additionally or alternatively be configured to automatically identify the source language of the input sentence based on its content.
In some implementations, user selections of alternative ones of the N-best ASR results (e.g., via screen 204 or 250) may be used to train an automatic speech recognition (ASR) engine 304 (discussed below in reference to
As shown, a user device 110 may include a microphone 316 and a display 104. Although not illustrated in
It should likewise be appreciated that each of the one or more servers 320 may also include one or more processors, memory/storage elements, and communications modules that can operate to execute the software modules 304, 306, 308, 310, and 312, communicate with the user device 110 via the network 322, and otherwise achieve the functionality discussed herein. Additional information concerning example embodiments of the server(s) 320 is provided below in connection with
The device 110, using a wakeword detection module 420, may then processes the audio, or audio data corresponding to the audio, to determine if a keyword (such as a wakeword) is detected in the audio. Following detection of a wakeword, the device may send audio data 402 corresponding to the utterance, to a server 320 that includes an ASR engine 304. The audio data 402 may be output from an acoustic front end (AFE) 456 located on the device 110 prior to transmission. Or the audio data 402 may be in a different form for processing by a remote AFE 456, such as the AFE 456 located with the ASR engine 304.
The wakeword detection module 420 may work in conjunction with other components of the device 110, for example a microphone (not illustrated in
The device 110 may use various techniques to determine whether audio data includes speech. Some embodiments may apply voice activity detection (VAD) techniques. Such techniques may determine whether speech is present in an audio input based on various quantitative aspects of the audio input, such as the spectral slope between one or more frames of the audio input; the energy levels of the audio input in one or more spectral bands; the signal-to-noise ratios of the audio input in one or more spectral bands; or other quantitative aspects. In other embodiments, the device 110 may implement a limited classifier configured to distinguish speech from background noise. The classifier may be implemented by techniques such as linear classifiers, support vector machines, and decision trees. In still other embodiments, Hidden Markov Model (HMM) or Gaussian Mixture Model (GMM) techniques may be applied to compare the audio input to one or more acoustic models in speech storage, which acoustic models may include models corresponding to speech, noise (such as environmental noise or background noise), or silence. Still other techniques may be used to determine whether speech is present in the audio input.
Once speech is detected in the audio received by the device 110 (or separately from speech detection), the device 110 may use the wakeword detection module 420 to perform wakeword detection to determine when a user intends to provide speech input to the device 110. This process may also be referred to as keyword detection, with the wakeword being a specific example of a keyword. Specifically, keyword detection is typically performed without performing linguistic analysis, textual analysis or semantic analysis. Instead, incoming audio (or audio data) is analyzed to determine if specific characteristics of the audio match preconfigured acoustic waveforms, audio signatures, or other data to determine if the incoming audio “matches” stored audio data corresponding to a keyword.
Thus, the wakeword detection module 420 may compare audio data to stored models or data to detect a wakeword. One approach for wakeword detection applies general large vocabulary continuous speech recognition (LVCSR) systems to decode the audio signals, with wakeword searching conducted in the resulting lattices or confusion networks. LVCSR decoding may require relatively high computational resources. Another approach for wakeword spotting builds HMMs for each key wakeword word and non-wakeword speech signals respectively. The non-wakeword speech includes other spoken words, background noise, etc. There can be one or more HMMs built to model the non-wakeword speech characteristics, which are named filler models. Viterbi decoding is used to search the best path in the decoding graph, and the decoding output is further processed to make the decision on keyword presence. This approach can be extended to include discriminative information by incorporating a hybrid DNN-HMM decoding framework. In another embodiment the wakeword spotting system may be built on deep neural network (DNN)/recursive neural network (RNN) structures directly, without HMM involved. Such a system may estimate the posteriors of wakewords with context information, either by stacking frames within a context window for DNN, or using RNN. Following-on posterior threshold tuning or smoothing is applied for decision making Other techniques for wakeword detection, such as those known in the art, may also be used.
Once the wakeword is detected, the local device 110 may “wake” and begin transmitting audio data 402 corresponding to input audio 302 to the server(s) 320 for speech processing by the ASR engine 304. The audio data 402 may include data corresponding to the wakeword, or the portion of the audio data corresponding to the wakeword may be removed by the local device 110 prior to sending.
In some implementations, other mechanisms can additionally or alternatively be used to indicate to or instruct the system that audio data is to be transmitted to an ASR engine 304. In some implementations, for instance, one or more soft keys or physical buttons on a user device 110 may be tapped, pressed, or otherwise selected to indicate when to start and/or stop sending audio data to the ASR engine 304.
Upon receipt by the server(s) 320, the audio data 402 may be passed to an ASR engine 304, and the ASR engine 304 may then transcribe the audio data 402 into text data representing words of speech contained in the input audio 302. The text data may then be used by other components for various purposes. A spoken utterance in the audio data 402 may be input to a processor configured to perform ASR, which may then interpret the spoken utterance based on a similarity between the spoken utterance and pre-established language models 454 stored in an ASR model knowledge base (e.g., ASR model storage 452). For example, the ASR engine 304 may compare the audio data 402 with models for sounds (e.g., subword units or phonemes) and sequences of sounds to identify words that match the sequence of sounds spoken in the spoken utterance of the audio data 402.
The different ways a spoken utterance may be interpreted (i.e., the different hypotheses) may each be assigned a probability or a confidence score representing a likelihood that a particular set of words matches those spoken in the spoken utterance. The confidence score may be based on a number of factors including, for example, a similarity of the sound in the spoken utterance to models for language sounds (e.g., an acoustic model 453 stored in the ASR model storage 452), and a likelihood that a particular word that matches the sound would be included in the sentence at the specific location (e.g., using a language model 454 stored in the ASR model storage 452). Thus, each potential textual interpretation of the spoken utterance (i.e., hypothesis) is associated with a confidence score. Based on the considered factors and the assigned confidence score, the ASR engine 304 outputs the most likely text recognized in the audio data 402. The ASR engine 304 may also output multiple hypotheses in the form of a lattice or an N-best list with each hypothesis corresponding to a confidence score or other score (e.g., such as probability scores, etc.). Such an N-best lattice may include multiple portions corresponding to respective segments of the audio data 402, so that an N-best ASR results list may be derived for any such audio data segment and corresponding portion of the lattice.
The device or devices included in the ASR engine 304 may include an AFE 456 and a speech recognition module 458. The AFE 456 transforms the audio data 402, captured by the microphone (not illustrated in
The speech recognition module 458 may process data output from the AFE 456 with reference to information stored in the ASR model storage 452. Alternatively, post front-end processed data (e.g., feature vectors) may be received by the device executing ASR processing from another source besides the internal AFE 456. For example, the computing device 110 may process audio data 402 into feature vectors (e.g., using an on-device AFE 456) and transmit that information to the server(s) 320 across the network 322 for ASR processing. Feature vectors may arrive at the server(s) 320 encoded, in which case they may be decoded prior to processing by the processor executing the speech recognition module 458.
The speech recognition module 458 may attempt to match received feature vectors to language phonemes and words as known in the stored acoustic models 453 and language models 454. The speech recognition module 458 may compute recognition scores for the feature vectors based on acoustic information and language information. The acoustic information may be used to calculate an acoustic score representing a likelihood that the intended sound represented by a group of feature vectors matches a language phoneme. The language information may be used to adjust the acoustic score by considering what sounds and/or words are used in context with each other, thereby improving a likelihood that the ASR engine 304 will output speech results that make sense grammatically.
The speech recognition module 458 may use a number of techniques to match feature vectors to phonemes, for example using Hidden Markov Models (HMMs) to determine probabilities that feature vectors may match phonemes. Sounds received may be represented as paths between states of the HMM and multiple paths may represent multiple possible text matches for the same sound.
Following ASR processing, the ASR results may be sent by the speech recognition module 458 to other processing components, which may be local to the device performing ASR and/or distributed across the network(s) 322. For example, ASR results in the faun of a single textual representation of the speech, an N-best list including multiple hypotheses and respective scores, lattice, etc., may be sent to a natural language understanding (NLU) engine 306 for processing, such as conversion of the text data into commands for execution, either by a speech-controlled device 110, by the machine translation (MT) engine 308, or another module on the server(s) 320, or by another device (e.g., a server running a search engine, etc.)
The device performing NLU processing (e.g., a server 320) may include various components, including potentially dedicated processor(s), memory, storage, etc. As shown in
Generally, the NLU process takes textual input (such as processed from ASR engine 304 based on the utterance input audio 302) and attempts to make a semantic interpretation of the text. That is, the NLU process determines the meaning behind the text based on the individual words and then implements that meaning. NLU engine 306 interprets a text string to derive an intent or a desired action from the user as well as the pertinent pieces of information in the text that allow a device (e.g., device 110) to complete that action. For example, if a spoken utterance is processed using ASR engine 304 and outputs the text “call mom” the NLU process may determine that the user intended to activate a telephone in his/her device and to initiate a call with a contact matching the entity “mom” (which may involve a downstream command processor 490 linked with a telephone application).
The NLU may process several textual inputs related to the same utterance. For example, if the ASR engine 304 outputs N text segments (as part of an N-best list), the NLU may process all N outputs to obtain NLU results.
As will be discussed further below, the NLU process may be configured to parse and tag information to annotate text as part of NLU processing. For example, for the text “call mom,” “call” may be tagged as a command (to execute a phone call) and “mom” may be tagged as a specific entity and target of the command (and the telephone number for the entity corresponding to “mom” stored in a contact list may be included in the annotated result). Further, the NLU process may be used to provide answer data in response to queries, for example using the knowledge base 472.
To correctly perform NLU processing of speech input, an NLU engine 306 may be configured to determine a “domain” of the utterance so as to determine and narrow down which services offered by the endpoint device (e.g., server 320 or device 110) may be relevant. For example, an endpoint device may offer services relating to interactions with a telephone service, a contact list service, a calendar/scheduling service, a music player service, etc. Words in a single text query may implicate more than one service, and some services may be functionally linked (e.g., both a telephone service and a calendar service may utilize data from the contact list).
The named entity recognition (NER) module 462 receives a query in the faun of ASR results and attempts to identify relevant grammars and lexical information that may be used to construe meaning. To do so, the NLU engine 306 may begin by identifying potential domains that may relate to the received query. The NLU storage 473 includes a databases of devices (474a-474n) identifying domains associated with specific devices. For example, the device 110 may be associated with domains for music, telephony, calendaring, contact lists, and device-specific communications, but not video. In addition, the entity library may include database entries about specific services on a specific device, either indexed by Device ID, Speaker ID, or Household ID, or some other indicator.
In NLU processing, a domain may represent a discrete set of activities having a common theme, such as “shopping”, “music”, “calendaring”, etc. As such, each domain may be associated with a particular recognizer 463, language model and/or grammar database (476a-476n), a particular set of intents/actions (478a-478n), and a particular personalized lexicon (486). Each gazetteer (484a-484n) may include domain-indexed lexical information associated with a particular user and/or device. For example, the Gazetteer A (484a) includes domain-index lexical information 486aa to 486an. A user's music-domain lexical information might include album titles, artist names, and song names, for example, whereas a user's contact-list lexical information might include the names of contacts. Since every user's music collection and contact list is presumably different, this personalized information improves entity resolution.
As noted above, in traditional NLU processing, a query may be processed applying the rules, models, and information applicable to each identified domain. For example, if a query potentially implicates both communications and music, the query may, substantially in parallel, be NLU processed using the grammar models and lexical information for communications, and will be processed using the grammar models and lexical information for music. The responses based on the query produced by each set of models is scored (discussed further below), with the overall highest ranked result from all applied domains is ordinarily selected to be the correct result.
An intent classification (IC) module 464 parses the query to determine an intent or intents for each identified domain, where the intent corresponds to the action to be performed that is responsive to the query. Each domain is associated with a database (478a-478n) of words linked to intents. For example, a music intent database may link words and phrases such as “quiet,” “volume off,” and “mute” to a “mute” intent. The IC module 464 identifies potential intents for each identified domain by comparing words in the query to the words and phrases in the intents database 478. Traditionally, the determination of an intent by the IC module is performed using a set of rules or templates that are processed against the incoming text to identify a matching intent.
In order to generate a particular interpreted response, the NER 462 applies the grammar models and lexical information associated with the respective domain to actually recognize a mention one or more entities in the text of the query. In this manner the NER 462 identifies “slots” (i.e., particular words in query text) that may be needed for later command processing. Depending on the complexity of the NER 462, it may also label each slot with a type of varying levels of specificity (such as noun, place, city, artist name, song name, or the like). Each grammar model 476 includes the names of entities (i.e., nouns) commonly found in speech about the particular domain (i.e., generic terms), whereas the lexical information 486 from the gazetteer 484 is personalized to the user(s) and/or the device. For instance, a grammar model associated with the shopping domain may include a database of words commonly used when people discuss shopping.
The intents identified by the IC module 464 are linked to domain-specific grammar frameworks (included in 476) with “slots” or “fields” to be filled. Each slot/field corresponds to a portion of the query text that the system believes corresponds to an entity. For example, if “play music” is an identified intent, a grammar (476) framework or frameworks may correspond to sentence structures such as “Play {Artist Name},” “Play {Album Name},” “Play {Song name},” “Play {Song name} by {Artist Name},” etc. However, to make resolution more flexible, these frameworks would ordinarily not be structured as sentences, but rather based on associating slots with grammatical tags.
For example, the NER module 462 may parse the query to identify words as subject, object, verb, preposition, etc., based on grammar rules and/or models, prior to recognizing named entities. The identified verb may be used by the IC module 464 to identify intent, which is then used by the NER module 462 to identify frameworks. A framework for an intent of “play” may specify a list of slots/fields applicable to play the identified “object” and any object modifier (e.g., a prepositional phrase), such as {Artist Name}, {Album Name}, {Song name}, etc. The NER module 462 then searches the corresponding fields in the domain-specific and personalized lexicon(s), attempting to match words and phrases in the query tagged as a grammatical object or object modifier with those identified in the database(s).
This process includes semantic tagging, which is the labeling of a word or combination of words according to their type/semantic meaning. Parsing may be performed using heuristic grammar rules, or an NER model may be constructed using techniques such as hidden Markov models, maximum entropy models, log linear models, conditional random fields (CRF), and the like.
For instance, a query of “play mother's little helper by the rolling stones” might be parsed and tagged as {Verb}: “Play,” {Object}: “mother's little helper,” {Object Preposition}: “by,” and {Object Modifier}: “the rolling stones.” At this point in the process, “Play” is identified as a verb based on a word database associated with the music domain, which the IC module 464 will determine corresponds to the “play music” intent. At this stage, no determination has been made as to the meaning of “mother's little helper” and “the rolling stones,” but based on grammar rules and models, it is determined that the text of these phrases relate to the grammatical object (i.e., entity) of the query.
The frameworks linked to the intent are then used to determine what database fields should be searched to determine the meaning of these phrases, such as searching a user's gazette for similarity with the framework slots. So a framework for “play music intent” might indicate to attempt to resolve the identified object based {Artist Name}, {Album Name}, and {Song name}, and another framework for the same intent might indicate to attempt to resolve the object modifier based on {Artist Name}, and resolve the object based on {Album Name} and {Song Name} linked to the identified {Artist Name}. If the search of the gazetteer does not resolve the a slot/field using gazetteer information, the NER module 462 may search the database of generic words associated with the domain (in the knowledge base 472). So for instance, if the query was “play songs by the rolling stones,” after failing to determine an album name or song name called “songs” by “the rolling stones,” the NER component 462 may search the domain vocabulary for the word “songs.” In the alternative, generic words may be checked before the gazetteer information, or both may be tried, potentially producing two different results.
The results of NLU processing may be tagged to attribute meaning to the query. So, for instance, “play mother's little helper by the rolling stones” might produce a result of: {domain} Music, {intent} Play Music, {artist name} “rolling stones,” {media type} SONG, and {song title} “mother's little helper.” As another example, “play songs by the rolling stones” might produce: {domain} Music, {intent} Play Music, {artist name} “rolling stones,” and {media type} SONG.
When the NLU engine 306 indicates an incoming message is to be translated into a particular language, such as in response to the utterance “Alexa translate hello how are you into Spanish,” the output data from the NLU processing (which may include tagged text, commands, etc.) may be sent to the MT engine 308, with the MT engine 308 being instructed to translate the phrase “hello, how are you” into Spanish. An example implementation of a routine 1000 that may be executed by the MT engine 308 is described below in connection with
In some implementations, the system may include command processors in addition to the MT engine 308, and the destination command processor may be determined based on the NLU output. For example, if the NLU output includes a command to play music, the destination command processor may be a music playing application, such as one located on device 110 or in a music playing appliance, configured to execute a music playing command. If the NLU output includes a search utterance (e.g., requesting the return of search results), the command processor selected may include a search engine processor, such as one located on a search server, configured to execute a search command and determine search results, which may include output text data to be processed by a text-to-speech engine and output from a device as synthesized speech.
If the NLU output includes a command to obtain content from another source, the command processor or other component, through an application program interface (API), may send a request for such content to an appropriate application server or other device. The application server may send the content, for example audio content, to the command processor or other component. In certain instances, the output content sent from the application server may include a link that may be sent from the server(s) 320 to the local device 110 closest to the user so that device 110 may use the link to access the output content desired by the user. In this case the output content data may be sent from the application server through the server(s) 320 to the nearest device 110 or directly from the application server to the nearest device 110 (or some other destination appropriate to the command). In certain instances the output content data may be audio data (such as music, a prerecorded reading of an audio book, etc.) and thus may be output through a speaker of the local device 110. In other instances the output content data may be text data (either generated by the application server or by a component of the server(s) 320) that needs to be converted into audio data prior to being output to a user using the local device 110.
The translation package 516 may also include a dynamic background translation model 508A and a dynamic client translation model 508B. A combined translation model (not shown in
In some configurations, the translation package 516 also includes a tokenization/de-tokenization model 560. The tokenization/de-tokenization model 560 can be generated by a tokenization process and utilized at translation time to tokenize and/or de-tokenize an input segment 524 that is to be translated. The translation package 516 can also include a term dictionary 520 that includes translations for client-specific words or phrases. The term dictionary 520 can be utilized to ensure that specified words or phrases are translated in the same manner regardless of the context within which they appear.
The illustrated translation package 516 also includes a machine translation decoder 524. In one particular configuration, the machine translation decoder 524 is the MOSES open-source statistical machine translation system. Other statistical machine translation decoders can be utilized in other configurations. The configuration file 570 can include data for configuring the machine translation decoder 524 in various ways. Additional details regarding the MOSES open-source statistical machine translation system can be found at statmt.org/moses/.
As shown in
As shown, the translation workflow 504 begins with the tokenization process 512. The tokenization process 512 tokenizes the input segment 524 by breaking the text into discrete units. For example, and without limitation, the tokenization process 512 can separate punctuation characters, perform normalization on the text, and break apart contractions.
The tokenization process 512 provides the tokenized input segment 524 to the de-tagging process 504. The de-tagging process 504 removes any markup tags (e.g. HTML tags) that appear in the input segment 524. As will be described in greater detail below, the removed markup tags can be added to the translated segment 526 by the re-tagging process 526. In this manner, formatting contained in the input segment 524 can be preserved in the translated segment 526.
The tokenized and de-tagged input segment 524 is provided to the constrain process 518 in one configuration. The constrain process 518 utilizes the term dictionary 520 to translate specified words or phrases identified in the Willi dictionary 520. As mentioned above, this enables a specific translation of a word or phrase to be performed regardless of the context in which the word or phrase appears. Other types of constraints can also be utilized in other configurations instead of or in addition to the term dictionary 520.
The next step in the translation workflow 504 is the translation process 522. The translation process 522 utilizes the machine translation decoder 524 to translate the input segment 524 into the target language. In this regard, the machine translation decoder 524 can utilize the dynamic background translation model 508A, the dynamic client translation model 508B, and a combined translation model, if present, to dynamically learn a model that can be utilized to translate the input segment 524 specifically to one or more candidate translations of the input segment 524 in the target language.
The translation models 508 can provide various feature scores for the candidate translations. Similarly, the machine translation decoder 524 can utilize the background language model 510A, the client language model 510B, and the cluster-based language model 510C to also generate feature scores for the candidate translations. The model weights 514 can then be utilized to weight the various contributions from the language models 510 and the translation models 508. The weighted feature scores can then be utilized to combine various candidate translations to form a translation of the input segment 524. In some implementations, the weighted feature scores can be used to identify the N-best translations of the input segment along with associated scores, etc. Like the ASR engine 304, the translation process 522 may also output multiple hypotheses (and back-translations of the same) in the form of a lattice with each hypothesis corresponding to a confidence score or other score (e.g., such as probability scores, etc.). Such an N-best translation results lattice may include multiple portions corresponding to respective sub-segments of the input segment 524, so that an N-best translation results list (including corresponding back-translations of items on the list) may be derived for any such sub-segment and corresponding portion of the lattice.
As mentioned briefly above, the re-tagging process 526 can then be performed to re-apply any formatting removed from the input segment 524 by the de-tagging process 504. Subsequently, the de-tokenization process 528 can utilize the tokenization/de-tokenization model 514 to de-tokenize the translated segment 526. For example, and without limitation, the de-tokenization process 528 can attach punctuation to the translated segment 526 that was separated by the tokenization process 512. As another example, the de-tokenization process 528 can merge contractions that were broken apart by the tokenization process 512. The de-tokenization process 528 can also perform other functionality not specifically mentioned herein.
In one configuration, a stylization process 550 is also performed as a part of the translation workflow 504. The stylization process 550 utilizes pre-defined lists of client-specific rules to stylize the translated segment 526. For example, and without limitation, spaces can be inserted before measurements or a certain type of quotation marks can be utilized for a specific language. Other types of client-specific stylizations that are to be applied to the translated segment 526 can also be defined and utilized in a similar manner.
Once the translation workflow 504 has completed, the translation results can be returned in response to the request to translate the input segment 524 from the source language to the target language. For example, translation results in the form of a single translation of the input segment 524, an N-best list including multiple hypotheses, corresponding back-translations, and respective scores, an N-best translation results lattice containing multiple hypotheses, corresponding back-translations, and respective scores for respective sub-segments of the input segment 524, etc., may be sent to the MT engine 308 discussed above, which may be located on the same or a different server than the translation service 312.
In order to generate the translation package 516, a workflow 606 is performed for generating dynamic translation models 508 for the source and target languages, and for generating language models 510 for the target language. The workflow 606 takes non-domain-specific background training data 602 as input. The background training data 602A, for example, may be a collection of sentences or paragraphs expressed in the source language, and the background training data 602B may be the same collection of sentences or paragraphs that have been expressed in the target language.
In a similar fashion, the workflow 606 also takes as input in-domain client training data 604. As with the background training data 602, the client training data 604A may be a collection of sentences or paragraphs expressed in the source language, and the client training data 604B may be the same collection of sentences or paragraphs that have been expressed in the target language. In one specific implementation, the non-domain-specific background training data 602 is translations of books and the in-domain client training data 604 are product descriptions for products offered through an e-commerce merchant. Other types of in-domain and out-of-domain training data can be utilized in other configurations.
As shown in
In order to generate the translation package 516, a workflow 612 is also executed for performing large-scale discriminative training to generate model weights 514 for the dynamic translation models 508 and the language models 510. In one configuration, the margin relaxed infused algorithm (“MIRA”) is utilized to perform the large-scale discriminative training Other algorithms can also be utilized in other configurations.
As illustrated in
Once the model weights 514 have been generated, the dynamic translation models 508, the language models 510, and the model weights 514 are added to the translation package 516. The translation package 516 can then be deployed to one or more servers 320 in a service provider network 620 and utilized with an translation service 312 to perform translations, as discussed above in connection with
As discussed briefly above, the service provider network 620 can be configured to execute various types of network services. For example, and without limitation, the service provider network 620 can execute the ASR engine 304 shown in
In one particular configuration, a workflow 628 can also be performed for rapid adaptation of the dynamic translation models 508, the language models 510, and the model weights 514. In order to perform rapid adaption of these components, the workflow 628 takes as input incremental in-domain client training data 604E-604F. For example, translations generated by the statistical machine translation system shown in
In one particular configuration, the machine translated segments 526 can be presented to users of a Web site, such as an e-commerce site. For example, and without limitation, an appropriate UI can be presented to users of an e-commerce site that include machine translated segments 526 of product or service descriptions or related content. The UI can also provide UI controls to query the user as to whether the translation appears correct and, if not, to provide the correct translation. The human post-edited translations can then be utilized as the incremental client training data 604E-604F for use in rapidly adapting the dynamic translation models 508, the language models 510, and the model weights 514 in the manner described above. In this regard, it should be appreciated that other types of UIs can be utilized in other environments for obtaining human post-edited translations for use as the incremental client training data 604.
In some implementations, user corrections of translations performed by the translation service 312, e.g., a user's selection of an alternate N-best MT result, as discussed above in connection with screen 206 in
The workflow 628 can also generate an updated translation package and deploy the updated translation package to the service provider network 620 in place of a previous version of the translation package 516. Additional details regarding the workflow 628 for performing rapid adaptation of the dynamic translation models 508, the language models 510, and the model weights 514 will be provided below with regard to
It should be appreciated that the workflows 606 and 612 may be implemented in one particular configuration utilizing the open-source DUCTTAPE workflow management system. Additional software components can then be utilized to encapsulate the resulting language models 510, translation models 508, model weights 514, and other components into a translation package 516, such as a software container, that can be deployed into a production environment, such as the service provider network 620. Once deployed, the translation package 516 can be utilized to respond to translation requests received from service clients.
It should also be appreciated that the various models shown in
In a similar fashion, the workflow 606 also takes as input in-domain client training data 604. As with the background training data 602, the client training data 604A may be a collection of sentences or paragraphs expressed in the source language, and the client training data 604B may be the same collection of sentences or paragraphs that have been expressed in the target language. The client training data 604A and 604B may be referred to herein collectively as “client training data 604.” The dotted lines in
The first step of the workflow 606 illustrated in
The filtering process 708 removes text from the tokenized background training data 602 and the client training data 604 that is not suitable for inclusion in the dynamic translation models 508 or for use in training the language models 510. For example, and without limitation, the filtering process 708 might remove very long sentences that are not useful for creating the language models 510. Similarly, the filtering process 708 can remove mismatched sentences that are not appropriate for use in the dynamic translation models 508. Other types of filtering can be performed. The tokenized and filtered background training data 602 and client training data 604 is then provided to the word alignment process 710. The tokenized and filtered background training data 602 and client training data 604 in the target language is also provided to the language modeling process 718 and the clustering process 714. Each of these processes is described in detail below.
The word alignment process 710 utilizes unsupervised machine learning to learn a word alignment model 702 describing word-level correspondences between the training data in the source language and the training data in the target language. For example, and without limitation, the word alignment process 710 can learn word-level correspondences between the out-of-domain background training data 602A in the source language and the background training data 602B in the target language. Similarly, the word alignment process 710 can learn word-level correspondences between the in-domain client training data 604A in the source language and the client training data 604B in the target language. The word alignment model 702 can be saved for use during the rapid retraining process described below with regard to
The data indexing process 712 indexes the tokenized, filtered, and word-aligned background training data 602 to create a dynamic background data translation model 508A. The data indexing process 712 also indexes the tokenized, filtered, and word-aligned client training data 604 to create a dynamic client data translation model 508B. In some configurations, a combined translation model (not shown in
The indexed background training data 602 and client training data 604 stored in the dynamic background translation model 508A and the dynamic client data translation model 508B, respectively, can be searched at translation time to generate candidate translations of phrases in an input segment 524. In one particular implementation, the translation models 508 are implemented utilizing suffix array data structures. Other data structures can be utilized in other configurations to index the background training data 602 and the client training data 604 in a manner suitable for efficient searching at run time. As will also be described in greater detail below, incremental background and client training data can be added to the dynamic background translation model 508A and the dynamic client data translation model 508B, respectively, without rebuilding the entire index. Details regarding this process are provided below with regard to
As discussed briefly above, the tokenized and filtered background training data 602 and client training data 604 in the target language is also provided to the language modeling process 718. The language modeling process 718 utilizes the background training data 602 to generate a background language model 510A for the target language. The language modeling process 718 also utilizes the client training data 604 to generate a client language model 510B for the target language. In some configurations, the language modeling process 718 also generates a combined language model (not shown in
As also discussed briefly above, the tokenized and filtered background training data 602 and client training data 604 in the target language is also provided to the clustering process 714. The clustering process 714 first creates a cluster map 716 by assigning each word in the target language to a cluster, a group of words that occur in similar contexts. In one particular implementation, for example, the Brown clustering algorithm is utilized to cluster the words in the tokenized and filtered background training data 602 and client training data 604 in the target language. As known to those skilled in the art, Brown clustering is an agglomerative, bottom-up form of clustering that groups words (i.e., types) into a binary tree of classes using a merging criterion based on the log-probability of a text under a class-based language model (i.e. a probability model that takes the clustering into account). Details regarding one particular implementation of the Brown hierarchical word clustering algorithm in the C++ programming language can be found at cs.stanford.edu/˜pliang/and github.com/percyliang/brown-cluster, both of which are incorporated herein by reference in their entirety.
Using the Brown clustering algorithm, monolingual text can be examined to identify words that tend to be used in the same way and appear in the same context. These words can then be mapped to the same cluster. The words in the background training data 602 and client training data 604 in the target language can then be replaced by unique cluster identifiers (“IDs”) for the clusters they have been mapped to. A language model can then be built over the sequences of cluster IDs, as described in greater detail below.
Once the cluster map 716 has been established, a statistical cluster-based language model 510C is trained by mapping the target-language words in the language model training data to a cluster. As discussed above, the cluster-based language model 510C is then trained on the resulting cluster sequences. In one particular implementation, the cluster-based language model 510C is generated using the open-source KENLM language model generating tool. Additional details regarding the KENLM language model generating tool can be found at kheafield.com/code/kenlm/.
It should be appreciated that other language model generation tools or toolkits can be utilized in other configurations. In this regard, it should also be appreciated that while a single cluster-based language model 510C is shown in
As will be described in greater detail below, a run time capability for mapping lexical tokens to their appropriate word clusters in real time during decoding is also provided. This abstraction permits language models to recognize and statistically model much longer spans of text than previously possible, effectively modeling natural language patterns rather than just “raw” sentences in the language. In practice, this capability nearly doubles the context length that the disclosed statistical machine translation system can reliably use as a source of language model information. In this regard, it should be appreciated that the cluster-based language model 510C can be utilized in addition to the standard lexical-level language models 510A and 510B. Other configurations can also be utilized.
Due to the large number of feature scores 804 that are generated by the multiple translation and language models, the traditional line search approach to machine translation system optimization is insufficient. In order to address this consideration, and potentially others, the statistical machine translation system disclosed herein utilizes a large-scale discriminative training process 802 to generate optimized model weights 514 for the various feature scores 804. As mentioned above, in one configuration the MIRA algorithm is utilized to implement the large-scale discriminative training process 802. Other algorithms can also be utilized in other configurations.
As illustrated in
The large-scale discriminative training process 802 utilizes the additional client tuning data 604C and 604D and the feature scores 804 generated by the various translation and language models to optimize the model weights 514. The large-scale discriminative training process 802 also utilizes the cluster map 716 to map the additional client data 604 in the target language into clusters. Once the model weights 514 have been generated, they can then be applied to feature scores 804 for phrases in the candidate translations at run time. Additional details regarding this process are provided below.
It should be appreciated that, in one configuration, the statistical machine translation system described above does not have any in-domain client training data 604 available at the time of initial training. In this scenario, the translation package 516 can be generated utilizing only the out-of-domain training data 602. Subsequently, as in-domain client data is received, such as post-edited translations generated by the machine translation system, the system can be rapidly adapted in the manner described below with regard to
In another scenario, the in-domain client training data 604 is extracted from the out-of-domain background training data 602. For example, and without limitation, a portion of the non-domain-specific background training data 602 that is relevant to the text to be translated at run time can be extracted from the non-domain-specific background training data 602. The relevant portion of the non-domain-specific background training data 602 can be selected utilizing various statistical methods. For example, and without limitation, various mechanisms can be utilized to select a portion of the out-of-domain data that is most similar to the data to be translated. This can be done in several ways. In particular, out-of-domain sentences that have high n-gram overlap (for example, phrases of two consecutive words) with the monolingual or in-domain data can be utilized as in-domain data. As another example, sentences that have a high likelihood according to a statistical language model trained on the monolingual in-domain data can also be utilized as in-domain data. Other mechanisms may be utilized in other configurations. The selected subset of the non-domain-specific background training data 602 can then be utilized as the initial set of in-domain client training data 604.
The in-domain incremental client training data 604E-604F is first tokenized by the tokenization process 806 described above. The filtering process 808, which was also described above, can then be applied to the incremental client training data 604E-604F. The word alignment process 810 can then utilize the previously learned word alignment model 802 to word align text in the incremental client training data 604E-604F. By using the previously generated word alignment model 802, word alignment of the incremental client training data 604E-604F can be performed more quickly than if word alignment were performed from scratch.
Once the incremental client training data 604E-604F has been tokenized, filtered, and word-aligned, the data indexing process 812 creates an updated dynamic client translation model 508B′ by indexing the incremental client training data 604E-604F. For example, and without limitation, in configurations where the dynamic client translation model 508B is implemented using a suffix array data structure, the incremental client training data 604E-604F can be added to the suffix array data structure in order to create the updated dynamic client translation model 508B′.
As shown in
In one particular configuration, an out-of-band process can be performed for identifying newly formed Brown clusters that are not well defined. This process can also work proactively to obtain data to build out the newly formed Brown clusters. For example, and without limitation, sentence variants can be recommended based on existing training data, or a search may be made for variants across a cross-domain training repository. In this manner, the cluster map 816 can be independently improved out-of-band without relying on the availability of new training data (i.e. the incremental client training data 604E-604F).
As will be described in greater detail below, the workflow 628 illustrated in
As mentioned above, an updated translation package (not shown in
As also mentioned briefly above, comparative testing is performed in some configurations between the earlier version of the translation package 516 and the updated translation package. The updated translation package can then be deployed, such as within the service provider network 620, in place of the previously deployed translation package 516 based upon the results of the testing. For example, and without limitation, the updated translation package is deployed in one configuration if the quality of the translations it generates are as good as or better than translations generated by the previously deployed translation package 516.
At step 1004, the top result of the N-best ASR result list for the entire utterance, e.g. a sentence, is sent to a parsing service 310, which may be located on the same or a different server than the MT engine 308. At step 1006, the MT engine 308 receives information from the parsing service 310 that identifies groups of linked words and phrases within the text of the transmitted top ASR result. The parsing service 310 may, for example, break down the received text into respective phrases (e.g., noun phrases, verb phrases, gerund phrases, infinitive phrases, appositive phrases, adverbial phrases, adjectival phrases, participial phrases, prepositional phrases, absolute phrases, etc.) and possibly sub-phrases, i.e., phrases contained within other phrases, and use metadata or some other technique to link together the individual sub-phrases contained within each phrase and/or the individual words contained within each identified phrase or sub-phrase. In some embodiments, the parsing service 310 can evaluate the text using grammar rules and/or dictionaries for the language in which the sentence is written to identify the respective phrases and sub-phrases it contains.
At step 1008, the text of the top result of the N-best ASR result list for the entire utterance is sent to the translation service 312 for translation into another language (e.g., Spanish). The translation service 312 may also be on the same or a different server than the MT engine 308. The translation service 312 may then process the received text as an input segment 524 (shown in
At step 1010, the MT engine 308 receives the N-best translation results lattice from the translation service 312. As explained in more detail below in connection with steps 1118 and 1120 of routine 1100 shown in
At step 1012, the MT engine 308 retrieves information about individual words in the text of the top result of the N-best ASR result list as well as in the top result of the N-best translation result for that text. The MT engine 308 may, for example, access one or more dictionary sources on a local or remote database. In some implementations, dictionary definitions from publically accessible websites can be retrieved. In other implementations, proprietary dictionary information can be used. Where, for example, the translation service 312 translates text from English to Spanish, for individual words in the text of the top ASR result for the entire utterance, definitions from an English-to-Spanish translation dictionary can be retrieved, and, for individual results in the top translation result for the text, definitions from a Spanish-to-English translation dictionary can be retrieved. As explained in more detail below in connection with step 1104 of
At step 1014, the MT engine 308 creates a table or similar data structure linking words and word groups (i.e., phrases and sub-phrases) in the text of the top ASR result for the entire sentence with corresponding words and word groups for the top translation result for that text. This table can be created, for example, by stepping through each word and word group identified in the information received by the parsing service 310 at step 1006 and identifying one or more words in the top translation result that correspond to that word or word group. In some implementations, the information retrieved from dictionary sources and/or information in the N-best translation results lattice can be used to facilitate this task. As discussed above in connection with step 130 of routine 100 shown in
Finally, at step 1016, the ASR results lattice received from the NLU engine 308 at step 1002, the translation results lattice received from the translation service 312 at step 1010, the dictionary information retrieved at step 1012, and the table created at step 1014 may be sent to the user device 110 to implement the user-interface and functionality described above in connection with
As noted previously,
When the selected item is not a single word, on the other hand, a determination is made (step 1106) as to whether the selected multi-word item is in the original language (i.e., the language in which the ASR results are processed) or in the translated language (e.g., Spanish). When it is determined at step 1106 that the selected item is in the original language, the N-best ASR results corresponding to the selected item can be displayed in a box 236 (step 1108). The corresponding N-best ASR results can be identified, for example, by evaluating the N-best ASR results lattice received from the MT engine 308 (see step 1016 in
When one of the displayed ASR results is selected (see step 1110), the highlighted item can be replaced with the selected alternative ASR result (step 1112), the displayed sentences in both languages can be deleted from the display 104 (step 1114), and the sentence containing the selected alternate ASR result can be sent to the ASR engine 308 for processing (step 1116), e.g., in the same way a new sentence received from the NLU engine 306 is processed, as described above. In some implementations, such user selections of alternative ones of the N-best ASR results (or other corrective actions taken by users 102) may be used to train the ASR engine 304 by appropriately adjusting one or more acoustic models and/or language models the ASR engine 304 employs, which models are discussed in more detail above in connection with
When it is determined at step 1106 that the selected item is in the translated language, the N-best translation results corresponding to the selected item can be displayed in a box 236 (step 1118). The corresponding N-best translation results can be identified, for example, by evaluating the N-best translation results lattice received from the MT engine 308 (see step 1016 in
When one of the displayed N-best translation results is selected (see step 1120), the highlighted item can be replaced with the selected alternative translation result (step 1122), and the corresponding segment(s) in the original language can be replaced with the back translation associated with the selected alternative translation result (step 1124). In some implementations, such user selections of alternative ones of the N-best translation results (or other corrective actions taken by users) may be used to train the MT engine 308 by appropriately adjusting one or more translation models, language models, and/or model weights the MT engine 308 employs, which items are discussed in more detail above in connection with
Various machine learning techniques may be used to perform the training of various models used by the above components. For example, components of ASR engine 304, NLU engine 306, MT engine 308, parsing service 310, translation service 312, or others may use various trained models. Models may be trained and operated according to various machine learning techniques. Such techniques may include, for example, inference engines, trained classifiers, etc. Examples of trained classifiers include conditional random fields (CRF) classifiers, Support Vector Machines (SVMs), neural networks (such as deep neural networks and/or recurrent neural networks), decision trees, AdaBoost (short for “Adaptive Boosting”) combined with decision trees, and random forests. Focusing on CRF as an example, CRF is a class of statistical models used for structured predictions. In particular, CRFs are a type of discriminative undirected probabilistic graphical models. A CRF can predict a class label for a sample while taking into account contextual information for the sample. CRFs may be used to encode known relationships between observations and construct consistent interpretations. A CRF model may thus be used to label or parse certain sequential data, like query text as described above. Classifiers may issue a “score” indicating which category the data most closely matches. The score may provide an indication of how closely the data matches the category.
In order to apply the machine learning techniques, the machine learning processes themselves need to be trained. Training a machine learning component such as, in this case, one of the first or second models, requires establishing a “ground truth” for the training examples. In machine learning, the term “ground truth” refers to the accuracy of a training set's classification for supervised learning techniques. For example, known types for previous queries may be used as ground truth data for the training set used to train the various components/models. Various techniques may be used to train the models including backpropagation, statistical learning, supervised learning, semi-supervised learning, stochastic learning, stochastic gradient descent, or other known techniques. Thus, many different training examples may be used to train the classifier(s)/model(s) discussed herein. Further, as training data is added to, or otherwise changed, new classifiers/models may be trained to update the classifiers/models as desired.
Each of these devices (110/320) may include one or more controllers/processors (1204/1304) that may each include a central processing unit (CPU) for processing data and computer-readable instructions, and a memory (1206/1306) for storing data and instructions of the respective device. The memories (1206/1306) may individually include volatile random access memory (RAM), non-volatile read only memory (ROM), non-volatile magnetoresistive (MRAM) and/or other types of memory. Each device (110/320) may also include a data storage component (1208/1308), for storing data and controller/processor-executable instructions. Each data storage component may individually include one or more non-volatile storage types such as magnetic storage, optical storage, solid-state storage, etc. Each device (110/320) may also be connected to removable or external non-volatile memory and/or storage (such as a removable memory card, memory key drive, networked storage, etc.) through respective input/output device interfaces (1202/1302).
Computer instructions for operating each device (110/320) and its various components may be executed by the respective device's controller(s)/processor(s) (1204/1304), using the memory (1206/1306) as temporary “working” storage at runtime. A device's computer instructions may be stored in a non-transitory manner in non-volatile memory (1206/1306), storage (1208/1308), or an external device(s). Alternatively, some or all of the executable instructions may be embedded in hardware or firmware on the respective device in addition to or instead of software.
Each device (110/320) includes input/output device interfaces (1202/1302). A variety of components may be connected through the input/output device interfaces (1202/1302), as will be discussed further below. Additionally, each device (110/320) may include an address/data bus (1224/1324) for conveying data among components of the respective device. Each component within a device (110/320) may also be directly connected to other components in addition to (or instead of) being connected to other components across the bus (1224/1324).
Referring to
For example, via antenna(s) 1214, the input/output device interfaces 1202 may connect to one or more networks 322 via a wireless local area network (WLAN) (such as WiFi) radio, Bluetooth, and/or wireless network radio, such as a radio capable of communication with a wireless communication network such as a Long Term Evolution (LTE) network, WiMAX network, 3G network, 4G network, etc. A wired connection such as Ethernet may also be supported. Through the network(s) 322, the speech processing system may be distributed across a networked environment.
The device 110 and/or the server 320 may include components of an ASR engine 304, an NLU engine 306, an MT engine 308, a parsing service 310, and/or a translation service 312, such as those described above. In some implementations, the ASR engine 304 in the device 110 may be of limited or extended capabilities. The ASR engine 304 may include the language models 454 stored in ASR model storage component 452. If limited speech recognition is included, the ASR engine 304 may be configured to identify a limited number of words, whereas extended speech recognition may be configured to recognize a much larger range of words. As noted above, multiple devices may be employed in a single speech processing system. In such a multi-device system, each of the devices may include different components for performing different aspects of the ASR, NLU, parsing, and translation functionality described herein. The multiple devices may include overlapping components. The components of the device 110 and the server(s) 320, as illustrated in
As illustrated in
The concepts disclosed herein may be applied within a number of different devices and computer systems, including, for example, general-purpose computing systems, speech processing systems, and distributed computing environments.
The above aspects of the present disclosure are meant to be illustrative. They were chosen to explain the principles and application of the disclosure and are not intended to be exhaustive or to limit the disclosure. Many modifications and variations of the disclosed aspects may be apparent to those of skill in the art. Persons having ordinary skill in the field of computers and speech processing should recognize that components and process steps described herein may be interchangeable with other components or steps, or combinations of components or steps, and still achieve the benefits and advantages of the present disclosure. Moreover, it should be apparent to one skilled in the art that the disclosure may be practiced without some or all of the specific details and steps disclosed herein.
Aspects of the disclosed system may be implemented as a computer method or as an article of manufacture such as a memory device or non-transitory computer readable storage medium. The computer readable storage medium may be readable by a computer and may comprise instructions for causing a computer or other device to perform processes described in the present disclosure. The computer readable storage medium may be implemented by a volatile computer memory, non-volatile computer memory, hard drive, solid-state memory, flash drive, removable disk, and/or other media. In addition, components of one or more of the modules and engines may be implemented as in firmware or hardware, such as the AFE 456, which comprises, among other things, analog and/or digital filters (e.g., filters configured as firmware to a digital signal processor (DSP)).
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 other 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.
Disjunctive language such as the phrase “at least one of X, Y, Z,” unless specifically stated otherwise, is otherwise understood with the context as used in general to present that an item, term, etc., may be either X, Y, or Z, or any combination thereof (e.g., X, Y, and/or Z). Thus, such disjunctive language is not generally intended to, and should not, imply that certain embodiments require at least one of X, at least one of Y, or at least one of Z to each be present. As used in this disclosure, the term “a” or “one” may include one or more items unless specifically stated otherwise. Further, the phrase “based on” is intended to mean “based at least in part on” unless specifically stated otherwise.
Number | Name | Date | Kind |
---|---|---|---|
6442524 | Ecker | Aug 2002 | B1 |
7539619 | Seligman | May 2009 | B1 |
20070203688 | Fuji | Aug 2007 | A1 |
20080221898 | Cerra | Sep 2008 | A1 |
20090234647 | Scholz | Sep 2009 | A1 |
20090248392 | Talwar | Oct 2009 | A1 |
20110153324 | Ballinger | Jun 2011 | A1 |
20120123765 | Estelle | May 2012 | A1 |
20120131520 | Tang | May 2012 | A1 |
20120296635 | Brockett | Nov 2012 | A1 |
20130130209 | Fischler | May 2013 | A1 |
20130144592 | Och | Jun 2013 | A1 |
20130191108 | Anisimovich | Jul 2013 | A1 |
20130268259 | Kim | Oct 2013 | A1 |
20140006007 | Sumita | Jan 2014 | A1 |
20140180670 | Osipova | Jun 2014 | A1 |
20140242955 | Kang | Aug 2014 | A1 |
20150019240 | Yin | Jan 2015 | A1 |
20150347389 | Lee | Dec 2015 | A1 |
20160267074 | Nozue | Sep 2016 | A1 |
20160350290 | Fujiwara | Dec 2016 | A1 |
20170031901 | Song | Feb 2017 | A1 |
20170148436 | Sugiura | May 2017 | A1 |
20170364512 | Han | Dec 2017 | A1 |
20180336891 | Sun | Nov 2018 | A1 |
20190034080 | Nagel | Jan 2019 | A1 |