Text-to-speech (TTS) systems convert written text into sound. This conversion may be useful to assist users of digital text media by synthesizing speech representing text displayed on a computer screen. Speech-recognition systems have progressed to a point at which humans may 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. 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.
For a more complete understanding of the present disclosure, reference is now made to the following description taken in conjunction with the accompanying drawings.
Text-to-speech (TTS) systems may employ 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, which may be referred to as units or speech 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 acoustic unit such as a phone, phoneme, diphone, triphone, senon, or other acoustic unit. The individual acoustic units and data describing the units may be stored in a unit database, which may also be called a voice corpus or voice inventory. When text data is received for TTS processing, the system may select acoustic units that correspond to the text data and may combine them to generate audio data that represents synthesized speech of the words in the text data.
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. Regarding 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 may be required to speak using a desired audio quality, which may 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 includes only neutral speech or speech that does not typically include 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. Configuring individual voice inventories for many combinations of language, voice profiles, audio qualities, etc., may be prohibitive.
Parametric synthesis, while typically more flexible at runtime, may not create natural sounding output speech when compared to 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 model may be trained to directly generate audio output waveforms sample-by-sample. The model may be trained to generate audio output that resembles the style, tone, language, or other vocal attribute of a particular speaker using training data from one or more human speakers. The model may create tens of thousands of samples per second of audio; in some embodiments, the rate of output audio samples is 16 kilohertz (kHz). The 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 model may use causal convolutions to predict output audio; in some embodiments, the model uses dilated convolutions to generate an output sample using a greater area of input samples than would otherwise be possible. The model may be trained using a conditioning network that conditions hidden layers of the network using linguistic context features, such as phoneme data. The audio output generated by the model may have higher audio quality than either unit selection or parametric synthesis.
This type of direct generation of audio waveforms using a trained 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 trained 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 synthesizing speech from text. In various embodiments, a spectrogram estimator estimates a spectrogram corresponding to input text data using, as explained in greater detail below, a sequence-to-sequence (seq2seq) model. The seq2seq model may include a plurality of encoders; each encoder may receive one of a plurality of different types of acoustic data, such as, for example, a first encoder that receives phonemes corresponding to input text data, a second encoder that receives syllable-level features corresponding to the input text data, a third encoder that receives word-level features corresponding to the input text data, and additional encoders that receive additional features, such as emotion, speaker, accent, language, or other features.
The different types of acoustic-feature data may correspond to different-sized segments of the input text data; i.e., the features may have different time resolutions. For example, a first type of acoustic data may have a first, smallest segment size and may correspond to acoustic units, such as phonemes; i.e., this first segment type may have a finest resolution. A second type of acoustic data may have a second, larger segment size and may correspond to syllables, such as syllable-level features; i.e., this second segment type may have a greater resolution than the first type of acoustic data. A third type of acoustic data may have a third, still larger segment size and may correspond to words, such as word-level features; i.e., this third segment type may have a resolution greater than that of both the first type and the second type. Other types of acoustic data, such as acoustic features relating to emotion, speaker, accent or other features may have varying segments sizes and correspondingly varying resolutions. The first, second, and/or third types of acoustic data may correspond to segments of the input text data and may be referred to as representing segmental prosody; the second, third, and other types of acoustic data may correspond to more than one segment of acoustic data and may be referred to as representing supra-segmental prosody.
A decoder may receive the outputs of the encoders; the outputs may represent encodings of the various features as represented by numbers or vectors of numbers. The decoder may output a spectrogram corresponding to the input text data; the spectrogram may be a representation of frequencies of sound (i.e., speech) corresponding to the text data, which may vary in accordance with the prosody and/or intonation of the output speech. A speech model may use the spectrogram data, in addition to the input text data, to synthesize speech.
An exemplary system overview is described in reference to
Components of a system that may be used to perform unit selection, parametric TTS processing, and/or model-based audio synthesis are shown in
As shown in
The TTS front end 216 transforms input text data 210 (from, for example, an application, user, device, or other text source) into a symbolic linguistic representation, which may include linguistic context features such as phoneme data, punctuation data, syllable-level features, word-level features, and/or emotion, speaker, accent, or other features for processing by the speech synthesis engine 218. The syllable-level features may include syllable emphasis, syllable speech rate, syllable inflection, or other such syllable-level features; the word-level features may include word emphasis, word speech rate, word inflection, or other such word-level features. The emotion features may include data corresponding to an emotion associated with the input text data 210, such as surprise, anger, or fear. The speaker features may include data corresponding to a type of speaker, such as sex, age, or profession. The accent features may include data corresponding to an accent associated with the speaker, such as Southern, Boston, English, French, or other such accent.
The TTS front end 216 may also process other input data 215, such as text tags or text metadata, that may indicate, for example, 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 text 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 210 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 engine 218 may compare the annotated phonetic units models and information stored in the TTS unit storage 272 and/or TTS parametric storage 280 for converting the input text into speech. The TTS front end 216 and speech synthesis engine 218 may include their own controller(s)/processor(s) and memory or they may use the controller/processor and memory of the server 120, device 110, or other device, for example. Similarly, the instructions for operating the TTS front end 216 and speech synthesis engine 218 may be located within the TTS component 295, within the memory and/or storage of the server 120, device 110, or within an external device.
Text data 210 input into the TTS component 295 may be sent to the TTS front end 216 for 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 end 216 may first 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 end 216 may analyze 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 component 295 may process speech based on phonemes (individual sounds), half-phonemes, diphones (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 component 272. The linguistic analysis performed by the TTS front end 216 may 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 component 295 to 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 component 295. Generally, the more information included in the language dictionary, the higher quality the speech output.
Based on the linguistic analysis the TTS front end 216 may 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 end 216 may consider and incorporate any prosodic annotations that accompanied the text input to the TTS component 295. Such acoustic features may include syllable-level features, word-level features, emotion, speaker, accent, language, pitch, energy, duration, and the like. Application of acoustic features may be based on prosodic models available to the TTS component 295. 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 end 216, 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 engine 218, 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 engine 218 may 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 engine 218 may perform speech synthesis using one or more different methods. In one method of synthesis called unit selection, described further below, a unit selection engine 230 matches the symbolic linguistic representation created by the TTS front end 216 against a database of recorded speech, such as a database (e.g., TTS unit storage 272) storing information regarding one or more voice corpuses (e.g., voice inventories 278a-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 inventory 278 as 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 engine 230 may then use the information about each unit to select units to be joined together to form the speech output.
The unit selection engine 230 matches 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 component 220) to form output audio data 290 representing synthesized speech. Using all the information in the unit database, a unit selection engine 230 may 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 engine 232, 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 component 220) 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 component 295 may be configured to perform TTS processing in multiple languages. For each language, the TTS component 295 may include specially configured data, instructions and/or components to synthesize speech in the desired language(s). To improve performance, the TTS component 295 may revise/update the contents of the TTS storage 280 based on feedback of the results of TTS processing, thus enabling the TTS component 295 to improve speech recognition.
The TTS storage component 295 may 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 inventories 278a-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 component 295 to 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 inventory 278 may 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 settings 268) 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 engine 230 determines 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 engine 230. As part of unit selection, the unit selection engine 230 chooses 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 storage 272 or in another storage component. For example, different unit selection databases may be stored in TTS unit storage 272. 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 engine 218 may 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 in
For example, as shown in
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 sequence 302. How closely each respective unit matches the desired sound will be represented by a target cost. Thus, for example, unit #-H1 will have a first target cost, unit #-H2 will have a second target cost, unit #-H3 will 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 in
Vocoder-based parametric speech synthesis may be performed as follows. A TTS component 295 may 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 engine 232 to 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 end 216.
The parametric synthesis engine 232 may 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 engine 218, 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 in
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 storage 280. 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 engine 232 may 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 engine 232 may 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 engine 232. 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 settings 268, which may represent acoustic settings matching a particular parametric “voice”, may be used by the synthesis component 220 to ultimately create the output audio data 290.
The encoder 602 may receive the acoustic-feature data 502 and/or input text data 210 and generate character embeddings 608 based thereon. The character embeddings 608 may represent the acoustic-feature data 502 and/or input text data 210 as a defined list of characters, which may include, for example, English characters (e.g., a-z and A-Z), numbers, punctuation, special characters, and/or unknown characters. The character embeddings 608 may transform the list of characters into one or more corresponding vectors using, for example, one-hot encoding. The vectors may be multi-dimensional; in some embodiments, the vectors represent a learned 512-dimensional character embedding.
The character embeddings 608 may be processed by one or more convolution layer(s) 610, which may apply one or more convolution operations to the vectors corresponding to the character embeddings 608. In some embodiments, the convolution layer(s) 610 correspond to three convolutional layers each containing 512 filters having shapes of 5×1, i.e., each filter spans five characters. The convolution layer(s) 610 may model longer-term context (e.g., N-grams) in the character embeddings 608.
The final output of the convolution layer(s) 610 (i.e., the output of the only or final convolutional layer) may be passed to a bidirectional LSTM layer 612 to generate encodings corresponding to the acoustic-feature data 502. In some embodiments, the bidirectional LSTM layer 612 includes 512 units—256 in a first direction and 256 in a second direction.
In some embodiments, the spectrogram estimator 238 includes an attention network 614 that summarizes the full encoded sequence output by the bidirectional LSTM layer 612 as fixed-length context vectors corresponding to output step of the decoder 604. The attention network 614 may a RNN, DNN, or other network discussed herein, and may include nodes having weights and/or cost functions arranged into one or more layers. Attention probabilities may be computed after projecting inputs to 128-dimensional hidden representations. In some embodiments, the attention network 614 weights certain values of the context vector before sending them to the decoder 604. The attention network 614 may, for example, weight certain portions of the context vector by increasing their value and may weight other portions of the context vector by decreasing their value. The increased values may correspond to acoustic features to which more attention should be paid by the decoder 604 and the decreased values may correspond to acoustic feature to which less attention should be paid by the decoder 604.
Use of the attention network 614 may permit the encoder 602 to avoid encoding the full source acoustic-feature data 502 into a fixed-length vector; instead, the attention network 614 may allow the decoder 604 to “attend” to different parts of the acoustic-feature data 502 at each step of output generation. The attention network 614 may allow the encoder 602 and/or decoder 604 to learn what to attend to based on the acoustic-feature data 502 and/or produced spectrogram data 606.
The decoder 604 may be a network, such as a neural network; in some embodiments, the decoder is an autoregressive recurrent neural network (RNN). The decoder 604 may generate the spectrogram data 606 from the encoded acoustic-feature data 502 one frame at a time. The spectrogram data 606 may represent a prediction of frequencies corresponding to the output audio data 290. For example, if the output audio data 290 corresponds to speech denoting a fearful emotion, the spectrogram data 606 may include a prediction of higher frequencies; if the output audio data 290 corresponds to speech denoting a whisper, the spectrogram data 606 may include a prediction of lower frequencies. In some embodiments, the spectrogram data 606 includes frequencies adjusted in accordance with a Mel scale, in which the spectrogram data 606 corresponds to a perceptual scale of pitches judged by listeners to be equal in distance from one another. In these embodiments, the spectrogram data 606 may include or be referred to as a Mel-frequency spectrogram and/or a Mel-frequency cepstrum (MFC).
The decoder 604 may include one or more pre-net layers 616. The pre-net layers 616 may include two fully connected layers of 256 hidden units, such as rectified linear units (ReLUs). The pre-net layers 616 receive spectrogram data 606 from a previous time-step and may act as information bottleneck, thereby aiding the attention network 614 in focusing attention on particular outputs of the encoder 602. In some embodiments, use of the pre-net layer(s) 616 allows the decoder 604 to place a greater emphasis on the output of the attention network 614 and less emphasis on the spectrogram data 606 from the previous time-temp.
The output of the pre-net layers 616 may be concatenated with the output of the attention network 614. One or more LSTM layer(s) 618 may receive this concatenated output. The LSTM layer(s) 618 may include two uni-directional LSTM layers, each having 1024 units. The output of the LSTM layer(s) 618 may be transformed with a linear transform 620, such as a linear projection. In other embodiments, a different transform, such as an affine transform, may be used. One or more post-net layer(s) 622, which may be convolution layers, may receive the output of the linear transform 620; in some embodiments, the post-net layer(s) 622 include five layers, and each layer includes 512 filters having shapes 5×1 with batch normalization; tanh activations may be performed on outputs of all but the final layer. A concatenation element 624 may concatenate the output of the post-net layer(s) 622 with the output of the linear transform 620 to generate the spectrogram data 606.
As explained above, the acoustic-feature data 701a, 701b, . . . 701N may correspond to different types of acoustic data; the different types of acoustic data may have different time resolutions. For example, first acoustic-feature data 701a may correspond to phoneme data having a first time resolution, second acoustic-feature data 701b may correspond to syllable-level data having a second time resolution greater than the first time resolution, and third acoustic-feature data 701c may correspond to word-level data having a third time resolution greater than the second time resolution. Other types of acoustic data, as explained above, may include emotion data, accent data, and speaker data.
The outputs of the attention networks 706a, 706b, . . . 706N may be received by a decoder 708. As also explained above, the decoder 708 may include one or more pre-net layer(s) 710, one or more LSTM layer(s) 712, a linear transform/projection element 714, one or more post-net layer(s) 716, and/or a summation element 718. The present disclosure is not, however, limited to only these types and arrangement of layers and elements.
Each encoder 702a, 702b, . . . 702N and/or corresponding attention network 706a, 706b, 706N may correspond to a particular speaking style, type of person, and/or particular person. Each encoder 702a, 702b, . . . 702N and/or corresponding attention network 706a, 706b, . . . 706N may be trained using training data corresponding to the particular speaking style, type of person, and/or particular person. More than one corpus of training data may be used; in these embodiments, each encoder 702a, 702b, . . . 702N and/or corresponding attention network 706a, 706b, . . . 706N may correspond to a merged or combined speaking style corresponding to multiple speaking styles, types of person, and/or particular persons.
The encoders 702a, 702b, . . . 702N and/or corresponding attention networks 706a, 706b, . . . 706N may be trained in a particular style and then used at runtime to create spectrogram data 606 corresponding to the style. In some embodiments, multiple encoders 702a, 702b, . . . 702N and/or corresponding attention networks 706a, 706b, . . . 706N may be trained for each type of acoustic-feature data 701a, 701b, . . . 701N and particular encoders 702a, 702b, . . . 702N and/or corresponding attention networks 706a, 706b, . . . 706N may be selected at runtime. For example, a first set of encoders 702a, 702b, . . . 702N and/or corresponding attention networks 706a, 706b, . . . 706N may correspond to a first speech style, person, or accent and a second set of encoders 702a, 702b, . . . 702N and/or corresponding attention networks 706a, 706b, . . . 706N may correspond to a second speech style, person, or accent. A user may request that the spectrogram estimator 238 use the first style or the second style.
In some embodiments, a first set of encoders 702a, 702b, . . . 702N and/or corresponding attention networks 706a, 706b, . . . 706N is trained using a first corpus of training data and a second set of encoders 702a, 702b, . . . 702N and/or corresponding attention networks 706a, 706b, . . . 706N is trained using a second corpus of training data. In other embodiments, one or more encoders and/or corresponding attention networks in the first set is used to replace one or more encoders and/or corresponding attention networks in the second set. For example, an encoder and/or corresponding attention network that corresponds to a particular accent may be used to provide a speech style corresponding to that accent in another set of encoders and/or corresponding attention networks that lacks that accent. Thus, for example, if a user wishes to output speech having an English accent but that is otherwise in the speech style of the user (having the same tone, cadence, pitch, etc.), the spectrogram estimator 238 may select an encoder and/or corresponding attention network that corresponds to the English accent for use therein. In some embodiments, the user may input audio containing the user's own speech; a speech-to-text system may generate text based on the user's speech, and the spectrogram estimator 238
The sample network 802 may include a dilated convolution component 812. The dilated convolution component 812 receives the spectrogram data 504 as input performs a filter over an area of this input larger than the length of the filter by skipping input values with a certain step size, depending on the layer of the convolution. In some embodiments, the sample network also receives the acoustic-feature data 502 as input. For example, the dilated convolution component 812 may 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 component 812 may effectively allow the speech model 222 to operate on a coarser scale than with a normal convolution. The input to the dilated convolution component 812 may be, for example, a vector of size r created by performing a 2×1 convolution and a tanh function on an input audio one-hot vector. The output of the dilated convolution component 812 may be a vector of size 2r.
An activation/combination component 814 may combine the output of the dilated convolution component 812 with one or more outputs of the conditioning network 806, as described in greater detail below, and/or operated on by one or more activation functions, such as tanh or sigmoid functions, as also described in greater detail below. The activation/combination component 814 may combine the 2r vector output by the dilated convolution component 812 into 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 component 814 may be combined, using a combination component 816, with the input to the dilated convolution component 812. In some embodiments, prior to this combination, the output of the activation/combination component 814 is convolved by a second convolution component 818, which may be a 1×1 convolution on r values.
The sample network 802 may include one or more layers, each of which may include some or all of the components described above. In some embodiments, the sample network 802 includes 40 layers, which may be configured in four blocks with ten layers per block; the output of each combination component 816, which may be referred to as residual channels, may include 128 values; and the output of each convolution/affine component 820, which may be referred to as skip channels, may include 1024 values. The dilation performed by the dilated convolution component 812 may be 2n for each layer n, and may be reset at each block.
The first layer may receive the acoustic-feature data 502 as input; the output of the first layer, corresponding to the output of the combination component 814, may be received by the dilated convolution component 812 of 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 component 820 may receive the output (of size r) of the activation/combination component 814 and 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 network 802 are used as input by the convolution/affine component 820. The output of the convolution/affine component 820 may be combined using a second combination component 822, the output of which may be received by an output network 824 to create output audio data 826, which is also explained in greater detail below. An output of the output network 824 may be fed back to the TTS front end 216.
Referring to
Referring to
With reference to
As mentioned above, the speech model 222 may be used in systems having 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 model 222 may be trained.
A grapheme-to-phoneme model 1206 may be trained to convert the training text 1204 from text (e.g., English characters) to phonemes, which may be encoded using a phonemic alphabet such as ARPABET. The grapheme-to-phoneme model 1206 may reference a phoneme dictionary 1208. A segmentation model 1210 may be trained to locate phoneme boundaries in the voice dataset using an output of the grapheme-to-phoneme model 1206 and the training audio 1202. Given this input, the segmentation model 1210 may be trained to identify where in the training audio 1202 each phoneme begins and ends. An acoustic feature prediction model 1212 may be trained to predict acoustic features of the training audio, such as whether a phoneme is voiced, the fundamental frequency (FO) throughout the phoneme's duration, or other such features. A phoneme duration prediction model 1216 may 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 model 1206, the duration prediction model 1216, and the acoustic features prediction model 1212 and may be trained to synthesize audio at a high sampling rate, as described above.
Audio waveforms (such as output audio data 290) including the speech output from the TTS component 295 may 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 server 120, 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.
Each server 120 may include one or more controllers/processors (1402), which may each include a central processing unit (CPU) for processing data and computer-readable instructions, and a memory (1404) for storing data and instructions of the respective device. The memories (1404) 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 (1406), 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 (1408). The storage component 1406 may 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) (1402), using the memory (1404) as temporary “working” storage at runtime. A server's computer instructions may be stored in a non-transitory manner in non-volatile memory (1404), storage (1406), 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 (1408). 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 (1410) 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 (1410). One or more servers 120 may include the TTS component 295, or other components capable of performing the functions described above.
As described above, the storage component 1406 may 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 component 1406 may 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 devices 110 and server(s) 120, as described with reference to
As illustrated in
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. 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 media 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 components, components and engines may be implemented as in firmware or hardware, including digital filters (e.g., filters configured as firmware to a digital signal processor (DSP)).
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 media 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 components and engines may be implemented as in firmware or hardware, such as the acoustic front end 256, which comprise among other things, analog and/or digital filters (e.g., filters configured as firmware to a digital signal processor (DSP)).
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.
This application is a continuation of, and claims priority to U.S. patent application Ser. No. 16/922,590, entitled “TEXT-TO-SPEECH (TTS) PROCESSING,” filed on Jul. 7, 2020, scheduled to issue as U.S. Pat. No. 11,410,639, which is a continuation of, and claims priority to, U.S. patent application Ser. No. 16/141,241, entitled “TEXT-TO-SPEECH (TTS) PROCESSING,” filed on Sep. 25, 2018, and issued as U.S. Pat. No. 10,741,169. The above applications are hereby incorporated by reference in their entirety.
Number | Date | Country | |
---|---|---|---|
Parent | 16922590 | Jul 2020 | US |
Child | 17882691 | US | |
Parent | 16141241 | Sep 2018 | US |
Child | 16922590 | US |