Adaptive noise cancellation
09830899 · 2017-11-28
Assignee
Inventors
- Mark Every (Palo Alto, CA, US)
- Ludger Solbach (Mountain View, CA)
- Carlo Murgia (Sunnyvale, CA, US)
- Ye Jiang (Sunnyvale, CA, US)
Cpc classification
G10L21/02
PHYSICS
G10K11/16
PHYSICS
International classification
G10L21/00
PHYSICS
G10K11/16
PHYSICS
Abstract
Systems and methods for controlling adaptivity of noise cancellation are presented. One or more audio signals are received by one or more corresponding microphones. The one or more signals may be decomposed into frequency sub-bands. Noise cancellation consistent with identified adaptation constraints is performed on the one or more audio signals. The one or more audio signals may then be reconstructed from the frequency sub-bands and outputted via an output device.
Claims
1. A method for controlling adaptivity of noise cancellation, the method comprising: receiving an audio signal from a first microphone and another audio signal from a second microphone: determining a pitch salience of the audio signal, the audio signal and the another audio signal both comprising a speech component and a noise component; and determining a coefficient that represents a cross-correlation between the audio signal and the another audio signal of one of the speech component and the noise component that exists in both the audio signal and the another audio signal; generating a modified audio signal for the audio signal based on the another audio signal and the coefficient; and adapting the coefficient when the pitch salience satisfies a threshold.
2. The method of claim 1, further comprising adapting the coefficient for each frequency sub-band of the audio signal.
3. The method of claim 1, wherein adapting the coefficient includes: determining a pitch salience of the audio signal or the another audio signal, wherein the audio signal is received from a first microphone and the another audio signal is received from a second microphone; and adapting the coefficient based on the pitch salience.
4. The method of claim 1, further comprising converting the audio signal from the time-domain to the frequency-domain.
5. The method of claim 1, further comprising: adapting the coefficient to suppress the speech component of the audio signal to form a residual audio signal; and suppressing the noise component of the audio signal based on the residual audio signal to generate a modified primary audio signal.
6. The method of claim 1, wherein determining the coefficient includes determining a reference value of the coefficient by a calibration procedure using the first and second microphones.
7. The method of claim 1, wherein the coefficient is used to substantially remove the speech component from the audio signal to obtain the modified audio signal, the modified audio signal being further combined with the another audio signal to obtain a modified another audio signal, the modified another audio signal being used to remove the noise component from the audio signal.
8. A method for controlling adaptivity of noise cancellation, the method comprising: receiving a primary audio signal at a first microphone and a secondary audio signal at a second microphone, the primary audio signal and the secondary audio signal both comprising a speech component; determining an energy estimate from the primary audio signal or the secondary audio signal, the primary audio signal and the secondary audio signal both comprising a speech component, the primary audio signal and the secondary audio signal each representing at least one respective captured sound; and determining a coefficient that represents a cross-correlation between the primary audio signal and the secondary audio signal of the speech component that exists in both the primary audio signal and the secondary audio signal generating a modified primary audio signal for the primary audio signal based on the secondary audio signal and the coefficient; and adapting the coefficient based on the energy estimate.
9. The method of claim 8, wherein adapting the coefficient is determined by an energy threshold applied to the primary or secondary energy estimate, the method further comprising: adapting the coefficient to suppress the speech component of the primary audio signal to form a residual audio signal, the coefficient being adapted based on the primary energy estimate or the secondary energy estimate; and suppressing the noise component of the primary audio signal based on the residual audio signal to generate the modified primary audio signal.
10. The method of claim 9, wherein the energy threshold is determined by a training or calibration procedure.
11. The method of claim 9, wherein the energy threshold is determined by a stationary noise energy estimate of the primary or secondary audio signals.
12. The method of claim 8, wherein adapting the coefficient comprises determining an amplitude difference and a phase difference between the primary audio signal and the secondary audio signal.
13. The method of claim 12, wherein the coefficient is adapted when the amplitude difference is within a first predefined range and the phase difference is within a second predefined range.
14. The method of claim 12, wherein determining the amplitude difference and the phase difference is performed on individual frequency sub-bands of the audio signal.
15. The method of claim 8, wherein determining the coefficient includes determining a reference value of the coefficient by a calibration procedure using the first and second microphones.
16. A non-transitory computer-readable storage medium having a program embodied thereon, the program executable by a processor to perform a method for controlling adaptivity of noise cancellation, the method comprising: receiving a primary audio signal from a first microphone and a secondary audio signal from a second microphone, the primary audio signal and the secondary audio signal both comprising a speech component; determining a coefficient that represents a cross-correlation between the primary audio signal and the secondary audio signal of the speech component that exists in both the primary audio signal and the secondary audio signal generating a modified primary audio signal for the primary audio signal based on the secondary audio signal and the coefficient; and halting wherein adaptation of the coefficient is halted based on an echo component within the primary audio signal, wherein the coefficient is faded to zero when a noise energy estimate is less than a threshold, and wherein the threshold is determined by an estimate of microphone self-noise in the primary or secondary audio signal.
17. The non-transitory computer-readable storage medium of claim 16, wherein the echo component is determined based on an estimate of far-end activity in the primary audio signal.
18. The non-transitory computer-readable storage medium of claim 16, wherein adaptation of the coefficient is halted when the estimate of far-end activity exceeds a threshold.
19. The non-transitory computer-readable storage medium of claim 16, wherein the echo component is determined based on a comparison of an amplitude of the speech component of the primary audio signal and an amplitude of the speech component of the secondary audio signal.
20. The non-transitory computer-readable storage medium of claim 16, further comprising: adapting the coefficient based on the echo component within the primary audio signal to suppress the speech component of the primary audio signal to form a residual audio signal; suppressing the noise component of the primary audio signal based on the residual audio signal to generate a modified primary audio signal; and halting adaptation of the coefficient applied to the primary audio signal when the amplitude of the primary audio signal speech component is less than the amplitude of the secondary audio signal speech component.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS
(9) The present technology provides methods and systems for controlling adaptivity of noise cancellation of an audio signal. More specifically, these methods and systems allow noise cancellation to adapt to changing or unpredictable conditions. These conditions include differences in hardware resulting from manufacturing tolerances. Additionally, these conditions include unpredictable environmental factors such as changing relative positions of sources of wanted and unwanted audio signals.
(10) Controlling adaptivity of noise cancellation can be performed by controlling how a noise component is canceled in an audio signal received from one of two microphones. All or most of a speech component can be removed from an audio signal received from one of two or more microphones, resulting in a noise reference signal or a residual audio signal. The resulting residual audio signal is then processed or modified and can be then subtracted from the original primary audio signal, thereby reducing noise in the primary audio signal generating a modified audio signal. One or more coefficients can be applied to cancel or suppress the speech component in the primary signal (to generate the residual audio signal) and then to cancel or suppress at least a portion of the noise component in the primary signal (to generate the modified primary audio signal).
(11) Referring now to
(12) The audio device 102 may include a microphone array. In exemplary embodiments, the microphone array may comprise a primary microphone 108 relative to the user 104 and a secondary microphone 110 located a distance away from the primary microphone 108. The primary microphone 108 may be located near the mouth of the user 104 in a nominal usage position, which is described in connection with
(13)
(14) In exemplary embodiments, the primary and secondary microphones 108 and 110 are spaced a distance apart. This spatial separation allows various differences to be determined between received acoustic signals. These differences may be used to determine relative locations of the user 104 and the noise source 106. Upon receipt by the primary and secondary microphones 108 and 110, the acoustic signals may be converted into electric signals. The electric signals may, themselves, be converted by an analog-to-digital converter (not shown) into digital signals for processing in accordance with some embodiments. In order to differentiate the acoustic signals, the acoustic signal received by the primary microphone 108 is herein referred to as the primary signal, while the acoustic signal received by the secondary microphone 110 is herein referred to as the secondary signal.
(15) The primary microphone 108 and the secondary microphone 110 both receive a speech signal from the mouth of the user 104 and a noise signal from the noise source 106. These signals may be converted from the time-domain to the frequency-domain, and be divided into frequency sub-bands, as described further herein. The total signal received by the primary microphone 108 (i.e., the primary signal c) may be represented as a superposition of the speech signal s and of the noise signal n as c=s+n. In other words, the primary signal is a mixture of a speech component and a noise component.
(16) Due to the spatial separation of the primary microphone 108 and the secondary microphone 110, the speech signal received by the secondary microphone 110 may have an amplitude difference and a phase difference relative to the speech signal received by the primary microphone 108. Similarly, the noise signal received by the secondary microphone 110 may have an amplitude difference and a phase difference relative to the noise signal received by the primary microphone 108. These amplitude and phase differences can be represented by complex coefficients. Therefore, the total signal received by the secondary microphone 110 (i.e., the secondary signal f) may be represented as a superposition of the speech signal s scaled by a first complex coefficient σ and of the noise signal n scaled by a second complex coefficient v as f=σs+vn. Put differently, the secondary signal is a mixture of the speech component and noise component of the primary signal, wherein both the speech component and noise component are independently scaled in amplitude and shifted in phase relative to the primary signal. It is noteworthy that a diffuse noise component may be present in both the primary and secondary signals. In such a case, the primary signal may be represented as c=s+n+d, while the secondary signal may be represented as f=σs+vn+e.
(17) The output device 206 is any device which provides an audio output to users such as the user 104. For example, the output device 206 may comprise an earpiece of a headset or handset, or a speaker on a conferencing device. In some embodiments, the output device 206 may also be a device that outputs or transmits audio signals to other devices or users.
(18)
(19) Referring now to
(20) The primary signal c and the secondary signal f are received by the frequency analysis module 302. The frequency analysis module 302 decomposes the primary and secondary signals into frequency sub-bands. Because most sounds are complex and comprise more than one frequency, a sub-band analysis on the primary and secondary signals determines what individual frequencies are present. This analysis may be performed on a frame by frame basis. A frame is a predetermined period of time. According to one embodiment, the frame is 8 ms long. Alternative embodiments may utilize other frame lengths or no frame at all.
(21) A sub-band results from a filtering operation on an input signal (e.g., the primary signal or the secondary signal) where the bandwidth of the filter is narrower than the bandwidth of the signal received by the frequency analysis module 302. In one embodiment, the frequency analysis module 302 utilizes a filter bank to mimic the frequency response of a human cochlea. This is described in further detail in U.S. Pat. No. 7,076,315 filed Mar. 24, 2000 and entitled “Efficient Computation of Log-Frequency-Scale Digital Filter Cascade,” and U.S. patent application Ser. No. 11/441,675 filed May 25, 2006 and entitled “System and Method for Processing an Audio Signal,” both of which have been incorporated herein by reference. Alternatively, other filters such as short-time Fourier transform (STFT), sub-band filter banks, modulated complex lapped transforms, cochlear models, wavelets, etc., can be used by the frequency analysis module 302. The decomposed primary signal is expressed as c(k), while the decomposed secondary signal is expressed as f(k), where k indicates the specific sub-band.
(22) The decomposed signals c(k) and f(k) are received by the noise cancellation module 304 from the frequency analysis module 302. The noise cancellation module 304 performs noise cancellation on the decomposed signals using subtractive approaches. In exemplary embodiments, the noise subtraction engine 304 may adaptively subtract out some or the entire noise signal from the primary signal for one or more sub-bands. The results of the noise cancellation engine 304 may be outputted to the user or processed through a further noise suppression system (e.g., the noise suppression engine 306). For purposes of illustration, embodiments of the present technology will discuss the output of the noise cancellation engine 304 as being processed through a further noise suppression system. The noise cancellation module 304 is discussed in further detail in connection with
(23) As depicted in
(24) Next, the decomposed primary signal c″(k) is reconstructed by the frequency synthesis module 310. The reconstruction may include phase shifting the sub-bands of the primary signal in the frequency synthesis module 310. This is described further in U.S. patent application Ser. No. 12/319,107 filed Dec. 31, 2008 and entitled “Systems and Methods for Reconstructing Decomposed Audio Signals,” which has been incorporated herein by reference. An inverse of the decomposition process of the frequency analysis module 302 may be utilized by the frequency synthesis module 310. Once reconstruction is completed, the noise suppressed primary signal may be outputted by the audio processing system 204.
(25)
(26) The pitch salience module 402 is executable by the processor 202 to determine the pitch salience of the primary signal. In exemplary embodiments, pitch salience may be determined from the primary signal in the time-domain. In other exemplary embodiments, determining pitch salience includes converting the primary signal from the time-domain to the frequency-domain. Pitch salience can be viewed as an estimate of how periodic the primary signal is and, by extension, how predictable the primary signal is. To illustrate, pitch salience of a perfect sine wave is contrasted with pitch salience of white noise. Since a perfect sine wave is purely periodic and has no noise component, the pitch salience of the sine wave has a large value. White noise, on the other hand, has no periodicity by definition, so the pitch salience of white noise has a small value. Voiced components of speech typically have a high pitch salience, and can thus be distinguished from many types of noise, which have a low pitch salience. It is noted that the pitch salience module 402 may also determine the pitch salience of the secondary signal.
(27) The cross correlation module 404 is executable by the processor 202 to determine transfer functions between the primary signal and the secondary signal. The transfer functions include complex values or coefficients for each sub-band. One of these complex values denoted by {circumflex over (σ)} is associated with the speech signal from the user 104, while another complex value denoted by {circumflex over (v)} is associated with the noise signal from the noise source 106. More specifically, the first complex value {circumflex over (σ)} for each sub-band represents the difference in amplitude and phase between the speech signal in the primary signal and the speech signal in the secondary signal for the respective sub-band. In contrast, the second complex value {circumflex over (v)} for each sub-band represents the difference in amplitude and phase between the noise signal in the primary signal and the noise signal in the secondary signal for the respective sub-band. In exemplary embodiments, the transfer function may be obtained by performing a cross-correlation between the primary signal and the secondary signal.
(28) The first complex value {circumflex over (σ)} of the transfer function may have a default value or reference value σ.sub.ref that is determined empirically through calibration. A head and torso simulator (HATS) may be used for such calibration. A HATS system generally includes a mannequin with built-in ear and mouth simulators that provides a realistic reproduction of acoustic properties of an average adult human head and torso. HATS systems are commonly used for in situ performance tests on telephone handsets. An exemplary HATS system is available from Brüel & Kjær Sound & Vibration Measurement A/S of Nærum, Denmark. The audio device 102 can be mounted to a mannequin of a HATS system. Sounds produced by the mannequin and received by the primary and secondary microphones 108 and 110 can then be measured to obtain the reference value σ.sub.ref of the transfer function. Obtaining the phase difference between the primary signal and the secondary signal can be illustrated by assuming that the primary microphone 108 is separated from the secondary microphone 110 by a distance d. The phase difference of a sound wave (of a single frequency) incident on the two microphones is proportional to the frequency f.sub.sw of the sound wave and the distance d. This phase difference can be approximated analytically as φ≈2π f.sub.sw d cos(β)/c, where c is the speed of sound and β is the angle of incidence of the sound wave upon the microphone array.
(29) The voice cancellation module 406 is executable by the processor 202 to cancel out or suppress the speech component of the primary signal. According to exemplary embodiments, the voice cancellation module 406 achieves this by utilizing the first complex value {circumflex over (σ)} of the transfer function determined by the cross-correlation module 404. A signal entirely or mostly devoid of speech may be obtained by subtracting the product of the primary signal c(k) and {circumflex over (σ)} from the secondary signal on a sub-band by sub-band basis. This can be expressed as
f(k)−{circumflex over (σ)}.Math.c(k)≈f(k)−σ.Math.c(k)=(v−σ)n(k)
when {circumflex over (σ)} is approximately equal to σ. The signal expressed by (v−σ)n(k) is a noise reference signal or a residual audio signal, and may be referred to as a speech-devoid signal.
(30)
(31) Under certain conditions, the value of {circumflex over (σ)} may be adapted to a value that is more effective in canceling the speech component of the primary signal. This adaptation may be subject to one or more constraints. Generally speaking, adaptation may be desirable to adjust for unpredicted occurrences. For example, since the audio device 102 can be moved around as illustrated in
(32) The constraints for adaptation of {circumflex over (σ)} by the voice cancellation module 406 may be divided into sub-band constraints and global constraints. Sub-band constraints are considered individually per sub-band, while global constraints are considered over multiple sub-bands. Sub-band constraints may also be divided into level and spatial constraints. All constraints are considered on a frame by frame basis in exemplary embodiments. If a constraint is not met, adaptation of {circumflex over (σ)} may not be performed. Furthermore, in general, {circumflex over (σ)} is adapted within frames and sub-bands that are dominated by speech.
(33) One sub-band level constraint is that the energy of the primary signal is some distance away from the stationary noise estimate. This may help prevent maladaptation with quasi-stationary noise. Another sub-band level constraint is that the primary signal energy is at least as large as the minimum expected speech level for a given frame and sub-band. This may help prevent maladaptation with noise that is low level. Yet another sub-band level constraint is that {circumflex over (σ)} should not be adapted when a transfer function or energy difference between the primary and secondary microphones indicates that echoes are dominating a particular sub-band or frame. In one exemplary embodiment, for microphone configurations where the secondary microphone is closer to a loudspeaker or earpiece than the primary microphone, {circumflex over (σ)} should not be adapted when the secondary signal has a greater magnitude than the primary signal. This may help prevent adaptation to echoes.
(34) A sub-band spatial constraint for adaptation of {circumflex over (σ)} by the voice cancellation module 406 may be applied for various frequency ranges.
(35) Another sub-band spatial constraint is that the magnitude of σ.sup.−1 for the speech signal |σ.sup.−1| should be greater than the magnitude of v.sup.−1 for the noise signal |v.sup.−1| in a given frame and sub-band. Furthermore, v may be adapted when speech is not active based on any or all of the individual sub-band and global constraints controlling adaptation of {circumflex over (σ)} and other constraints not embodied in adaptation of {circumflex over (σ)}. This constraint may help prevent maladaptation within noise that may arrive from a spatial location that is within the permitted σ adaptation region defined by the first sub-band spatial constraint.
(36) As mentioned, global constraints are considered over multiple sub-bands. One global constraint for adaptation of {circumflex over (σ)} by the voice cancellation module 406 is that the pitch salience of the primary signal determined by the pitch salience module 402 exceeds a threshold. In exemplary embodiments, this threshold is 0.7, where a value of 1 indicates perfect periodicity, and a value of zero indicates no periodicity. A pitch salience threshold may also be applied to individual sub-bands and, therefore, be used as a sub-band constraint rather than a global restraint. Another global constraint for adaptation of {circumflex over (σ)} may be that a minimum number of low frequency sub-bands (e.g., sub-bands below approximately 0.5-1 kHz) must satisfy the sub-band level constraints described herein. In one embodiment, this minimum number equals half of the sub-bands. Yet another global constraint is that a minimum number of low frequency sub-bands that satisfy the sub-band level constraints should also satisfy the sub-band spatial constraint described in connection with
(37) Referring again to
(38) Returning to
(39) The coefficient α can be adapted for changes in noise conditions in the environment 100 such as a moving noise source 106, multiple noise sources or multiple reflections of a single noise source. One constraint is that the noise cancellation module 408 only adapts α when there is no speech activity. Thus, α is only adapted when {circumflex over (σ)} is not being adapted by the voice cancellation module 406. Another constraint is that a should adapt towards zero (i.e., no noise cancellation) if the primary signal, secondary signal, or speech-devoid signal (i.e., (v−σ)n(k)) of the voice cancellation module 406 is below some minimum energy threshold. In exemplary embodiments, the minimum energy threshold may be based upon an energy estimate of the primary or secondary microphone self-noise.
(40) Yet another constraint for adapting α is that the following equation is satisfied:
(41)
where γ=√{square root over (2)}/|{circumflex over (ν)}−{circumflex over (σ)}|.sup.2 and {circumflex over (ν)} is a complex value which estimates the transfer function between the primary and secondary microphone signals for the noise source. The value of {circumflex over (ν)} may be adapted based upon a noise activity detector, or any or all of the constraints that are applied to adaptation of the voice cancellation module 406. This condition implies that more noise is being canceled relative to speech. Conceptually, this may be viewed as noise activity detection. The left side of the above equation (g.sub.2.Math.γ) is related to the signal to noise ratio (SNR) of the output of the noise cancellation engine 304, while the right side of the equation (g.sub.1/γ) is related to the SNR of the input of the noise cancellation engine 304. It is noteworthy that γ is not a fixed value in exemplary embodiments since actual values of {circumflex over (ν)} and {circumflex over (σ)} can be estimated using the cross correlation module 404 and voice cancellation module 406. As such, the difference between {circumflex over (ν)} and {circumflex over (σ)} must be less than a threshold to satisfy this condition.
(42)
(43) In step 502, one or more signals are received. In exemplary embodiments, these signals comprise the primary signal received by the primary microphone 108 and the secondary signal received by the secondary microphone 110. These signals may originate at a user 104 and/or a noise source 106. Furthermore, the received one or more signals may each include a noise component and a speech component.
(44) In step 504, the received one or more signals are decomposed into frequency sub-bands. In exemplary embodiments, step 504 is performed by execution of the frequency analysis module 302 by the processor 202.
(45) In step 506, information related to amplitude and phase is determined for the received one or more signals. This information may be expressed by complex values. Moreover, this information may include transfer functions that indicate amplitude and phase differences between two signals or corresponding frequency sub-bands of two signals. Step 506 may be performed by the cross correlation module 404.
(46) In step 508, adaptation constraints are identified. The adaptation constraints may control adaptation of one or more coefficients applied to the one or more received signals. The one or more coefficients (e.g., {circumflex over (σ)} or α) may be applied to suppress a noise component or a speech component.
(47) One adaptation constraint may be that a determined pitch salience of the one or more received signals should exceed a threshold in order to adapt a coefficient (e.g., {circumflex over (σ)}).
(48) Another adaptation constraint may be that a coefficient (e.g., {circumflex over (σ)}) should be adapted when an amplitude difference between two received signals is within a first predetermined range and a phase difference between the two received signals is within a second predetermined range.
(49) Yet another adaptation constraint may be that adaptation of a coefficient (e.g., {circumflex over (σ)}) should be halted when echo is determined to be in either microphone, for example, based upon a comparison between the amplitude of a primary signal and an amplitude of a secondary signal.
(50) Still another adaptation constraint is that a coefficient (e.g., α) should be adjusted to zero when an amplitude of a noise component is less than a threshold. The adjustment of the coefficient to zero may be gradual so as to fade the value of the coefficient to zero over time. Alternatively, the adjustment of the coefficient to zero may be abrupt or instantaneous.
(51) One other adaptation constraint is that a coefficient (e.g., α) should be adapted when a difference between two transfer functions exceeds or is less than a threshold, one of the transfer functions being an estimate of the transfer function between a speech component of a primary signal and a speech component of a secondary signal, and the other transfer function being an estimate of the transfer function between a noise component of the primary signal and a noise component of the secondary signal.
(52) In step 510, noise cancellation consistent with the identified adaptation constraints is performed on the one or more received signals. In exemplary embodiments, the noise cancellation engine 304 performs step 510.
(53) In step 512, the one or more received signals are reconstructed from the frequency sub-bands. The frequency synthesis module 310 performs step 512 in accordance with exemplary embodiments.
(54) In step 514, at least one reconstructed signal is outputted. In exemplary embodiments, the reconstructed signal is outputted via the output device 206.
(55) It is noteworthy that any hardware platform suitable for performing the processing described herein is suitable for use with the technology. Computer-readable storage media refer to any medium or media that participate in providing instructions to a central processing unit (CPU) such as the processor 202 for execution. Such media can take forms, including, but not limited to, non-volatile and volatile media such as optical or magnetic disks and dynamic memory, respectively. Common forms of computer-readable storage media include a floppy disk, a flexible disk, a hard disk, magnetic tape, any other magnetic medium, a CD-ROM disk, digital video disk (DVD), any other optical medium, RAM, PROM, EPROM, a FLASHEPROM, any other memory chip or cartridge.
(56) Various forms of transmission media may be involved in carrying one or more sequences of one or more instructions to a CPU for execution. A bus carries the data to system RAM, from which a CPU retrieves and executes the instructions. The instructions received by system RAM can optionally be stored on a fixed disk either before or after execution by a CPU.
(57) While various embodiments have been described above, it should be understood that they have been presented by way of example only, and not limitation. The descriptions are not intended to limit the scope of the technology to the particular forms set forth herein. Thus, the breadth and scope of a preferred embodiment should not be limited by any of the above-described exemplary embodiments. It should be understood that the above description is illustrative and not restrictive. To the contrary, the present descriptions are intended to cover such alternatives, modifications, and equivalents as may be included within the spirit and scope of the technology as defined by the appended claims and otherwise appreciated by one of ordinary skill in the art. The scope of the technology should, therefore, be determined not with reference to the above description, but instead should be determined with reference to the appended claims along with their full scope of equivalents.