During text-to-speech processing, audio data corresponding to a word part, word, or group of words is generated using a trained model and used by a unit selection engine to create output audio. The audio data is generated at least when an input word is unrecognized or when a cost of a unit selection is too high.

BACKGROUND

Text-to-speech (TTS) systems convert written text to sound. This can be useful to assist users of digital text media by synthesizing speech representing text displayed on a computer screen. Speech recognition systems have also progressed to the point where humans can interact with and control computing devices by voice. TTS and speech recognition combined with natural language understanding processing techniques enable speech-based user control and output of a computing device to perform tasks based on the user's spoken commands. The combination of speech recognition and natural language understanding processing is referred to herein as speech processing. Such TTS and 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.

DETAILED DESCRIPTION

Text-to-speech (TTS) systems typically work using one of two techniques, each of which is described in more detail below. A first technique, called unit selection or concatenative TTS, processes and divides pre-recorded speech into many different segments of audio data, called units. The pre-recorded speech may be obtained by recording a human speaking many lines of text. Each segment that the speech is divided into may correspond to a particular audio unit such as a phoneme, diphone, or other length of sound. The individual units and data describing the units may be stored in a unit database, also called a voice corpus or voice inventory. When text data is received for TTS processing, the system may select the units that correspond to how the text should sound and may combine them to generate, i.e., synthesize, the audio data that represents the desired speech.

A second technique, called parametric synthesis or statistical parametric speech synthesis (SPSS), may use computer models and other data processing techniques to generate sound that is not based on pre-recorded speech (e.g., speech recorded prior to receipt of an incoming TTS request) but rather uses computing parameters to create output audio data. Vocoders are examples of components that can produce speech using parametric synthesis. Parametric synthesis may provide a large range of diverse sounds that may be computer-generated at runtime for a TTS request.

Each of these techniques, however, suffer from drawbacks. For unit selection, it may take many hours of recorded speech to create a sufficient voice inventory for eventual unit selection. Further, in order to have output speech having desired audio qualities, the human speaker used to record the speech needs to speak with the desired audio quality, which can be time consuming. For example, if the system is to be configured to be able to synthesize whispered speech using unit selection, a human user may need to read text in a whisper for hours to record enough sample speech to create a unit selection voice inventory that can be used to synthesized whispered speech. The same is true for speech with other qualities such as stern speech, excited speech, happy speech, etc. Thus, a typical voice inventory only includes mostly neutral speech or speech that does not typically include such extreme emotive or other non-standard audio characteristics. Further, a particular voice inventory may be recorded by a particular voice actor fitting a certain voice profile and in a certain language, e.g., male Australian English, female Japanese, etc. To configure individual voice inventories for all the combinations of language, voice profiles, audio qualities, etc., may be prohibitive.

Parametric synthesis, while typically more flexible at runtime, has historically not been able to create more natural sounding output speech than unit selection. While a model may be trained to predict, based on input text, speech parameters—i.e., features that describe a speech waveform to be created based on the speech parameters—parametric systems still require that manually crafted assumptions be used to create the vocoders, which lead to a reduction in generated speech quality. Hybrid synthesis, which combines aspects of unit selection and parametric synthesis, may, however, still lead to less natural sounding output than custom-tailored unit selection due to reliance on parametric synthesis when no appropriate unit may be suitable for given input text.

To address these deficiencies, a speech model may be trained to directly generate audio output waveforms sample-by-sample. The speech model may be trained to generate audio output that resembles a vocal attribute—such as a style, tone, language, or other vocal attribute of a particular speaker—using training data from one or more human speakers. The speech model may create tens of thousands of samples per second of audio; in some embodiments, the rate of output audio samples is 16 kHz. The speech model may be fully probabilistic and/or autoregressive; the predictive distribution of each audio sample may be conditioned on all previous audio samples. As explained in further detail below, the speech model may use causal convolutions to predict output audio; in some embodiments, the speech model uses dilated convolutions to generate an output sample using a greater area of input samples than would otherwise be possible. The speech model may be trained using a conditioning model that conditions hidden layers of the network using linguistic context features, such as phoneme and/or diphone data. The audio output generated by the speech model may have higher audio quality than either unit selection or parametric synthesis.

This type of direct generation of audio waveforms using a speech model may be, however, computationally expensive, and it may be difficult or impractical to produce an audio waveform quickly enough to provide real-time responses to incoming text, audio, or other such queries. A user attempting to interact with a system employing such a speech model may experience unacceptably long delays between the end of a user query and the beginning of a system response. The delays may cause frustration to the user or may even render the system unusable if real-time responses are required (such as systems that provide driving directions, for example).

The present disclosure recites systems and methods for augmenting unit-selection-based systems with a speech model that selectively generates audio waveforms for use with the unit-selection system. The speech model may also be referred to as a trained model. As explained in greater detail below, the speech model may include a sample model, a conditioning model, and/or an output model—which may also be referred to as a sample network, conditioning network, and/or output network, respectively. In various embodiments, when the system determines that a particular word, grapheme, phoneme, diphone, or other such input data and/or generated output audio data does not have a corresponding unit in a unit library that matches within an acceptable threshold, the speech model may be used to generate that unit. The new unit may be generated in real time to respond to an incoming request or command and/or generated during and/or after the response is generated; this new unit may be stored and used in later responses. The determination that there is no acceptably matching unit may be performed, for example, by a TTS front end (by analyzing, for example, text data generated for a response to a request or command), during unit selection, in the TTS back end (by, analyzing, for example, audio data generated in response to the request or command), or elsewhere in the TTS system.

An exemplary system overview is described in reference toFIG. 1. As shown inFIG. 1, a system100may include one or more server(s)120connected over a network199to one or more device(s)110that are local to a user10. The server(s)120may be one physical machine capable of performing various operations described herein or may include several different machines, such as in a distributed computing environment, that combine to perform the operations described herein. The server(s)120and/or device(s)110may produce output audio15in accordance with the embodiments described herein. The server(s)120receives (130) first text data and determines (132) that a speech unit database lacks audio corresponding to a portion of the first text data. The server(s)120transmit (134) to a speech model, second text data including at least the portion of the first data. The server(s) generate (136), using a speech model, second audio data corresponding to the second text data. The server(s) determine (138), using the speech model, the output audio data.

Components of a system that may be used to perform unit selection, parametric TTS processing, and/or model-based audio synthesis are shown inFIG. 2. In various embodiments of the present invention, model-based synthesis of audio data may be performed by a speech model222and a TTS front-end216. The TTS front-end216may be the same as front ends used in traditional unit selection or parametric systems. In other embodiments, some or all of the components of the TTS front end216also based on other trained models. The present invention is not, however, limited to any particular type of TTS front end216.

As shown inFIG. 2, the TTS component/processor295may include a TTS front end216, a speech synthesis engine218, TTS unit storage272, and TTS parametric storage280. The TTS unit storage272may include, among other things, voice inventories278a-288nthat may include pre-recorded audio segments (called units) to be used by the unit selection engine230when performing unit selection synthesis as described below. The TTS parametric storage280may include, among other things, parametric settings268a-268nthat may be used by the parametric synthesis engine232when performing parametric synthesis as described below. A particular set of parametric settings268may correspond to a particular voice profile (e.g., whispered speech, excited speech, etc.). The speech model222may be used to synthesize speech without requiring the TTS unit storage272or the TTS parametric storage280, as described in greater detail below. In various embodiments, as also explained in greater detail below, a decision to use speech synthesized by the speech model222instead of or in addition to speech created by the unit selection engine230and/or parametric engine232may be made by a front-end hybrid decision engine236, a selection hybrid decision engine238, and/or a back-end hybrid decision engine240.

The TTS front end216transforms input text data210(for example from some speechlet component or other text source) into a symbolic linguistic representation, which may include linguistic context features, fundamental frequency information, or other such information, for processing by the speech synthesis engine218. The TTS front end216may also process tags or text metadata215input to the TTS component295that indicate how specific words should be pronounced, for example by indicating the desired output speech quality in tags formatted according to the speech synthesis markup language (SSML) or in some other form. For example, a first tag may be included with text marking the beginning of when text should be whispered (e.g., <begin whisper>) and a second tag may be included with text marking the end of when text should be whispered (e.g., <end whisper>). The tags may be included in the input text data and/or the text for a TTS request may be accompanied by separate metadata indicating what text should be whispered (or have some other indicated audio characteristic). The speech synthesis engine218compares the annotated phonetic units models and information stored in the TTS unit storage272and/or TTS parametric storage280for converting the input text into speech. The TTS front end216and speech synthesis engine218may include their own controller(s)/processor(s) and memory or they may use the controller/processor and memory of the server120, device110, or other device, for example. Similarly, the instructions for operating the TTS front end216and speech synthesis engine218may be located within the TTS component295, within the memory and/or storage of the server120, device110, or within an external device.

Text data210input into the TTS module295may be sent to the TTS front end216for processing. The front-end may include components for performing text normalization, linguistic analysis, linguistic prosody generation, or other such components. During text normalization, the TTS front end216may process the text input and generate standard text, converting such things as numbers, abbreviations (such as Apt., St., etc.), symbols ($, %, etc.) into the equivalent of written out words.

During linguistic analysis, the TTS front end216analyzes the language in the normalized text to generate a sequence of phonetic units corresponding to the input text. This process may be referred to as grapheme-to-phoneme conversion. Phonetic units include symbolic representations of sound units to be eventually combined and output by the system as speech. Various sound units may be used for dividing text for purposes of speech synthesis. The TTS component295may process speech based on phonemes (individual sounds), half-phonemes, di-phones (the last half of one phoneme coupled with the first half of the adjacent phoneme), bi-phones (two consecutive phonemes), syllables, words, phrases, sentences, or other units. Each word may be mapped to one or more phonetic units. Such mapping may be performed using a language dictionary stored by the system, for example in the TTS storage component272. The linguistic analysis performed by the TTS front end216may also identify different grammatical components such as prefixes, suffixes, phrases, punctuation, syntactic boundaries, or the like. Such grammatical components may be used by the TTS component295to craft a natural-sounding audio waveform output. The language dictionary may also include letter-to-sound rules and other tools that may be used to pronounce previously unidentified words or letter combinations that may be encountered by the TTS component295. Generally, the more information included in the language dictionary, the higher quality the speech output.

Based on the linguistic analysis the TTS front end216may then perform linguistic prosody generation where the phonetic units are annotated with desired prosodic characteristics, also called acoustic features, which indicate how the desired phonetic units are to be pronounced in the eventual output speech. During this stage the TTS front end216may consider and incorporate any prosodic annotations (for example as input text metadata215) that accompanied the text input to the TTS component295. Such acoustic features may include pitch, energy, duration, and the like. Application of acoustic features may be based on prosodic models available to the TTS component295. Such prosodic models indicate how specific phonetic units are to be pronounced in certain circumstances. A prosodic model may consider, for example, a phoneme's position in a syllable, a syllable's position in a word, a word's position in a sentence or phrase, neighboring phonetic units, etc. As with the language dictionary, prosodic model with more information may result in higher quality speech output than prosodic models with less information. Further, a prosodic model and/or phonetic units may be used to indicate particular speech qualities of the speech to be synthesized, where those speech qualities may match the speech qualities of input speech (for example, the phonetic units may indicate prosodic characteristics to make the ultimately synthesized speech sound like a whisper based on the input speech being whispered).

The output of the TTS front end216, which may be referred to as a symbolic linguistic representation, may include a sequence of phonetic units annotated with prosodic characteristics. This symbolic linguistic representation may be sent to the speech synthesis engine218, which may also be known as a synthesizer, for conversion into an audio waveform of speech for output to an audio output device and eventually to a user. The speech synthesis engine218may be configured to convert the input text into high-quality natural-sounding speech in an efficient manner. Such high-quality speech may be configured to sound as much like a human speaker as possible, or may be configured to be understandable to a listener without attempts to mimic a precise human voice.

The speech synthesis engine218may perform speech synthesis using one or more different methods. In one method of synthesis called unit selection, described further below, a unit selection engine230matches the symbolic linguistic representation created by the TTS front end216against a database of recorded speech, such as a database (e.g., TTS unit storage272) storing information regarding one or more voice corpuses (e.g., voice inventories278a-n). Each voice inventory may correspond to various segments of audio that was recorded by a speaking human, such as a voice actor, where the segments are stored in an individual inventory278as acoustic units (e.g., phonemes, diphones, etc.). Each stored unit of audio may also be associated with an index listing various acoustic properties or other descriptive information about the unit. Each unit includes an audio waveform corresponding with a phonetic unit, such as a short .wav file of the specific sound, along with a description of various features associated with the audio waveform. For example, an index entry for a particular unit may include information such as a particular unit's pitch, energy, duration, harmonics, center frequency, where the phonetic unit appears in a word, sentence, or phrase, the neighboring phonetic units, or the like. The unit selection engine230may then use the information about each unit to select units to be joined together to form the speech output.

The unit selection engine230matches the symbolic linguistic representation against information about the spoken audio units in the database. The unit database may include multiple examples of phonetic units to provide the system with many different options for concatenating units into speech. Matching units which are determined to have the desired acoustic qualities to create the desired output audio are selected and concatenated together (for example by a synthesis component220) to form output audio data290representing synthesized speech. Using all the information in the unit database, a unit selection engine230may match units to the input text to select units that can form a natural sounding waveform. One benefit of unit selection is that, depending on the size of the database, a natural sounding speech output may be generated. As described above, the larger the unit database of the voice corpus, the more likely the system will be able to construct natural sounding speech.

In another method of synthesis called parametric synthesis parameters such as frequency, volume, noise, are varied by a parametric synthesis engine232, digital signal processor or other audio generation device to create an artificial speech waveform output. Parametric synthesis uses a computerized voice generator, sometimes called a vocoder. Parametric synthesis may use an acoustic model and various statistical techniques to match a symbolic linguistic representation with desired output speech parameters. Using parametric synthesis, a computing system (for example, a synthesis component220) can generate audio waveforms having the desired acoustic properties. Parametric synthesis may include the ability to be accurate at high processing speeds, as well as the ability to process speech without large databases associated with unit selection, but also may produce an output speech quality that may not match that of unit selection. Unit selection and parametric techniques may be performed individually or combined together and/or combined with other synthesis techniques to produce speech audio output.

The TTS component295may be configured to perform TTS processing in multiple languages. For each language, the TTS component295may include specially configured data, instructions and/or components to synthesize speech in the desired language(s). To improve performance, the TTS component295may revise/update the contents of the TTS storage280based on feedback of the results of TTS processing, thus enabling the TTS component295to improve speech recognition.

The TTS storage module295may be customized for an individual user based on his/her individualized desired speech output. In particular, the speech unit stored in a unit database may be taken from input audio data of the user speaking. For example, to create the customized speech output of the system, the system may be configured with multiple voice inventories278a-278n, where each unit database is configured with a different “voice” to match desired speech qualities. Such voice inventories may also be linked to user accounts. The voice selected by the TTS component295to synthesize the speech. For example, one voice corpus may be stored to be used to synthesize whispered speech (or speech approximating whispered speech), another may be stored to be used to synthesize excited speech (or speech approximating excited speech), and so on. To create the different voice corpuses a multitude of TTS training utterances may be spoken by an individual (such as a voice actor) and recorded by the system. The audio associated with the TTS training utterances may then be split into small audio segments and stored as part of a voice corpus. The individual speaking the TTS training utterances may speak in different voice qualities to create the customized voice corpuses, for example the individual may whisper the training utterances, say them in an excited voice, and so on. Thus the audio of each customized voice corpus may match the respective desired speech quality. The customized voice inventory278may then be used during runtime to perform unit selection to synthesize speech having a speech quality corresponding to the input speech quality.

Additionally, parametric synthesis may be used to synthesize speech with the desired speech quality. For parametric synthesis, parametric features may be configured that match the desired speech quality. If simulated excited speech was desired, parametric features may indicate an increased speech rate and/or pitch for the resulting speech. Many other examples are possible. The desired parametric features for particular speech qualities may be stored in a “voice” profile (e.g., parametric settings268) and used for speech synthesis when the specific speech quality is desired. Customized voices may be created based on multiple desired speech qualities combined (for either unit selection or parametric synthesis). For example, one voice may be “shouted” while another voice may be “shouted and emphasized.” Many such combinations are possible.

Unit selection speech synthesis may be performed as follows. Unit selection includes a two-step process. First a unit selection engine230determines what speech units to use and then it combines them so that the particular combined units match the desired phonemes and acoustic features and create the desired speech output. Units may be selected based on a cost function which represents how well particular units fit the speech segments to be synthesized. The cost function may represent a combination of different costs representing different aspects of how well a particular speech unit may work for a particular speech segment. For example, a target cost indicates how well an individual given speech unit matches the features of a desired speech output (e.g., pitch, prosody, etc.). A join cost represents how well a particular speech unit matches an adjacent speech unit (e.g., a speech unit appearing directly before or directly after the particular speech unit) for purposes of concatenating the speech units together in the eventual synthesized speech. The overall cost function is a combination of target cost, join cost, and other costs that may be determined by the unit selection engine230. As part of unit selection, the unit selection engine230chooses the speech unit with the lowest overall combined cost. For example, a speech unit with a very low target cost may not necessarily be selected if its join cost is high.

The system may be configured with one or more voice corpuses for unit selection. Each voice corpus may include a speech unit database. The speech unit database may be stored in TTS unit storage272or in another storage component. For example, different unit selection databases may be stored in TTS unit storage272. Each speech unit database (e.g., voice inventory) includes recorded speech utterances with the utterances' corresponding text aligned to the utterances. A speech unit database may include many hours of recorded speech (in the form of audio waveforms, feature vectors, or other formats), which may occupy a significant amount of storage. The unit samples in the speech unit database may be classified in a variety of ways including by phonetic unit (phoneme, diphone, word, etc.), linguistic prosodic label, acoustic feature sequence, speaker identity, etc. The sample utterances may be used to create mathematical models corresponding to desired audio output for particular speech units. When matching a symbolic linguistic representation the speech synthesis engine218may attempt to select a unit in the speech unit database that most closely matches the input text (including both phonetic units and prosodic annotations). Generally the larger the voice corpus/speech unit database the better the speech synthesis may be achieved by virtue of the greater number of unit samples that may be selected to form the precise desired speech output. An example of how unit selection is performed is illustrated inFIGS. 3A and 3B.

For example, as shown inFIG. 3A, a target sequence of phonetic units310to synthesize the word “hello” is determined by a TTS device. As illustrated, the phonetic units310are individual diphones, though other units, such as phonemes, etc. may be used. A number of candidate units may be stored in the voice corpus. For each phonetic unit indicated as a match for the text, there are a number of potential candidate units304(represented by columns306,308,310,312and314) available. Each candidate unit represents a particular recording of the phonetic unit with a particular associated set of acoustic and linguistic features. For example, column306represents potential diphone units that correspond to the sound of going from silence (#) to the middle of an H sound, column306represents potential diphone units that correspond to the sound of going from the middle of an H sound to the middle of an E (in hello) sound, column310represents potential diphone units that correspond to the sound of going from the middle of an E (in hello) sound to the middle of an L sound, column312represents potential diphone units that correspond to the sound of going from the middle of an L sound to the middle of an O (in hello sound), and column314represents potential diphone units that correspond to the sound of going from the middle of an O (in hello sound) to silence.

The individual potential units are selected based on the information available in the voice inventory about the acoustic properties of the potential units and how closely each potential unit matches the desired sound for the target unit sequence302. How closely each respective unit matches the desired sound will be represented by a target cost. Thus, for example, unit #-H1will have a first target cost, unit #-H2will have a second target cost, unit #-H3will have a third target cost, and so on.

The TTS system then creates a graph of potential sequences of candidate units to synthesize the available speech. The size of this graph may be variable based on certain device settings. An example of this graph is shown inFIG. 3B. A number of potential paths through the graph are illustrated by the different dotted lines connecting the candidate units. A Viterbi algorithm may be used to determine potential paths through the graph. Each path may be given a score incorporating both how well the candidate units match the target units (with a high score representing a low target cost of the candidate units) and how well the candidate units concatenate together in an eventual synthesized sequence (with a high score representing a low join cost of those respective candidate units). The TTS system may select the sequence that has the lowest overall cost (represented by a combination of target costs and join costs) or may choose a sequence based on customized functions for target cost, join cost or other factors. For illustration purposes, the target cost may be thought of as the cost to select a particular unit in one of the columns ofFIG. 3Bwhereas the join cost may be thought of as the score associated with a particular path from one unit in one column to another unit of another column. The candidate units along the selected path through the graph may then be combined together to form an output audio waveform representing the speech of the input text. For example, inFIG. 3Bthe selected path is represented by the solid line. Thus units #-H2, H-E1, E-L4, L-O3, and O-#4may be selected, and their respective audio concatenated by synthesis component220, to synthesize audio for the word “hello.” This may continue for the input text data210to determine output audio data.

Vocoder-based parametric speech synthesis may be performed as follows. A TTS component295may include an acoustic model, or other models, which may convert a symbolic linguistic representation into a synthetic acoustic waveform of the text input based on audio signal manipulation. The acoustic model includes rules which may be used by the parametric synthesis engine232to assign specific audio waveform parameters to input phonetic units and/or prosodic annotations. The rules may be used to calculate a score representing a likelihood that a particular audio output parameter(s) (such as frequency, volume, etc.) corresponds to the portion of the input symbolic linguistic representation from the TTS front end216.

The parametric synthesis engine232may use a number of techniques to match speech to be synthesized with input phonetic units and/or prosodic annotations. One common technique is using Hidden Markov Models (HMMs). HMMs may be used to determine probabilities that audio output should match textual input. HMMs may be used to translate from parameters from the linguistic and acoustic space to the parameters to be used by a vocoder (the digital voice encoder) to artificially synthesize the desired speech. Using HMMs, a number of states are presented, in which the states together represent one or more potential acoustic parameters to be output to the vocoder and each state is associated with a model, such as a Gaussian mixture model. Transitions between states may also have an associated probability, representing a likelihood that a current state may be reached from a previous state. Sounds to be output may be represented as paths between states of the HMM and multiple paths may represent multiple possible audio matches for the same input text. Each portion of text may be represented by multiple potential states corresponding to different known pronunciations of phonemes and their parts (such as the phoneme identity, stress, accent, position, etc.). An initial determination of a probability of a potential phoneme may be associated with one state. As new text is processed by the speech synthesis engine218, the state may change or stay the same, based on the processing of the new text. For example, the pronunciation of a previously processed word might change based on later processed words. A Viterbi algorithm may be used to find the most likely sequence of states based on the processed text. The HMMs may generate speech in parameterized form including parameters such as fundamental frequency (f0), noise envelope, spectral envelope, etc. that are translated by a vocoder into audio segments. The output parameters may be configured for particular vocoders such as a STRAIGHT vocoder, TANDEM-STRAIGHT vocoder, WORLD vocoder, HNM (harmonic plus noise) based vocoders, CELP (code-excited linear prediction) vocoders, GlottHMM vocoders, HSM (harmonic/stochastic model) vocoders, or others.

An example of HMM processing for speech synthesis is shown inFIG. 4. A sample input phonetic unit may be processed by a parametric synthesis engine232. The parametric synthesis engine232may initially assign a probability that the proper audio output associated with that phoneme is represented by state S0in the Hidden Markov Model illustrated inFIG. 4. After further processing, the speech synthesis engine218determines whether the state should either remain the same, or change to a new state. For example, whether the state should remain the same404may depend on the corresponding transition probability (written as P(S0|S0), meaning the probability of going from state S0to S0) and how well the subsequent frame matches states S0and S1. If state S1is the most probable, the calculations move to state S1and continue from there. For subsequent phonetic units, the speech synthesis engine218similarly determines whether the state should remain at S1, using the transition probability represented by P(S1|S1)408, or move to the next state, using the transition probability P(S2|S1)410. As the processing continues, the parametric synthesis engine232continues calculating such probabilities including the probability412of remaining in state S2or the probability of moving from a state of illustrated phoneme /E/ to a state of another phoneme. After processing the phonetic units and acoustic features for state S2, the speech recognition may move to the next phonetic unit in the input text.

The probabilities and states may be calculated using a number of techniques. For example, probabilities for each state may be calculated using a Gaussian model, Gaussian mixture model, or other technique based on the feature vectors and the contents of the TTS storage280. Techniques such as maximum likelihood estimation (MLE) may be used to estimate the probability of particular states.

In addition to calculating potential states for one audio waveform as a potential match to a phonetic unit, the parametric synthesis engine232may also calculate potential states for other potential audio outputs (such as various ways of pronouncing a particular phoneme or diphone) as potential acoustic matches for the acoustic unit. In this manner multiple states and state transition probabilities may be calculated.

The probable states and probable state transitions calculated by the parametric synthesis engine232may lead to a number of potential audio output sequences. Based on the acoustic model and other potential models, the potential audio output sequences may be scored according to a confidence level of the parametric synthesis engine232. The highest scoring audio output sequence, including a stream of parameters to be synthesized, may be chosen and digital signal processing may be performed by a vocoder or similar component to create an audio output including synthesized speech waveforms corresponding to the parameters of the highest scoring audio output sequence and, if the proper sequence was selected, also corresponding to the input text. The different parametric settings268, which may represent acoustic settings matching a particular parametric “voice”, may be used by the synthesis component220to ultimately create the output audio data290.

FIG. 5illustrates an embodiment of the speech model222, which may include a sample model502, an output model504, and a conditioning model506, each of which are described in greater detail below. The TTS front end216may receive input text data210and generate corresponding metadata508, which may include input text, phoneme data, duration data, and/or fundamental frequency (F0) data, as described in greater detail below. During training, the metadata508may include prerecorded audio data and corresponding text data created for training the speech model222. In some embodiments, during runtime, the TTS front end216includes a first-pass speech synthesis engine that creates speech using, for example, the unit selection and/or parametric synthesis techniques described above.

The sample model502may include a dilated convolution component512. The dilated convolution component512performs a filter over an area of the input larger than the length of the filter by skipping input values with a certain step size, depending on the layer of the convolution. For example, the dilated convolution component512may operate on every sample in the first layer, every second sample in the second layer, every fourth sample in the third layer, and so on. The dilated convolution component512may effectively allow the speech model222to operate on a coarser scale than with a normal convolution. The input to the dilated convolution component512may be, for example, a vector of size r created by performing a 2×1 convolution and a tan h function on an input audio one-hot vector. The output of the dilated convolution component512may be a vector of size 2r.

An activation/combination component514may combine the output of the dilated convolution component512with one or more outputs of the conditioning model506, as described in greater detail below, and/or operated on by one or more activation functions, such as tan h or sigmoid functions, as also described in greater detail below. The activation/combination component514may combine the 2r vector output by the dilated convolution component512into a vector of size r. The present disclosure is not, however, limited to any particular architecture related to activation and/or combination.

The output of the activation/combination component514may be combined, using a combination component516, with the input to the dilated convolution component512. In some embodiments, prior to this combination, the output of the activation/combination component514is convolved by a second convolution component518, which may be a 1×1 convolution on r values.

The sample model502may include one or more layers, each of which may include some or all of the components described above. In some embodiments, the sample model502includes 40 layers, which may be configured in four blocks with ten layers per block; the output of each combination component516, which may be referred to as residual channels, may include 128 values; and the output of each convolution/affine component520, which may be referred to as skip channels, may include 1024 values. The dilation performed by the dilated convolution component512may be 2nfor each layer n, and may be reset at each block.

The first layer may receive the metadata508as input; the output of the first layer, corresponding to the output of the combination component514, may be received by the dilated convolution component512of the second layer. The output of the last layer may be unused. As one of skill in the art will understand, a greater number of layers may result in higher-quality output speech at the cost of greater computational complexity and/or cost; any number of layers is, however, within the scope of the present disclosure. In some embodiments, the number of layers may be limited in the latency between the first layer and the last layer, as determined by the characteristics of a particular computing system, and the output audio rate (e.g., 16 kHz).

A convolution/affine component520may receive the output (of size r) of the activation/combination component514and perform a convolution (which may be a 1×1 convolution) or an affine transformation to produce an output of size s, wherein s<r. In some embodiments, this operation may also be referred to as a skip operation or a skip-connection operation, in which only a subset of the outputs from the layers of the sample model502are used as input by the convolution/affine component520. The output of the convolution/affine component520may be combined using a second combination component522, the output of which may be received by an output model524to create output audio data526, which is also explained in greater detail below. An output of the output model524may be fed back to the TTS front end216.

FIGS. 6A and 6Billustrate embodiments of the sample model502. Referring first toFIG. 6A, a 2×1 dilated convolution component602receives a vector of size r from the TTS front end216or from a previous layer of the sample model502and produces an output of size 2r. A split component604splits this output into two vectors, each of size r; these vectors are combined, using combination components606and608, which the output of the conditioning model506, which has been similarly split by a second split component610. A tan h component612performs a tan h function on the first combination, a sigmoid component614performs a sigmoid function on the second combination, and the results of each function are combined using a third combination component616. An affine transformation component618performs an affine transformation on the result and outputs the result to the output model524. A fourth combination component620combines the output of the previous combination with the input and outputs the result to the next layer, if any.

Referring toFIG. 6B, many of the same functions described above with reference toFIG. 6Aare performed. In this embodiment, however, a 1×1 convolution component622performs a 1×1 convolution on the output of the third combination component616in lieu of the affine transformation performed by the affine transformation component618ofFIG. 6A. In addition, a second 1×1 convolution component624performs a second 1×1 convolution on the output of the third combination component616, the output of which is received by the fourth combination component620.

FIGS. 7A and 7Billustrate embodiments of the output model524. Referring first toFIG. 7A, a first rectified linear unit (ReLU)702may perform a first rectification function on the output of the sample model502, and a first affine transform component704may perform a first affine transform on the output of the ReLU702. The input vector to the first affine transform component704may be of size s, and the output may be of size a. In various embodiments, s>a; a may represent the number of frequency bins corresponding to the output audio and may be of size ten. A second ReLU component706performs a second rectification function, and a second affine transform component708performs a second affine transform. A softmax component710may be used to generate output audio data290from the output of the second affine transform component708.FIG. 7Bis similar toFIG. 7Abuy replaces affine transformation components704,708with 1×1 convolution components712,714.

FIGS. 8A and 8Billustrate embodiments of the conditioning model216. In various embodiments, the text metadata received by the conditioning model216is represented by a lower sample rate than the text/audio data received by the sample model502. In some embodiments, the sample model502receives data sampled at 16 kHz while the conditioning model receives data sampled at 256 Hz. The conditioning model216may thus upsample the lower-rate input so that it matches the higher-rate input received by the sample model502.

Referring toFIG. 8A, the input metadata508is received by a first forward long short-term memory (LSTM)802and a first backward LSTM804. The input metadata508may include linguistic context features, fundamental frequency data, grapheme-to-phoneme data, duration prediction data, or any other type of data. In some embodiments, the input metadata508includes 86 linguistic context features; any number of context features is, however, within the scope of the present disclosure. The outputs of both LSTMs802,804may be received by a first stack element818, which may combine the outputs802,804by summation, by concatenation, or by any other combination. The output of the first stack element818is received by both a second forward LSTM806and a second backward LSTM808. The outputs of the second LSTMs806,808are combined using a second stack element824, the output of which is received by an affine transform component810and upsampled by an upsampling component812. The output of the upsampling component812, as mentioned above, is combined with the sample model502using an activation/combination element514. This output of the upsampling component812represents an upsampled version of the metadata508, may be referred to herein as conditioning data or prosody data, and may include numbers or vectors of numbers.

With reference toFIG. 8B, in this embodiment, the input text metadata215is received by a first forward quasi-recurrent neural network (QRNN)814and first backward QRNN816, the outputs of which are combined by a first stack component818. The output of the stack component818is received by a second forward QRNN820and a second backward QRNN822. The outputs of the second QRNNs820,822are combined by a second stack component824, interleaved by an interleave component826, and then upsampled by the upsampling component812.

As mentioned above, the speech model222may be used with existing TTS front ends, such as those developed for use with the unit selection and parametric speech systems described above. In other embodiments, however, the TTS front end may include one or more additional models that may be trained using training data, similar to how the speech model222may be trained.

FIG. 9illustrates an embodiment of such a model-based TTS front end216.FIG. 9illustrates the training of the TTS front end216and of the speech model222; FIG. SSK, described in more detail below, illustrates the trained TTS front end216and speech model222at runtime. Training audio902and corresponding training text904may be used to train the models.

A grapheme-to-phoneme model906may be trained to convert the training text904from text (e.g., English characters) to phonemes, which may be encoded using a phonemic alphabet such as ARPABET. The grapheme-to-phoneme model906may reference a phoneme dictionary908. A segmentation model910may be trained to locate phoneme boundaries in the voice dataset using an output of the grapheme-to-phoneme model906and the training audio902. Given this input, the segmentation model910may be trained to identify where in the training audio902each phoneme begins and ends. An acoustic feature prediction model912may be trained to predict acoustic features of the training audio, such as whether a phoneme is voiced, the fundamental frequency (F0) throughout the phoneme's duration, or other such features. A phoneme duration prediction model916may be trained to predict the temporal duration of phonemes in a phoneme sequence (e.g., an utterance). The speech model receives, as inputs, the outputs of the grapheme-to-phoneme model906, the duration prediction model916, and the acoustic features prediction model912and may be trained to synthesize audio at a high sampling rate, as described above.

FIG. 10illustrates use of the model-based TTS front end216and speech model222during runtime. The grapheme-to-phoneme model906receives input text data210and locates phoneme boundaries therein. Using this data, the acoustic features prediction model912predicts acoustic features, such as fundamental frequencies of phonemes, and the duration prediction model916predicts durations of phonemes. Using the phoneme data, acoustic data, and duration, data, the speech model222synthesizes output audio data290.

FIG. 11Aillustrates a hybrid decision engine1102of the TTS module295and a speech model222for selectively generating TTS units in accordance with embodiments of the present disclosure. As explained in greater detail below, the hybrid decision engine1102may be the front-end hybrid decision engine236, the selection hybrid decision engine238, and/or the back-end hybrid decision engine240illustrated inFIG. 2. The components of the hybrid decision engine1102, as illustrated, may instead or in addition be disposed at other points in the TTS module295and/or wholly or partially integrated into other components of the TTS module295. If the hybrid decision engine1102determines that a word, sentence, diphone, phoneme, or other speech unit present in the TTS unit storage272is unsuitable for use in the output audio data290, it transmits unit text data1106to the speech model222, which creates corresponding unit audio data1112for use in the output audio data290. In some embodiments, a unit feedback component1114analyzes the unit audio data1112for quality, suitability for use in the output audio data290, or other metric; if the quality metric or other metric is less than a threshold, the unit feedback component1114may send the unit audio data1112back to the speech model222with a command to re-generate the unit audio data1112. In some embodiments, the unit feedback component1114compares the unit audio data1112to a corresponding unit in the TTS unit storage272to determine the quality metric. The unit feedback component1114may send the quality metric or other data generated in determining the quality metric to the speech model222.

In various embodiments, an output quality determination component1104of the hybrid decision engine1102receives text and/or audio data, such as input text data210and/or output audio data290. The input text data210may be, but is not limited to, text data generated in response to a text-based query or command and/or an audio-based query or command. The input text data210may further include data created by TTS preprocessing by, for example, the TTS front end216, such as phoneme data and/or acoustic feature data. In various embodiments, the front-end hybrid decision engine236determines, using the input text data210, that one or more words, parts of words, and/or multiple words corresponding to the input text data210have no corresponding matching unit or units in the TTS unit storage272and/or a best matching unit in the TTS unit storage272has a matching cost less than a threshold. The front-end hybrid decision engine236may include, for example, a list of known parts of words, words, and/or groups of words as known by the TTS unit storage272; the front-end hybrid decision engine236may determine a familiarity score based on how closely a word matches one or more entries in the list of known words. If the front-end hybrid decision engine236makes this determination, it sends unit text data1106corresponding to the mismatching word, part of the word, or multiple words to the speech model222for synthesis of corresponding audio data1112.

For example, part of the input text data210may correspond to a person's name, to a place, or to any other noun or word that was not included in the training and/or creation of the TTS unit storage272and thus does not have matching or near-matching unit. News information, for example, may often include unfamiliar words related to people and places that are unfamiliar and/or include foreign-language features; if the TTS module295generates speech related to such news information, the output quality determination component1104may determine that the TTS unit storage272does not have matching units.

Determination of the mismatch may instead or in addition be made during unit selection. The selection hybrid decision engine238may, for example, identify a target unit sequence, such as the sequence302illustrated inFIG. 3A, and identify a number of unit candidates304corresponding to the sequence. Each unit candidate304may have a corresponding cost, also referred to as a target cost. In some embodiments, the selection hybrid decision engine238selects a number of units that minimize the overall cost of matching the unit candidates304to the target unit sequence302. In some embodiments, however, no suitable unit candidate(s) may be found for a target unit(s). The cost of a unit candidate may be compared to, for example, a threshold cost; if the cost is greater than the threshold, the selection hybrid decision engine238determines that the associated unit candidate is not to be used for later audio output. In these embodiments, the output quality determination component1104sends unit text data1106to the speech model222to generate unit audio data1112therefrom.

In other embodiments, the back-end hybrid decision engine240analyzes output audio data290created by the unit selection engine230. The back-end hybrid decision engine240may, for example, determine a score for the output audio data290based on a quality metric involving its volume, frequency spectrum, or other such properties. The back-end hybrid decision engine234may, if the quality metric is greater than a quality threshold, identify one or more units used to create the output audio data290that do not match or do not match well to the input text data210.

In some embodiments, the speech model222creates the unit audio data1112for inclusion in the output audio data290in response to a query, command, or other input in the input text data210—i.e., the creation of the unit audio data1112occurs in “real-time” in response to an incoming user query represented in the input text data210. In other embodiments, the unit audio data1112is not included in the output audio data290, but is stored in the TTS unit storage272. The stored unit audio data1112may then be selected by the unit selection engine230for use in a later command or query.

In some embodiments, the unit text data1106is processed by a unit processing component1108to create processed unit text data1110, which the unit processing component1108sends to the speech model222. The processing may include changing the unit text data1106and/or adding additional data. The changed and/or added data may include information for use by the speech model222to thereby create unit audio data1112that differs from that created using the unprocessed unit text data1106. The output quality determination component1104may instead or in addition assign a cost and/or weight to the unit audio data1112that causes the unit selection engine230to select the unit audio data1112more or less frequently than data having a default cost and/or weight. For example, the output quality determination component1104may increase the cost of the unit audio data1112such that it is less likely to be selected by the unit selection engine230and, instead, the unit selection engine230selects audio data corresponding to a recorded sound or utterance.

FIG. 11Billustrates a hybrid decision engine1124in accordance with embodiments of the present disclosure. In these embodiments, the speech model222is used to generate the output audio data290and, if the hybrid decision engine1124determines that a word, sentence, diphone, phoneme, or other speech unit present in the output audio data290is unsuitable for use, a unit or units is/are selected by the unit selection engine230to replace the determined portion of the output audio data. The output quality determination component1104may receive the input text data210, output audio data290, and/or data from the speech model222and may, based at least in part on this data, identify a target portion1116of the output audio data290that is unsuitable for inclusion in the output audio data290. Based on the target output audio data1116, an input identification component1118may identify corresponding target input text data1120, which may in turn be used by the unit selection engine230to identify unit audio data1122. The identified unit audio data1122may then be used in the output audio data290in lieu of some or all of the target output audio data1116.

FIG. 12illustrates a data flow diagram in accordance with the present disclosure. The hybrid decision engine1102determines (XM02) an indication of output quality and determines (1204) that a new audio unit is needed. The hybrid decision engine1102sends unit data (1206) to the speech model222, which creates (1208) a new audio unit1210based on the unit data1206. As mentioned above, the unit feedback component1114may determine a quality metric based on the new audio unit1210and, based on the quality metric, the speech model222may wholly or partially re-generate the new audio unit1210. The unit selection engine230selects (1212) the new audio unit1210for use in speech synthesis. The new audio unit1210may also be stored (1212) in the TTS unit storage272.

Audio waveforms (such as output audio data290) including the speech output from the TTS component295may be sent to an audio output component, such as a speaker for playback to a user or may be sent for transmission to another device, such as another server120, for further processing or output to a user. Audio waveforms including the speech may be sent in a number of different formats such as a series of feature vectors, uncompressed audio data, or compressed audio data. For example, audio speech output may be encoded and/or compressed by an encoder/decoder (not shown) prior to transmission. The encoder/decoder may be customized for encoding and decoding speech data, such as digitized audio data, feature vectors, etc. The encoder/decoder may also encode non-TTS data of the system, for example using a general encoding scheme such as .zip, etc.

Although the above discusses a system, one or more components of the system may reside on any number of devices.FIG. 13is a block diagram conceptually illustrating example components of a remote device, such as server(s)120, that may determine which portion of a textual work to perform TTS processing on and perform TTS processing to provide an audio output. Multiple such servers120may be included in the system, such as one server120for determining the portion of the textual to process using TTS processing, one server120for performing TTS processing, etc. In operation, each of these devices may include computer-readable and computer-executable instructions that reside on the server(s)120, as will be discussed further below.

Each server120may include one or more controllers/processors (1302), which may each include a central processing unit (CPU) for processing data and computer-readable instructions, and a memory (1304) for storing data and instructions of the respective device. The memories (1304) 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 server may also include a data storage component (1306), 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 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 (1308). The storage component1306may include storage for various data including ASR models, NLU knowledge base, entity library, speech quality models, TTS voice unit storage, and other storage used to operate the system.

Computer instructions for operating each server (120) and its various components may be executed by the respective server's controller(s)/processor(s) (1302), using the memory (1304) as temporary “working” storage at runtime. A server's computer instructions may be stored in a non-transitory manner in non-volatile memory (1304), storage (1306), 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.

The server (120) may include input/output device interfaces (1308). A variety of components may be connected through the input/output device interfaces, as will be discussed further below. Additionally, the server (120) may include an address/data bus (1310) for conveying data among components of the respective device. Each component within a server (120) may also be directly connected to other components in addition to (or instead of) being connected to other components across the bus (1310).

One or more servers120may include the TTS component295, or other components capable of performing the functions described above.

As described above, the storage component1306may include storage for various data including speech quality models, TTS voice unit storage, and other storage used to operate the system and perform the algorithms and methods described above. The storage component1306may also store information corresponding to a user profile, including purchases of the user, returns of the user, recent content accessed, etc.

As noted above, multiple devices may be employed in a single system. In such a multi-device system, each of the devices may include different components for performing different aspects of the system. The multiple devices may include overlapping components. The components of the devices110and server(s)120, as described with reference toFIG. 13, are exemplary, and may be located a stand-alone device or may be included, in whole or in part, as a component of a larger device or system.

As illustrated inFIG. 14, multiple devices may contain components of the system and the devices may be connected over a network199. The network199is representative of any type of communication network, including data and/or voice network, and may be implemented using wired infrastructure (e.g., cable, CATS, fiber optic cable, etc.), a wireless infrastructure (e.g., WiFi, RF, cellular, microwave, satellite, Bluetooth, etc.), and/or other connection technologies. Devices may thus be connected to the network199through either wired or wireless connections. Network199may include a local or private network or may include a wide network such as the internet. For example, server(s)120, smart phone110b, networked microphone(s)1404, networked audio output speaker(s)1406, tablet computer110d, desktop computer110e, laptop computer110f, speech device110a, refrigerator110c, etc. may be connected to the network199through a wireless service provider, over a WiFi or cellular network connection or the like.

As described above, a device, may be associated with a user profile. For example, the device may be associated with a user identification (ID) number or other profile information linking the device to a user account. The user account/ID/profile may be used by the system to perform speech controlled commands (for example commands discussed above). The user account/ID/profile may be associated with particular model(s) or other information used to identify received audio, classify received audio (for example as a specific sound described above), determine user intent, determine user purchase history, content accessed by or relevant to the user, etc.