This disclosure relates to residual adapters for few-shot text-to-speech speaker adaptation.
Speech synthesis systems use text-to-speech (TTS) models to generate speech from textual input. The generated/synthesized speech should accurately convey the message (intelligibility) while sounding like human speech (naturalness) with an intended prosody (expressiveness). While traditional speech synthesis models are capable of providing intelligible speech, recent advances in neural modeling of speech have significantly improved the naturalness and fidelity of synthesized speech. These neural models are large, having millions of parameters that can be fine-tuned during training. Due to the size of these models, training can be a lengthy and computationally expensive process.
One aspect of the disclosure provides a computer-implemented method for implementing residual adapters for few-shot text-to-speech speaker adaptation. The computer-implemented method is executed by data processing hardware that causes the data processing hardware to perform operations including obtaining a text-to-speech (TTS) model configured to convert text into representations of synthetic speech, the TTS model pre-trained on an initial training data set. The operations further include augmenting the TTS model with a stack of residual adapters. The operations include receiving an adaption training data set including one or more spoken utterances spoken by a target speaker, each spoken utterance in the adaptation training data set paired with corresponding input text associated with a transcription of the spoken utterance. The operations include adapting, using the adaption training data set, the TTS model augmented with the stack of residual adapters to learn how to synthesize speech in a voice of the target speaker by optimizing the stack of residual adapters while parameters of the TTS model are frozen.
Implementations of the disclosure may include one or more of the following optional features. In some implementations, the TTS model includes a decoder including a corresponding stack of multi-head self-attention layers. In some implementations, augmenting the TTS model with the stack of residual adapters includes inserting the stack of residual adapters into the decoder, each respective residual adapter in the stack of residual adapters disposed between each multi-head self-attention layer in the corresponding stack of multi-head self-attention layers of the decoder. In these implementations, the selected decoder may include a Conformer decoder including a first feedforward module, a multi-head self-attention module, a convolution module, a second feedforward module, and a layernorm module.
In some implementations, each spoken utterance in the adaptation training data set includes a corresponding non-synthetic speech representation of the target speaker speaking the spoken utterance. In these implementations, the stack of residual adapters is optimized by for each spoken utterance in the adaption training data set, generating, using the TTS model augmented with the stack of residual adapters, a corresponding synthetic speech representation from the corresponding input text paired with the spoken utterance, determining a loss based on the non-synthetic speech representations of the target speaker speaking the spoken utterances and the synthetic speech representations generated from the input text, and updating parameters of the stack of residual adapters based on the loss. In these implementations, the stack of residual adapters may further be optimized by optimizing a speaker embedding associated with the target speaker.
The initial training data set used to pre-train the TTS model may not include any utterances spoken by the target speaker. The input text paired with each corresponding spoken utterance in the adaption training data set may include a corresponding sequence of phonemes and a corresponding sequence of graphemes. In some implementations, each respective residual adaptor in the stack of residual adapters includes a layernorm layer, a down-projection layer, a Rectified Linear Unit (ReLU) layer, an up-projection layer, and a residual connection.
In some implementations, the TTS model includes a Bidirectional Encoder Representations from Transformers (BERT) encoder configured to receive the corresponding input text for each spoken utterance in the adaption training data set, and generate an encoded text representation for the corresponding input text utterance. In these implementations the TTS model may also include a variance adapter configured to receive a first concatenation output comprising a speaker embedding and a stress embedding concatenated with the encoded text representation generated by the BERT encoder, and generate an output corresponding to the first concatenation output. In these implementations, the TTS model may also include a duration adapter configured to receive the first concatenation output and predict a phoneme duration for each phoneme in the corresponding input text based on the first concatenation output. Further, in these implementations, the TTS model may include an upsampler configured to receive a second concatenation output comprising the first concatenation output concatenated with the output generated by the variance adapter, and upsample the second concatenation output. In these implementations, the TTS model may also include a decoder configured to receive the upsampled second concatenation output, and generate a synthetic speech representation for the corresponding input text.
The initial training data set may pre-train the TTS model to synthesize speech in a first language. Here, each spoken utterance in the adaptation training data set is spoken in a second language different than the first language.
Another aspect of the disclosure provides a system for implementing residual adapters for few-shot text-to-speech speaker adaptation. The system includes data processing hardware and memory hardware in communication with the data processing hardware. The memory hardware stores instructions that when executed on the data processing hardware cause the data processing hardware to perform operations. The operations include obtaining a text-to-speech (TTS) model configured to convert text into representations of synthetic speech, the TTS model pre-trained on an initial training data set. The operations further include augmenting the TTS model with a stack of residual adapters. The operations include receiving an adaption training data set including one or more spoken utterances spoken by a target speaker, each spoken utterance in the adaptation training data set paired with corresponding input text associated with a transcription of the spoken utterance. The operations include adapting, using the adaption training data set, the TTS model augmented with the stack of residual adapters to learn how to synthesize speech in a voice of the target speaker by optimizing the stack of residual adapters while parameters of the TTS model are frozen.
This aspect may include one or more of the following optional features. In some implementations, the TTS model includes a decoder including a corresponding stack of multi-head self-attention layers. In some implementations, augmenting the TTS model with the stack of residual adapters includes inserting the stack of residual adapters into the decoder, each respective residual adapter in the stack of residual adapters disposed between each multi-head self-attention layer in the corresponding stack of multi-head self-attention layers of the decoder. In these implementations, the decoder may include a Conformer decoder including a first feedforward module, a multi-head self-attention module, a convolution module, a second feedforward module, and a layernorm module.
In some implementations, each spoken utterance in the adaptation training data set includes a corresponding non-synthetic speech representation of the target speaker speaking the spoken utterance. In these implementations, the stack of residual adapters is optimized by for each spoken utterance in the adaption training data set, generating, using the TTS model augmented with the stack of residual adapters, a corresponding synthetic speech representation from the corresponding input text paired with the spoken utterance, determining a loss based on the non-synthetic speech representations of the target speaker speaking the spoken utterances and the synthetic speech representations generated from the input text, and updating parameters of the stack of residual adapters based on the loss. In these implementations, the stack of residual adapters may further be optimized by optimizing a speaker embedding associated with the target speaker.
The initial training data set used to pre-train the TTS model may not include any utterances spoken by the target speaker. The input text paired with each corresponding spoken utterance in the adaption training data set may include a corresponding sequence of phonemes and a corresponding sequence of graphemes. In some implementations, each respective residual adaptor in the stack of residual adapters includes a layernorm layer, a down-projection layer, a Rectified Linear Unit (ReLU) layer, an up-projection layer, and a residual connection.
In some implementations, the TTS model includes a Bidirectional Encoder Representations from Transformers (BERT) encoder configured to receive the corresponding input text for each spoken utterance in the adaption training data set, and generate an encoded text representation for the corresponding input text utterance. In these implementations the TTS model may also include a variance adapter configured to receive a first concatenation output comprising a speaker embedding and a stress embedding concatenated with the encoded text representation generated by the BERT encoder, and generate an output corresponding to the first concatenation output. In these implementations, the TTS model may also include a duration adapter configured to receive the first concatenation output and predict a phoneme duration for each phoneme in the corresponding input text based on the first concatenation output. Further, in these implementations, the TTS model may include an upsampler configured to receive a second concatenation output comprising the first concatenation output concatenated with the output generated by the variance adapter, and upsample the second concatenation output. In these implementations, the TTS model may also include a decoder configured to receive the upsampled second concatenation output, and generate a synthetic speech representation for the corresponding input text.
The initial training data set may pre-train the TTS model to synthesize speech in a first language. Here, each spoken utterance in the adaptation training data set is spoken in a second language different than the first language.
The details of one or more implementations of the disclosure are set forth in the accompanying drawings and the description below. Other aspects, features, and advantages will be apparent from the description and drawings, and from the claims.
Like reference symbols in the various drawings indicate like elements.
Few-shot speaker adaptation continues to be an important area of research in text-to-speech synthesis (TTS) because of growing interests in many different commercial custom voice applications (e.g., personalized voice assistants in low resource scenarios). Typical few-shot speaker adaptation approaches involve adapting a pre-trained multi-speaker backbone acoustic model to a target speaker by fine-tuning all or a partial set of model parameters. However, scaling such approaches to thousands of speakers is difficult, as the model serving cost normally grows linearly in the number of supported target speakers. Furthermore, in some cases, they require supplementary data (e.g., training data used for pretraining the backbone model) during adaptation to avoid over-fitting and/or catastrophic forgetting.
Implementations herein are directed to a parameter-efficient few-shot speaker adaptation approach based on residual adapters for text-to-speech. During adaptation, a pretrained multi-speaker TTS backbone model is frozen but augmented with simple/lightweight neural modules called residual adapters whose parameters are optimized to synthesize a target speaker voice, thereby allowing the same backbone model to be shared across many different speakers for inference. The approach described herein is more flexible than the aforementioned fine-tuning approaches as the size of the layers in the backbone model is fixed, but the size of the residual adapters can be adjusted accordingly to the task at hand. Also, as the residual adapters are usually tiny, requiring 0.1% of additional parameters to the backbone model, it can prevent the serving cost from growing linearly in the number of target speakers. Further, as the current approach freezes the backbone model during the speaker adaptation phase, the quality of the speakers included in the backbone model is unaffected by design.
Referring to
Here, the device 110 captures audio data 14 corresponding to the spoken utterance 12 by the user 10. The device 110 may correspond to any computing device associated with the user 10 and capable of receiving audio data 14. Some examples of user devices 110 include, but are not limited to, mobile devices (e.g., mobile phones, tablets, laptops, e-book readers, etc.), computers, wearable devices (e.g., smart watches), music player, casting devices, smart appliances (e.g., smart televisions) and internet of things (IoT) devices, remote controls, smart speakers, etc. The device 110 includes data processing hardware 112 and memory hardware 114 in communication with the data processing hardware 112 and storing instructions, that when executed by the data processing hardware 112, cause the data processing hardware 112 to perform one or more operations related to speech and/or text processing. In some examples, the device 110 includes one or more applications (i.e., software applications) where each application may utilize one or more speech processing systems/models 140, 150, 200 associated with device 110 to perform various functions within the application. For instance, the device 110 includes an assistant application configured to communicate synthesized playback audio 154 (also referred to as synthesized speech 154) to the user 10 to converse with the user 10 and assist with the performance of various tasks.
The device 110 further includes an audio subsystem with an audio capturing device (e.g., a microphone) 116 for capturing and converting audio data 14 within the speech environment 100 into electrical signals and a speech output device (e.g., a speaker) 118 for communicating an audible audio signal (e.g., a synthesized playback signal 154 from the device 110). While the device 110 implements a single audio capturing device 116 in the example shown, the device 110 may implement an array of audio capturing devices 116 without departing from the scope of the present disclosure, whereby one or more audio capturing devices 116 in the array may not physically reside on the device 110, but be in communication with the audio subsystem (e.g., peripherals of the device 110). For example, the device 110 may correspond to a vehicle infotainment system that leverages an array of microphones positioned throughout the vehicle. Similarly, the speech output device 118 may include one or more speakers either residing on the device 110, in communication therewith, or a combination where one or more speakers reside on the device 110 and one or more other speakers are physically removed from the device 110 but in communication with the device 110.
Furthermore, the device 110 is configured to communicate via a network 120 with a remote system 130. The remote system 130 may include remote resources 132, such as remote data processing hardware 134 (e.g., remote servers or CPUs) and/or remote memory hardware 136 (e.g., remote databases or other storage hardware). The device 110 may utilize the remote resources 132 to perform various functionality related to speech processing and/or synthesized playback communication. For instance, the device 110 is configured to perform speech recognition using a speech recognition system 140 and/or conversion of text to speech using a TTS system 150 (e.g., using the TTS model 200). These systems/models 140, 150, 200 may reside on the device 110 (referred to as on-device systems) or reside remotely (e.g., reside on the remote system 130), but in communication with the device 110. In some examples, some of these systems 140, 150, 200 reside locally or on-device while others reside remotely. In other words, any of these systems 140, 150, 200 may be local, remote, or both in any combination. For instance, when a system 140, 150, 200 is rather large in size or processing requirements, the system 140, 150, 200 may reside in the remote system 130. Yet when the device 110 may support the size or the processing requirements of one or more systems 140, 150, 200, the one or more systems 140, 150, 200 may reside on the device 110 using the data processing hardware 112 and/or the memory hardware 114. Optionally, the one or more of the systems 140, 150, 200 may reside on both locally/on-device and remotely. For instance, one or more of the systems 140, 150, 200 may default to execute on the remote system 130 when a connection to the network 120 between the device 110 and remote system 130 is available, but when the connection is lost or the network 120 is unavailable, the systems 140, 150, 200 instead execute locally on the device 110. In some implementations, the TTS model 200 may be a large trained model that resides on a server (i.e., remote system 130) and is further configured with a residual adapter 400 that is trained based on a target speaker (i.e., user 10 associated with the device 110).
A speech recognition system 140 receives audio data 14 as an input and transcribes that audio signal into a transcription 142 as an output. Generally speaking, by converting the audio data 14 into a transcription 142, the speech recognition system 140 allows the device 110 to recognize when a spoken utterance 12 from the user 10 corresponds to a query, a command, or some other form of audio communication. That is, the speech recognition system 140 may include natural language understanding (NLU) functionality to perform query interpretation (e.g., semantic analysis) on the transcription 142. The transcription 142 refers to a sequence of text that the device 110 may then use to generate a response to the query or the command. For instance, if the user 10 asks the device 110 the question of “what will the weather be like today,” the device 110 passes the audio data 14 corresponding to the question “what will the weather be like today” to the speech recognition system 140. The speech recognized system 140 converts the audio data 14 into a transcript 142 that includes the text of “what will the weather be like today?” The device 110 may then determine a response to the query using the text or portions of the text. For instance, in order to determine the weather for the current day (i.e., today), the device 110 passes the text (e.g., “what will the weather be like today?”) or identifying portions of the text (e.g., “weather” and “today”) to a search engine. The search engine may then return one or more search results that the device 110 interprets to generate a response for the user 10.
In some implementations, the device 110 or a system associated with the device 110 identifies text 152 (also referred to as a sequence of text 152 or input text 152) that the device 110 will communicate to the user 10 as a response to a query of the spoken utterance 12. The device 110 may then use the TTS system 150 to convert the text 152 into corresponding synthesized playback audio 154 for the device 110 to communicate to the user 10 (e.g., audibly communicate to the user 10) as the response to the query of the spoken utterance 12. In other words, the TTS system 150 receives, as input, text 152 and converts the text 152 to an output of synthesized playback audio 154 (e.g., through a series of neural networks) where the synthesized playback audio 154 is an audio signal defining an audible rendition of the text 152. For example, the playback audio 154 is a verbalization or a narration of the input text 152. In some examples, the input text 152 refers to a sequence of text or characters in a particular natural language (e.g., English, Spanish, or French). The sequence of characters can include letters, numbers, punctuation marks, and/or other special characters. When the TTS system 150 generates the playback audio 154, the playback audio 154 includes synthesized speech that approximates how a human would verbalize the sequence of characters defining the input text 152.
The TTS system 150 (or other speech synthesis system) includes a TTS model 200 (e.g., the TTS model 200 of
In some implementations, the TTS model 200 is augmented with one or more residual adapters 400 (i.e. a stack of residual adapters 400). For example, a TTS model 200 may include a base/backbone model that is trained one a large set of user data for a large number of users. The base model portion of the TTS model 200 may then be frozen, and the one or more residual adapters 400 may then be trained to learn how to synthesize speech in a voice of a target speaker (e.g., speaker 10 associated with device 110). The one or more residual adapters 400 may go through a training process (
Although
The speaker embedding and/or lexical stress embedding 205 may influence the timbre or other elements of the final output synthesized speech 261. The BERT encoder 210 may receive input text 152 and generate an encoded text representation 211 for the corresponding input text. The variance adapter 220 may receive a first concatenation output 212 including a speaker embedding and a stress embedding 205 (e.g., from speaker embedding and/or lexical stress embedding 205) concatenated with the encoded text representation 211 from the BERT encoder 210. The variance adapter 220 may then generate an output 221 based on the first concatenation output 212. Further, the duration adapter 230 may also be configured to receive the first concatenation output 212 and predict a phoneme duration 231 for each phoneme in the corresponding input text 152 based on the first concatenation output 212. The upsampler 240 may be configured to receive a second concatenation output 213 based on a concatenation of the output 221 generated by the variance adapter 220 and the first concatenation output 212. Based on the phoneme duration 231 predicted for each phoneme in the corresponding input text 152, the upsampler 231 may upsample the second concatenation output 231 and the Conformer decoder 300 may generate a synthetic speech representation 261 for the corresponding input text 152 based on the upsampled second concatenation output 241.
In some implementations, the components 205, 210, 220, 230, 240, 300 (also referred to as submodels) of the TTS model 200 are optimized during pre-training of the TTS model 200 (
In some implementations, the TTS model 200 is a non-autoregressive variant of PnG NAT (Phoneme-and-Grapheme Non-Attentive Tacotron) that replaces an autoregressive LSTM-based decoder with a non-autoregressive Conformer-based decoder. In these implementations, instead of a decoder implementing long short-term memory (LSTM), the Conformer decoder 300 implementing multiple multi-head attention layers is more easily adapted by the residual adapters 400.
The TTS model 200 may receive input text 152 corresponding to both phoneme and grapheme sequences and subsequently output synthesized speech representations 261 as 128-bin mel-spectrograms with a 50 ms frame window and a 12.5 ms frame step. In some implementations, the TTS model 200 includes PnG BERT (Bidirectional Encoder Representations from Transformers) encoders (BERT encoder 210), 6 stacked Conformer decoders 300, a duration-based Gaussian upsampler 240 and convolution-based variance adapters 220, 230 predicting log duration, log FO and energy at the phoneme level like FastPitch. In these implementations, the encoder output 211 is concatenated with utterance-level speaker and lexical stress embeddings 205 that are broadcasted to the phoneme level before the variance and duration adapters 220, 230 apply conditioning. Prior to the upsampler 240, log FO and energy are concatenated to the encoder output 211 with the speaker and lexical stress embeddings 205.
In some implementations, TTS model 200 is first pretrained on a large text corpus, such as Wikipedia, with a masked language model (MLM) objective and then used to initialize the encoder 210. To prevent possible overfitting, both phoneme and grapheme embeddings and the lower 4 encoder layers 210 are frozen while pre-training the TTS model 200.
{circumflex over (x)}=x+r(m)⊙x+h(m)
{tilde over (x)}={circumflex over (x)}+½FFN({circumflex over (x)}), ñ=n+½FFN(n)
x′={tilde over (x)}+Conv({tilde over (x)}),n′=ñ+Conv(n)
x″=x′+MHCA(x′,n′)
x′″=x′⊙r(x″)+h(x″)
x″″=x′+MHCA(x′,x′″)
y=LayerNorm(x″″+½FFN(x″″)) (2).
In some implementations, a residual adapter 400 is inserted in the Conformer decoder 300. Although the residual adapter 400 is illustrated as being inserted at the end of the Conformer decoder 300, the residual adapter 400 may be inserted in any suitable component(s) of the Conformer decoder 300. For example, a stack of residual adapters 400 may be inserted in the multi-head self-attention layer 320 of the Conformer decoder 300. In this example, each residual adapter 400 of the stack of residual adapters 400 is disposed between each multi-head self-attention layer 320 in the corresponding stack of multi-head self-attention layers 320 of the Conformer decoder 300. Further, as discussed above, the residual adapters 400 may be disposed in any suitable component(s) of the TTS model 200, such that the TTS model 200 is adapted to synthesize speech in the voice of a target speaker.
In the example of
In some implementations, to adapt a pre-trained TTS model 200 to a new target speaker, the TTS model may be adapted with residual adapters 400. The residual adapters may include lightweight neural modules which are inserted between layers of the TTS model 200. As illustrated in
h0=h+ReLU(Layernorm(h)Wdown)Wup (3)
While the residual adapters 400 can be inserted anywhere in the TTS model 200, in some implementations the residual adapters 400 are most effective in the Conformer decoder 300. Further, in addition to optimizing the residual adapters 400, training may also optimize the speaker embedding such that the variance adapters 220, 230 (
Referring to
The process 500 can then adapt the TTS model 200 to synthesize speech in the voice of a target speaker using training data 510 to fine-tune one or more residual adapters 400 of the TTS model 200, while the parameters of the TTS model 200 are frozen after pre-training. That is, while the TTS model 200 is used to generate output 515 based on the input text 512, only the residual adapters 400 are optimized based on the determined loss 540. The training process may include fine-tuning any of the components 410, 420, 430, 440 of the residual adapters 400 (
Upon receiving the training input 510, the TTS model 200, augmented with the residual adapters 400, may generate an output 515 (e.g., a synthetic speech representation 261 from the corresponding input training text 512). The TTS model 200 may process the input training text 512 in the manner described with respect to any of
In some implementations, the output 515 is used by a loss function 530 to generate a loss 540. That is, the loss function 530 compares the output 515 and the spoken utterance by the target speaker to generate the loss 540, where the loss 540 indicates a discrepancy between the non-synthesized speech 513 corresponding to the spoken utterance from the target speaker (i.e., the target output) and the synthesized speech generated by the TTS model 200 from the input text 512 (i.e., output 515). The loss function 350 may implement any suitable technique to determine a loss such as regression loss, mean squared error, mean squared logarithmic error, mean absolute error, binary classification, binary cross entropy, hinge loss, multi-class loss, etc.
The loss 540 may then be fed directly to the TTS model 200. Here, the TTS model 200 is frozen and thus processing the loss 540 includes adjusting only one or more parameters of the residual adapters 400 to account for the loss 540. In some implementations, one or more of the residual adapters 400 includes a speaker embedding used for speaker conditioning in the TTS model 200. For example, the speaker embedding may be extracted from a reference mel spectrogram of the target speaker and/or adapting a speaker embedding, from a table of speaker embeddings, that most closely resembles a timbre of the target speaker. Here, optimizing the residual adapter 400 includes optimizing the speaker embedding associated with the target speaker.
The computing device 700 includes a processor 710, memory 720, a storage device 730, a high-speed interface/controller 740 connecting to the memory 720 and high-speed expansion ports 750, and a low speed interface/controller 760 connecting to a low speed bus 770 and a storage device 730. Each of the components 710, 720, 730, 740, 750, and 760, are interconnected using various busses, and may be mounted on a common motherboard or in other manners as appropriate. The processor 710 can process instructions for execution within the computing device 700, including instructions stored in the memory 720 or on the storage device 730 to display graphical information for a graphical user interface (GUI) on an external input/output device, such as display 780 coupled to high speed interface 740. In other implementations, multiple processors and/or multiple buses may be used, as appropriate, along with multiple memories and types of memory. Also, multiple computing devices 700 may be connected, with each device providing portions of the necessary operations (e.g., as a server bank, a group of blade servers, or a multi-processor system).
The memory 720 stores information non-transitorily within the computing device 700. The memory 720 may be a computer-readable medium, a volatile memory unit(s), or non-volatile memory unit(s). The non-transitory memory 720 may be physical devices used to store programs (e.g., sequences of instructions) or data (e.g., program state information) on a temporary or permanent basis for use by the computing device 700. Examples of non-volatile memory include, but are not limited to, flash memory and read-only memory (ROM)/programmable read-only memory (PROM)/erasable programmable read-only memory (EPROM)/electronically erasable programmable read-only memory (EEPROM) (e.g., typically used for firmware, such as boot programs). Examples of volatile memory include, but are not limited to, random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), phase change memory (PCM) as well as disks or tapes.
The storage device 730 is capable of providing mass storage for the computing device 700. In some implementations, the storage device 730 is a computer-readable medium. In various different implementations, the storage device 730 may be a floppy disk device, a hard disk device, an optical disk device, or a tape device, a flash memory or other similar solid state memory device, or an array of devices, including devices in a storage area network or other configurations. In additional implementations, a computer program product is tangibly embodied in an information carrier. The computer program product contains instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer- or machine-readable medium, such as the memory 720, the storage device 730, or memory on processor 710.
The high speed controller 740 manages bandwidth-intensive operations for the computing device 700, while the low speed controller 760 manages lower bandwidth-intensive operations. Such allocation of duties is exemplary only. In some implementations, the high-speed controller 740 is coupled to the memory 720, the display 780 (e.g., through a graphics processor or accelerator), and to the high-speed expansion ports 750, which may accept various expansion cards (not shown). In some implementations, the low-speed controller 760 is coupled to the storage device 730 and a low-speed expansion port 790. The low-speed expansion port 790, which may include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet), may be coupled to one or more input/output devices, such as a keyboard, a pointing device, a scanner, or a networking device such as a switch or router, e.g., through a network adapter.
The computing device 700 may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a standard server 700a or multiple times in a group of such servers 700a, as a laptop computer 700b, or as part of a rack server system 700c.
Various implementations of the systems and techniques described herein can be realized in digital electronic and/or optical circuitry, integrated circuitry, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and/or combinations thereof. These various implementations can include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which may be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device.
These computer programs (also known as programs, software, software applications or code) include machine instructions for a programmable processor, and can be implemented in a high-level procedural and/or object-oriented programming language, and/or in assembly/machine language. As used herein, the terms “machine-readable medium” and “computer-readable medium” refer to any computer program product, non-transitory computer readable medium, apparatus and/or device (e.g., magnetic discs, optical disks, memory, Programmable Logic Devices (PLDs)) used to provide machine instructions and/or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term “machine-readable signal” refers to any signal used to provide machine instructions and/or data to a programmable processor.
A software application (i.e., a software resource) may refer to computer software that causes a computing device to perform a task. In some examples, a software application may be referred to as an “application,” an “app,” or a “program.” Example applications include, but are not limited to, system diagnostic applications, system management applications, system maintenance applications, word processing applications, spreadsheet applications, messaging applications, media streaming applications, social networking applications, and gaming applications.
The processes and logic flows described in this specification can be performed by one or more programmable processors, also referred to as data processing hardware, executing one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows can also be performed by special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit). Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read only memory or a random access memory or both. The essential elements of a computer are a processor for performing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks. However, a computer need not have such devices. Computer readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto optical disks; and CD ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
To provide for interaction with a user, one or more aspects of the disclosure can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube), LCD (liquid crystal display) monitor, or touch screen for displaying information to the user and optionally a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer. Other kinds of devices can be used to provide interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input. In addition, a computer can interact with a user by sending documents to and receiving documents from a device that is used by the user; for example, by sending web pages to a web browser on a user's client device in response to requests received from the web browser.
A number of implementations have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the disclosure. Accordingly, other implementations are within the scope of the following claims.
This U.S. patent application claims priority under 35 U.S.C. § 119(e) to U.S. Provisional Application 63/380,782, filed on Oct. 25, 2022. The disclosure of this prior application is considered part of the disclosure of this application and is hereby incorporated by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
20240135915 A1 | Apr 2024 | US |
Number | Date | Country | |
---|---|---|---|
63380782 | Oct 2022 | US |