The present implementations relate generally to audio signal processing, and specifically to single-microphone acoustic echo and noise suppression techniques.
Many hands-free communication devices (such as voice over Internet protocol (VOIP) phones, speakerphones, and mobile phones configured to operate in a handsfree mode) include microphones and speakers that are located in relatively close proximity to one another. The microphones are configured to convert sound waves from the surrounding environment into audio signals (also referred to as “microphone signals”) that can be transmitted, over a communications channel, to a far-end device. The speakers are configured to convert audio signals received from the far-end device into sound waves that can be heard by a near-end user. Due to the proximity of the speakers and microphones, the microphone signals may include a speech component (representing audio originating from the near-end user), an echo component (representing audio emitted by the speakers), and a noise component (representing ambient audio from the background environment).
Acoustic echo cancellation (AEC) refers to various techniques that attempt to cancel or suppress the echo component of the microphone signal. Many existing AEC techniques rely on linear transfer functions that approximate the impulse response between a speaker and a microphone. For example, the linear transfer function may be determined using an adaptive filter (such as a normalized least mean square (NLMS) algorithm) that models the acoustic coupling (or channel) between the speaker and the microphone. However, the converge rate of the NLMS algorithm may depend on double-talk conditions (such as where the near-end user and far-end user speak at the same time) and changes to the echo path. Moreover, such linear transfer functions cannot account for nonlinearities introduced along the echo path by amplifiers and various mechanical components of the speaker. Thus, there is a need to further improve the quality of speech in microphone signals.
This Summary is provided to introduce in a simplified form a selection of concepts that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to limit the scope of the claimed subject matter.
One innovative aspect of the subject matter of this disclosure can be implemented in a method of speech enhancement. The method includes steps of receiving a first audio signal via a microphone; receiving a second audio signal for output via a speaker; estimating a reference audio signal based on a delay between the first audio signal and the second audio signal; determining a plurality of masks based on the first audio signal and the reference audio signal, where the plurality of masks includes a speech mask associated with a speech component of the first audio signal, an echo mask associated with an echo component of the first audio signal, and a noise mask associated with a noise component of the first audio signal; and suppressing the echo component and the noise component of the first audio signal based at least in part on the plurality of masks.
Another innovative aspect of the subject matter of this disclosure can be implemented in a speech enhancement system, including a processing system and a memory. The memory stores instructions that, when executed by the processing system, cause the speech enhancement system to receive a first audio signal via a microphone; receive a second audio signal for output via a speaker; estimate a reference audio signal based on a delay between the first audio signal and the second audio signal; determine a plurality of masks based on the first audio signal and the reference audio signal, where the plurality of masks includes a speech mask associated with a speech component of the first audio signal, an echo mask associated with an echo component of the first audio signal, and a noise mask associated with a noise component of the first audio signal; and suppress the echo component and the noise component of the first audio signal based at least in part on the plurality of masks.
The present implementations are illustrated by way of example and are not intended to be limited by the figures of the accompanying drawings.
In the following description, numerous specific details are set forth such as examples of specific components, circuits, and processes to provide a thorough understanding of the present disclosure. The term “coupled” as used herein means connected directly to or connected through one or more intervening components or circuits. The terms “electronic system” and “electronic device” may be used interchangeably to refer to any system capable of electronically processing information. Also, in the following description and for purposes of explanation, specific nomenclature is set forth to provide a thorough understanding of the aspects of the disclosure. However, it will be apparent to one skilled in the art that these specific details may not be required to practice the example embodiments. In other instances, well-known circuits and devices are shown in block diagram form to avoid obscuring the present disclosure. Some portions of the detailed descriptions which follow are presented in terms of procedures, logic blocks, processing and other symbolic representations of operations on data bits within a computer memory.
These descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. In the present disclosure, a procedure, logic block, process, or the like, is conceived to be a self-consistent sequence of steps or instructions leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, although not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated in a computer system. It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities.
Unless specifically stated otherwise as apparent from the following discussions, it is appreciated that throughout the present application, discussions utilizing the terms such as “accessing,” “receiving,” “sending,” “using,” “selecting,” “determining,” “normalizing,” “multiplying,” “averaging,” “monitoring,” “comparing,” “applying,” “updating,” “measuring,” “deriving” or the like, refer to the actions and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
In the figures, a single block may be described as performing a function or functions; however, in actual practice, the function or functions performed by that block may be performed in a single component or across multiple components, and/or may be performed using hardware, using software, or using a combination of hardware and software. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described below generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present disclosure. Also, the example input devices may include components other than those shown, including well-known components such as a processor, memory and the like.
The techniques described herein may be implemented in hardware, software, firmware, or any combination thereof, unless specifically described as being implemented in a specific manner. Any features described as modules or components may also be implemented together in an integrated logic device or separately as discrete but interoperable logic devices. If implemented in software, the techniques may be realized at least in part by a non-transitory processor-readable storage medium including instructions that, when executed, performs one or more of the methods described above. The non-transitory processor-readable data storage medium may form part of a computer program product, which may include packaging materials.
The non-transitory processor-readable storage medium may comprise random access memory (RAM) such as synchronous dynamic random-access memory (SDRAM), read only memory (ROM), non-volatile random access memory (NVRAM), electrically erasable programmable read-only memory (EEPROM), FLASH memory, other known storage media, and the like. The techniques additionally, or alternatively, may be realized at least in part by a processor-readable communication medium that carries or communicates code in the form of instructions or data structures and that can be accessed, read, and/or executed by a computer or other processor.
The various illustrative logical blocks, modules, circuits and instructions described in connection with the embodiments disclosed herein may be executed by one or more processors (or a processing system). The term “processor,” as used herein may refer to any general-purpose processor, special-purpose processor, conventional processor, controller, microcontroller, and/or state machine capable of executing scripts or instructions of one or more software programs stored in memory.
As described above, many hands-free communication devices include microphones and speakers that are located in relatively close proximity to one another. As such, microphone signals captured by the microphones may include a speech component (representing audio originating from a near-end user), an echo component (representing audio emitted by the speakers), and a noise component (representing ambient audio from the background environment). Acoustic echo cancellation (AEC) refers to various techniques that attempt to cancel or suppress the echo component of the microphone signal. Many existing AEC techniques rely on linear transfer functions that approximate the impulse response between a speaker and a microphone. However, such linear transfer functions cannot account for nonlinearities introduced along the echo path by amplifiers and various mechanical components of the speakers.
Some modern AEC techniques rely on machine learning to separate the speech component of microphone signals from the echo and noise components. Machine learning, which generally includes a training phase and an inferencing phase, is a technique for improving the ability of a computer system or application to perform a certain task. During the training phase, a machine learning system is provided with one or more “answers” and a large volume of raw training data associated with the answers. The machine learning system analyzes the training data to learn a set of rules that can be used to describe each of the one or more answers. During the inferencing phase, the machine learning system may infer answers from new data using the learned set of rules. Unlike linear AEC filters, machine learning models can be trained to account for nonlinear distortions along the echo path.
Many existing machine learning models used for AEC are trained to enhance speech by jointly suppressing the echo and noise components of microphone signals. However, because the echo component and the noise component originate from different audio sources, such machine learning models may perform poorly in untrained environments (such as with speakers or background audio sources that are different than those used for training). Aspects of the present disclosure recognize that machine learning models also can be used to decouple the echo component of a microphone signal from the noise component of the microphone signal. As a result, a microphone signal can be decomposed into separate speech, echo, and noise signals (representing the speech, echo, and noise components, respectively, of the microphone signal).
Various aspects relate generally to audio signal processing, and more particularly, to speech enhancement techniques for separating microphone signals into speech, echo, and noise signals. In some aspects, a speech enhancement system may include a delay estimator and an acoustic echo and noise (AEN) decoupling filter. The delay estimator receives a microphone signal (
In some aspects, the AEN decoupling filter may determine a set of masks based on the microphone signal
Particular implementations of the subject matter described in this disclosure can be implemented to realize one or more of the following potential advantages. By producing three masks MS(l, k), ME(l, k), and MV(l, k) based on a microphone signal
The far-end device 110 includes a microphone 112 and a speaker 114. The microphone 112 is configured to detect acoustic waves propagating through the far end environment. In the example of
The near-end device 120 includes a speaker 122 and a microphone 124. The speaker 122 is configured to convert the far-end audio signal 103 to acoustic sound waves 104 that can be heard in the near end environment. The microphone 124 is configured to detect acoustic waves propagating through the near end environment. In the example of
The acoustic echoes 104 and background noise 108 may mix with and distort the user speech 106 detected by the microphone 124. As a result, the microphone signal 109 may include a speech component (representing the user speech 106), an echo component (representing the acoustic echoes 104), and a noise component (representing the background noise 108). In some aspects, the near-end device 120 may improve the quality of speech in the microphone signal 109 (also referred to as “speech enhancement”) by suppressing the echo and noise components of the microphone signal 109 or otherwise increasing the signal-to-echo ratio (SER) and the signal-to-noise ratio (SNR) of the microphone signal 109. As a result, the microphone signal 109 may include a relatively unaltered copy of the speech component with only minor (if any) residuals of the echo and noise components.
In some implementations, the microphone signal X(l, k) and the far-end audio signal R(l, k) may be examples of the microphone signal 109 and the far-end audio signal 103, respectively, of
With reference for example to
The speech enhancement system 200 includes a delay estimator 210 and an acoustic echo and noise (AEN) decoupling filter 220. The delay estimator 210 is configured to estimate a delay (δ) between the microphone signal X(l, k) and the far-end audio signal R(l, k) and produce a reference audio signal (R(l−δ, k)) based on the estimated delay. As described with reference to
where f(⋅) is a nonlinear function that describes the effects of the speaker 122 on the microphone signal R(l, k), and H(l, k) is the acoustic transfer function between the speaker 122 and the microphone 124.
In some implementations, the delay estimator 210 may estimate the delay δ between the microphone signal X(l, k) and the far-end audio signal R(l, k) based on a generalized cross-correlation phase transform (GCC-PHAT) algorithm. For example, the audio signals R(l, k) and X(l, k) can be expressed as time-domain signals x1(t) and x2(t), respectively:
where s(t) represents the far-end speech component in each of the audio signals x1(t) and x2(t); n1(t) and n2(t) represent the noise components in the audio signals x1(t) and x2(t), respectively; a is an attenuation factor associated with the second audio signal x2(t); and D is the delay (in the time domain) between the first audio signal x1(t) and the second audio signal x2(t).
Aspects of the present disclosure recognize that the time-domain delay D can be determined by computing the cross correlation (Rx
where E[⋅] is the expected value, and the value of t that maximizes Rx
In some implementations, the microphone signal X(l, k) and the reference audio signal R(l−δ, k) may be passed directly to the AEN decoupling filter 220. In some other implementations, the speech enhancement system 200 may further include an acoustic echo cancellation (AEC) filter 230 configured to reduce the acoustic echo in the microphone signal X(l, k) based on the reference audio signal R(l−δ, k). In some implementations, the AEC filter 230 may rely on a linear transfer function to approximate the impulse response between the speaker 122 and the microphone 124. For example, the linear transfer function may be determined using an adaptive filter (such as a normalized least mean square (NLMS) algorithm) that models the acoustic coupling (or channel) between the speaker 122 and the microphone 124.
More specifically, the AEC filter 230 may estimate the echo to be subtracted from the microphone signal X(l, k) based on a direct path attenuation factor (γ). In other words, the AEC filter 230 may adjust the reference audio signal R(l−δ, k) by the direct path attenuation factor γ to produce an adjusted reference audio signal (
where
The AEN decoupling filter 220 is configured to produce the enhanced audio signal 201 based on the filtered microphone signal
In some implementations, the AEN decoupling filter 220 may decompose the microphone signal
The AEN decoupling system 300 includes a deep neural network (DNN) 310 and a mask generator 320. The DNN 310 is configured to infer a number (N) of outputs 312(1)-312(N) from the microphone signal 302 and the reference audio signal 304 based on a neural network model. Deep learning is a particular form of machine learning in which the inferencing (and training) phases are performed over multiple layers, producing a more abstract dataset in each successive layer. Deep learning architectures are often referred to as “artificial neural networks” due to the manner in which information is processed (similar to a biological nervous system). For example, each layer of an artificial neural network may be composed of one or more “neurons.” The neurons may be interconnected across the various layers so that the input data can be processed and passed from one layer to another. More specifically, each layer of neurons may perform a different transformation on the output data from a preceding layer so that the final output of the neural network results in the desired inferences. The set of transformations associated with the various layers of the network is referred to as a “neural network model.”
The mask generator 320 is configured to generate a set of audio masks based on the outputs 312(1)-312(N) of the DNN 310. In some aspects, the set of audio masks may include a speech mask (MS(l, k)) associated with a speech component of the microphone signal 302, an echo mask (ME(l, k)) associated with an echo component of the microphone signal 302, and a noise mask (MV(l, k)) associated with a noise component of the microphone signal 302. The audio masks MS(l, k), ME(l, k), and MV(l, k) can be used to decompose the microphone signal 302 into the component audio signals 322-326. In some implementations, the AEN decoupling system 300 may apply the speech mask MS(l, k) to the microphone signal 302 to obtain a speech signal 322. In some other implementations, the AEN decoupling system 300 may apply the echo mask ME(l, k) to the microphone signal 302 to obtain an echo signal 324. Still further, in some implementations, the AEN decoupling system 300 may apply the noise mask MV(l, k) to the microphone signal 302 to obtain a noise signal 326.
In some implementations, the microphone signal 302 may be one example of the microphone signal X(l, k) of
S(l,k)=X(l,k)MS(l,k)
E(l,k)=X(l,k)ME(l,k)
V(l,k)=X(l,k)MV(l,k)
In some other implementations, the microphone signal 302 may be one example of the filtered microphone signal
In some implementations, the DNN 310 may be trained to infer a number (M) of outputs for each component of the microphone signal 302 (where N=3*M). In such implementations, the mask generator 320 may use each set of M DNN outputs to produce a respective one of the audio masks MS(l, k), ME(l, k), and MV(l, k). In some other implementations, the DNN 310 may be trained to infer a number (P) of outputs for only two components of the microphone signal 302 (where N=2*P). In such implementations, the mask generator 320 may use the DNN outputs 312(1)-312(N) to produce two of the audio masks and may produce the third audio mask based on the other two audio masks. With reference for example to Equations 3-6, the audio masks MS(l, k), ME(l, k), and MV(l, k) must sum to 1:
Thus, any of the audio masks MS(l, k), ME(l, k), or MV(l, k) can be determined based on a sum of the other two audio masks.
In some implementations, the mask generator 320 may determine the speech mask MS(l, k) and the echo mask ME(l, k) based on the DNN outputs 312(1)-312(N) and may further determine the noise mask MV(l, k) based on the speech mask MS(l, k) and the echo mask ME(l, k):
In such implementations, the DNN 310 can be implemented using a smaller or more compact neural network model (compared to neural network models that are trained to infer outputs associated with all three audio masks). In other words, for a given neural network size, Equation 8 allows the DNN 310 to produce more accurate inferencing results compared to neural network models that are trained to infer outputs associated with all three audio masks.
The audio mask generation system 400 includes a speech mask generation component 402, an echo mask generation component 404, and a noise mask generation component 406. In some implementations, the speech mask generation component 402 may generate the speech mask MS(l, k) based on the DNN outputs OS1-OS5 and a complementary speech mask (MS(l, k)), where M̌S(l,k)=1−MS(l,k) and X(l,k)M̌S(l,k)=E(l,k)+V(l,k). More specifically, the speech mask generation component 402 may determine the magnitude of the speech mask (|MS(l, k)|) based on the DNN outputs OS1(l, k), OS2(l, k), and OS3(l, k):
where softplus(⋅) is a smooth approximation of the rectified linear unit (ReLU) activation function (also referred to as the “softplus function”) and σ1(⋅) is the sum of positive divisors function.
The speech mask generation component 402 also may determine the magnitude of the complementary speech mask (|M̌S(l, k)|) based on the DNN outputs OS1(l,k), OS2(l,k), and OS3(l,k):
The speech mask generation component 402 may further determine the phase of the speech mask (θS(l, k)) based on the magnitude of the speech mask |MS(l, k)|, the magnitude of the complementary speech mask |M̌S(l, k)|, and the DNN outputs OS4(l, k) and OS5(l, k), where:
where g0 and g1 can be sampled using inverse transform sampling by drawing un˜Uniform(0,1) and computing gn=−log(−log(un)), n∈{0,1}.
In some implementations, the echo mask generation component 404 may generate the echo mask ME(l, k) based on the DNN outputs OE1-OE5 and a complementary echo mask (M̌E(l, k)), where M̌E(l, k)=1−ME(l,k) and X(l,k)M̌E(l,k)=V(l,k)+S(l, k). More specifically, the echo mask generation component 404 may determine the magnitude of the echo mask (|ME(l, k)|) based on the DNN outputs OE1(l, k), OE2(l, k), and OE3(l, k):
The echo mask generation component 404 also may determine the magnitude of the complementary echo mask (|M̌E(l, k)|) based on the DNN outputs OE1(l, k), OE2(l, k), and OE3(l,k):
The echo mask generation component 404 may further determine the phase of the echo mask (θE(l, k)) based on the magnitude of the echo mask |ME(l, k)|, the magnitude of the complementary echo mask |M̌E(l, k)|, and the DNN outputs OE4(l, k) and OE5(l, k), where:
In some implementations, the noise mask generation component 406 may generate the noise mask MV(l, k) based on the speech mask MS(l, k) and the echo mask ME(l, k). More specifically, the noise mask generation component 406 may generate the noise mask MV(l, k) based on Equation 8 (such as described with reference to
As described with reference to
By combining Equations 5 and 9, the echo mask ME(l, k) can be expressed as a function of the reference mask MR(l, k):
where α(l, k) is a ratio of the reference audio signal
Aspects of the present disclosure further recognize that the complementary echo mask M̆E(l, k) can be estimated based on a complementary reference mask (M̆R(l,k)), where:
where ᾰ (l, k) is a complementary ratio of the reference audio signal
The example of Equations 9-13 assumes that the speech enhancement system 300 receives a filtered microphone signal
The audio mask generation system 400 includes a reference mask generation component 412 and an echo mask generation component 414 in addition to the speech mask generation component 402 and the noise mask generation component 406 of
where α(l, k) is the ratio of the reference audio signal
In some implementations, the reference mask generation component 412 may further determine the magnitude of the complementary reference mask |M̆R(l, k)| based on the DNN outputs OR1(l, k), OR2(l, k), and OR3(l, k):
In some implementations, the echo mask generation component 414 may generate the echo mask ME(l, k) based on the magnitude of the reference mask |MR(l, k)|, the magnitude of the complementary reference mask |M̆R(l, k)|, and the DNN outputs OR4(l, k) and OR5(l, k). More specifically, the echo mask generation component 414 may determine the magnitude of the echo mask |ME(l, k)| and the magnitude of the complementary echo mask |M̆E(l, k)| based on the magnitude of the reference mask |MR(l, k)| and the magnitude of the complementary reference mask |M̆R(l, k)|, respectively:
The echo mask generation component 414 may further determine the phase of the echo mask θE(l, k) based on the magnitude of the echo mask |ME(l, k)|, the magnitude of the complementary echo mask |M̆E(l, k)|, and the DNN outputs OR4(l, k) and OR5(l, k), where:
The speech enhancement system 500 includes a device interface 510, a processing system 520, and a memory 530. The device interface 510 is configured to communicate with one or more components of an audio communication device (such as the near-end device 120 of
The memory 530 may include an audio data store 532 configured to store frames of the microphone signal and the reference audio signal as well as any intermediate signals that may be produced by the speech enhancement system 500 as a result of producing the enhanced audio signal. The memory 530 also may include a non-transitory computer-readable medium (including one or more nonvolatile memory elements, such as EPROM, EEPROM, Flash memory, or a hard drive, among other examples) that may store at least the following software (SW) modules:
The processing system 520 may include any suitable one or more processors capable of executing scripts or instructions of one or more software programs stored in the speech enhancement system 500 (such as in the memory 530). For example, the processing system 520 may execute the delay estimation SW module 534 to estimate the reference audio signal based on a delay between the microphone signal and the far-end audio signal. The processing system 520 also may execute the mask generation SW module 536 to determine a plurality of masks based on the microphone signal and the reference audio signal, where the plurality of masks includes a speech mask associated with a speech component of the microphone signal, an echo mask associated with an echo component of the microphone signal, and a noise mask associated with a noise component of the microphone signal. Further, the processing system 520 may execute the speech enhancement SW module 538 to suppress the echo component and the noise component of the microphone signal based at least in part on the plurality of masks.
The speech enhancement system receives a first audio signal via a microphone (610). The speech enhancement system also receives a second audio signal for output via a speaker (620). The speech enhancement system estimates a reference audio signal based on a delay between the first audio signal and the second audio signal (630). In some aspects, the speech enhancement system my perform an AEC operation on the first audio signal based on the reference audio signal. In some implementations, the AEC operation may be associated with a linear filter.
The speech enhancement system determines a plurality of masks based on the first audio signal and the reference audio signal, where the plurality of masks includes a speech mask (MS) associated with a speech component of the first audio signal, an echo mask (ME) associated with an echo component of the first audio signal, and a noise mask (MV) associated with a noise component of the first audio signal (640). The speech component may include audio originating from a near-end user associated with the microphone, the echo component may include audio output by the speaker based on the second audio signal, and the noise component may include audio that does not originate from the near-end user and is not output by the speaker. The speech enhancement system further suppresses the echo component and the noise component of the first audio signal based at least in part on the plurality of masks (650).
In some aspects, the determining of the plurality of masks may include inferring a plurality of outputs from the first audio signal and the reference audio signal based on a neural network model. In some implementations, the determining of the plurality of masks may further include estimating the speech mask MS based on a first subset of the plurality of outputs and a complementary speech mask (M̆S), where M̆S=1−MS; estimating the echo mask ME based on a second subset of the plurality of outputs and a complementary echo mask (M̆E), where M̆E=1−ME; and determining the noise mask MV based on the speech mask MS and the echo mask ME.
In some implementations, the estimating of the speech mask MS may include determining a magnitude of the speech mask MS based on one or more first outputs of the first subset of the plurality of outputs; determining a magnitude of the complementary speech mask M̆S based on the one or more first outputs; and determining a phase of the speech mask MS based on the magnitude of the speech mask MS, the magnitude of the complementary speech mask M̆S, and one or more second outputs of the first subset of the plurality of outputs.
In some implementations, the estimating of the echo mask ME may include determining a magnitude of the echo mask ME based on one or more first outputs of the second subset of the plurality of outputs; determining a magnitude of the complementary echo mask M̆E based on the one or more first outputs; and determining a phase of the echo mask ME based on the magnitude of the echo mask ME, the magnitude of the complementary echo mask M̆E, and one or more second outputs of the second subset of the plurality of outputs.
In some other implementations, the estimating of the echo mask ME may include estimating a reference mask (MR) associated with the reference audio signal based on the second subset of the plurality of outputs and a complementary reference mask (M̆R), where M̆R=1−MR. In such implementations, the speech enhancement system may further determine a magnitude of the reference mask MR based on one or more first outputs of the second subset of the plurality of outputs; determine a magnitude of the complementary reference mask M̆R based on the one or more first outputs; determine a magnitude of the echo mask ME based on the magnitude of the reference mask MR; determine a magnitude of the complementary echo mask M̆E based on the magnitude of the complementary reference mask M̆R; and determine a phase of the echo mask ME based on the magnitude of the echo mask ME, the magnitude of the complementary echo mask M̆E, and one or more second outputs of the second subset of the plurality of outputs.
Those of skill in the art will appreciate that information and signals may be represented using any of a variety of different technologies and techniques. For example, data, instructions, commands, information, signals, bits, symbols, and chips that may be referenced throughout the above description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof.
Further, those of skill in the art will appreciate that the various illustrative logical blocks, modules, circuits, and algorithm steps described in connection with the aspects disclosed herein may be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the disclosure.
The methods, sequences or algorithms described in connection with the aspects disclosed herein may be embodied directly in hardware, in a software module executed by a processor, or in a combination of the two. A software module may reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, a removable disk, a CD-ROM, or any other form of storage medium known in the art. An exemplary storage medium is coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor.
In the foregoing specification, embodiments have been described with reference to specific examples thereof. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader scope of the disclosure as set forth in the appended claims. The specification and drawings are, accordingly, to be regarded in an illustrative sense rather than a restrictive sense.