Low power voice detection

Methods of enabling voice processing with minimal power consumption includes recording time-domain audio signal at a first clock frequency and a first voltage, and performing Fast Fourier Transform (FFT) operations on the time-domain audio signal at a second clock frequency to generate frequency-domain audio signal. The frequency domain audio signal may be enhanced to obtain better signal to noise ratio, through one or multiple filtering and enhancing techniques. The enhanced audio signal may be used to generate the total signal energy and estimate the background noise energy. Decision logic may determine from the signal energy and the background noise, the presence or absence of the human voice. The first clock frequency may be different from the second clock frequency.

BACKGROUND

Technical Field

Embodiments generally relate to audio processing. More particularly, embodiments relate to voice recognition.

Discussion

Voice command and continuous speech recognition can be important for mobile computing systems due to limited keyboard functionality. However, the power cost of continuously listening for potential voices in the environment may be so high that most systems require an input from the user before the systems can start listening. This approach may be inconvenient and may limit the practicality of many potential applications.

DETAILED DESCRIPTION

Embodiments may involve an apparatus which includes logic to store audio signal in time domain in a memory configured to operate based on a first clock frequency and a first voltage, and perform Fast Fourier Transform (FFT) operations on the audio signal in time domain based on a second clock frequency and a second voltage to generate audio signal in frequency domain.

Embodiments may involve a computer implemented method which includes recording time-domain audio signal at a first clock frequency and a first voltage. The method further includes performing Fast Fourier Transform (FFT) operations on the time-domain audio signal at a second clock frequency to generate frequency-domain audio signal. The first clock frequency may be faster than the second clock frequency.

Embodiments may include a computer readable storage medium having a set of instructions which, if executed by a processor, causes a computer to record time-domain audio signal at a first clock frequency and a first voltage, and to perform Fast Fourier Transform (FFT) operations on the time-domain audio signal at a second clock frequency to generate frequency-domain audio signal. The first clock frequency may be faster than the second clock frequency.

Turning toFIG. 1, a block diagram that illustrates an embodiment of a speech recognition system100is shown. The system may include a pre-processing module101configured to capture audio signal, a frontend processing module102configured to process the audio signal and detect any human voice information that may be included in the audio signal, and a backend processing module103configured to analyze the human voice information and perform operations associated with the human voice information. It may be noted that the audio signal may include background noise and the human voice information.

A pre-processing module101may include a recorder105(e.g., a microphone) which may be used to capture the audio signal as Pulse Density Modulation (PDM) information streams. The PDM stream may include audio signal in a digital format in time domain. The pre-processing module101may include a PDM to Pulse-code modulation (PCM) converter110configured to receive the PDM information streams and generate PCM information streams. The PCM information streams may be viewed as a digital representation of the PDM information streams. The PCM information streams include un-encoded or raw information. For some embodiments, the PCM data stream may be received directly. For example, the recorder105may include an integrated feature such that it generates the PCM information streams.

A frontend processing module102(also referred to as a voice activity detection or VAD module) may include a framing and windowing module115configured to frame and window the PCM information streams received from the PDM-PCM converter110. The framing and windowing module115may frame and window the PCM information streams into multiple frames based on a sampling rate and a frame size (illustrated inFIG. 2). For example, a sampling rate may be set at 16 kHz, and a frame size may be set at 32 ms (milliseconds). Depending on the implementation, a different sampling rate and a different frame size may be used. For some embodiments, the frames may overlap one another with a non-overlapping window. For example, two consecutive frames each having a frame size of 32 ms may overlap one another by 22 ms with a non-overlapping window of 10 ms. Using the 16 kHz sampling rate and the 32 ms frame size examples, the number of samples per frame may be 16×32=512.

An FFT module120may be configured to receive the frames of the PCM information streams and perform necessary transformation of those frames from their time domain representation into a frequency domain representation. The frequency-domain representation of the audio signal may indicate energy or signal levels within each given frequency band over a range of frequencies (illustrated inFIG. 2). After the transformation operations are performed by the FFT module120, a noise estimation and suppression module125may analyze each frame in the frequency domain representation and filter out any noise information that may not be within a same band as the human voice information. For some embodiments, the noise estimation and suppression module125may be implemented as a programmable band-pass filter. In general, the human voice may fall within a band approximately between 20 Hz and 7 KHz (referred to herein as a human voice band). The noise estimation and suppression module125may be configured to detect any energy or signal levels that may fall outside of the human voice band and suppress that energy as out-of-band energy.

There may be a difference between statistical properties of human voice and background noise. For some embodiments, the noise estimation and suppression module125may distinguish the human voice from the background noise based on an assumption that the human voice tends to be in a pattern of short bursts followed by pauses which may be illustrated as short burst of high amplitude energy followed by low amplitude energy. This energy pattern is different from the energy associated with background noise where the mean amplitude of the energy may tend to remain relatively the same or change very slowly from one period of time to another period of time. As a result, it may be possible to keep track and estimate the background noise over a period of time

A human voice detection module130may be configured to use the background noise estimation to determine whether there is a presence of the human voice within the human voice band. For some embodiments, the human voice detection module130may determine the total energy within a frame in the frequency domain representation, compare that with the estimated noise energy, and determine whether there is a presence of the human voice within that frame. For example, when the total energy is larger than the background noise energy multiplied by a threshold, human voice information135may be present. When the total energy is approximately less than or equal to the background noise energy, the human voice information135may not be present. When the human voice information135is not present, the operations of the frontend processing module102may continue with the noise estimation and suppression of the next frame as performed by the noise estimation and suppression module125.

The backend processing module103may include a voice processing module140configured to receive the human voice information135from the frontend processing module102and determine commands or instructions that may be included in the human voice information135. The voice processing module140may cause operations to be performed based on the determined commands or instructions.

Turning toFIG. 2, there is a chart200that illustrates example energy and frames as related to the audio signal. The chart200includes the energy of the audio signal that may be captured by the recorder105(illustrated inFIG. 1) over a period of time. The vertical axis205of the chart200may represent the amplitudes of the energy, and the horizontal axis210may represent time. For some embodiments, the audio signal may be divided into multiple overlapping frames such as, for example, the frames215,220and225. In this example, each of the frames215,220and225may be associated with a window of 32 ms and may offset one another by a non-overlapping window230of 10 ms. The FFT module120(illustrated inFIG. 1) may first process the frame215which may be associated with a window that covers a time period from 0 ms to 31 ms. Ten milliseconds later, the FFT module120may process the second frame220which may be associated with a window that covers a time period from 10 ms to 41 ms. Then, ten milliseconds later, the FFT module120may process the third frame225which may be associated with a window that covers a time period from 20 ms to 51 ms.

Using a sample rate of 16 kHz, each of the frames215,220and225may include 512 samples. Depending on the selected sampling rate and frame size, the number of samples may vary but may usually be a number that is a power of two. For some embodiments, the FFT module120(FIG. 1) may be expected to complete its transformation operations (from the time domain representation to the frequency domain representation) for each frame within a time period that is similar to the size of the non-overlapping window (e.g., 10 ms). In other embodiments, the FFT module may be expected to complete its transformation in the fraction of the time of the non-overlapping window. For example, the FFT module may only need 10% of 10 ms (or 1 ms) to complete its processing. The operations of the FFT module may be represented by the following formula:
X(k)−FFT(X(t))  Formula 1

with X(k) representing the frequency domain representation of the audio signal, X(t) representing the time domain representation of the audio signal, k ranging from a value of 1 to a total number of frequency bands (e.g., 512), and t representing time. The result of the Formula 1 may be a 512 point FFT (based on the 512 samples example). The result from the FFT operations may then be filtered by the noise estimation and suppression module125(illustrated inFIG. 1) to remove any out-of-band noise. The filtering operations of the noise estimation and suppression module125may be represented by the following formula:
Y(k)=H(k)*X(k)  Formula 2

With Y(k) representing the result after the filtering operations, H(k) representing the filtering functions, X(k) representing the frequency domain representation of the audio signal, and k ranging from a value of 1 to the total number of frequency bands (e.g., 512). The filtering operations may be performed by applying the filters to X(k) in the frequency domain representation to remove any out-of-band noise.

Turning toFIG. 3, shown is a block diagram that represents an example embodiment of noise suppression. Once the filter operations are completed, one or more noise suppression operations may be applied to remove or suppress any noise that may not be the human voice. For some embodiments, each noise suppression operation may be associated with a different noise suppression technique. There may be many different techniques that may be combined to perform the noise suppression operations. Referring toFIG. 3, filtered information305may be transmitted to a first noise suppression module310. It may be noted that the filtered information305may be transmitted to the first noise suppression module310as a series of frames with each frame having the same frame size. The resulting information from the first noise suppression module310may be transmitted to a second noise suppression module315, and so on, until the enhanced audio signal (referred to herein as enhanced audio information)325may be generated by the Nth noise suppression module320. For example, the first noise suppression module310may be based on a technique referred to as delay and sum beam formers with fixed coefficients, and the second noise suppression module315may be based on a technique referred to as spectral tracking and sub-band domain Wiener filtering. It may be possible that the enhanced audio information325may have a higher signal to noise ratio than the incoming audio signal after the completion of the noise suppression operations illustrated inFIG. 3.

The enhanced audio information325may include a series of frames with each frame having the same frame size. The enhanced audio information325may be processed to detect the presence of the human voice by the human voice detection module130illustrated inFIG. 1. Depending on the implementation, the processing of the enhanced audio information325may vary. Following is a pseudo code example of a first algorithm that may be used by the human voice detection module130to process the enhanced audio information325:

Task 1: For each frame of the enhanced audio information325, determine the total energy L(n) as:
L(n)=(abs(FFT Output)*H)2where “abs” is an absolute function, “FFT Output” is the result of the FFT module120, and H is a filtering function.

Task 2: For each frame of the enhanced audio information325, estimate the energy of the background noise (or noise floor energy) Lmin(n) as:

Task 3: For each frame of the enhanced audio information325, determine thepresence of the human voice V(n). Where the human voice is present, set V(n)=1, and when the human voice is not present, set V(n)=0. This determination may be performed by comparing the total power L(n) determined in task 1 of the first algorithm with the floor energy of the background noise Lmin(n) determined in task 2 of the first algorithm.

Following is a pseudo code example of a second algorithm that may be used by the human voice detection module130to process the enhanced audio information325. The second algorithm may be somewhat similar to the first algorithm with the additional functions of filtering and contour tracking operations.

Task 1: For each frame of the enhanced audio information325, determine the total energy L(n) as:
L(n)=(abs(FFT Output)*H)2where “abs” is an absolute function, “FFT Output” is the domain frequency representation result of the FFT module120, and H is a filtering function.

Task 2: For each frame of the enhanced audio information325, apply median filtering function H(n) to remove any high frequency noise and contour tracking function CT(n) to remove any sudden burst of noise and to determine an average energy per frame.
H(n)=medianfilter(L(n−S):L(n))
CT(n)=mean(H(n−4):H(n))

Task 3: For each frame of the enhanced audio information325, determine the presence of the human voice V(n). When the human voice is present, set V(n)=1 and when the human voice is not present, set V(n)=4. This determination may be performed by comparing the total energy L(n) determined in task 1 of the second algorithm with the result of the contour tracking operations CT(n) determined in task 2 of the second algorithm.

It may be noted that the efficiency of the first and second algorithms may depend on the background noise conditions. The first algorithm may perform better when there is uniform background noise. The second algorithm may perform better when the background noise includes spurious high frequency noise that is not part of the human voice.

Turning toFIG. 4, there is a chart400that illustrates example false acceptance and false rejection rates associated with the human voice detection operations. In processing the enhanced audio information325to determine whether the human voice is present, two potential types of error may occur. The first type of error (referred to as false reject error) may be related to rejecting audio signal that may include the human voice. The second type of error (referred to as false acceptance error) may be related to accepting noise as the human voice when that noise may not include the human voice. For some embodiments, a false reject rate and a false acceptance rate may be controlled using one or more threshold parameters. For example, when a threshold parameter is set to a low value, all of the noises may be accepted as the human voice; when the threshold parameter is set to a high value, all of the noises are rejected as not including the human voice. By programming the one or more threshold parameters, different operating points may be achieved. Referring to the example first and second algorithms described above, the threshold parameters may include “A”, “B”, “DB”, “Tup” and “Tdown”.

The illustrated example chart400includes a vertical axis405representing a false acceptance rate and a horizontal axis410representing a false acceptance rate for a frame of the enhanced audio information325. A curve420may represent the operating points associated with the first algorithm described above, whereas a curve425may represent the operating points associated with the second algorithm described above. Each dot on the curves420and425may therefore represent an operating point. In this example, the background noise may be 5 dB. It may be noted that the false acceptance rate and the false rejection rate associated with the curve425are generally lower than those associated with the first algorithm. This may be attributed to the additional operations of the mean filtering and contour tracking functions.

Turning toFIG. 5, a hardware architecture embodiment of a voice activity detection module is illustrated. Diagram500may include some components that correspond to the components included in the frontend processing module102(illustrated inFIG. 1). For some embodiments, the windowing and framing module115ofFIG. 1may be implemented in software, and therefore is not included in the diagram500. The components of the frontend processing module102that may be included in the diagram500are the FFT module120, the noise estimation and suppression module125and the human voice detection module130.

It may be noted that there are two sections in the diagram500. The first section includes the components located inside the dotted block505. The second section includes the components located outside of the dotted block505. For some embodiments, the components located inside the dotted block505may be configured to operate at a low voltage (low Vcc), and they may be configured to operate at a slow clock frequency (referred to as clock 1). The components located outside the dotted block505may be configured to operate at a high voltage (high Vcc), and they may be configured to operate at a fast clock frequency (e.g., 16 times the clock frequency, referred to as clock 16). The components located inside the dotted block505may include an FFT module525and a multiplication and filtering module520, and voice activity detection modules550and555. The FFT module525may correspond to the FFT module120ofFIG. 1, the multiplication and filtering module520may correspond to the noise estimation and suppression module125ofFIG. 1, and the voice activated detection modules550and555may correspond to the human voice detection module130ofFIG. 1.

Information associated with the audio signal in the time domain representation may be stored in memory modules510and515. In this example, each of the memory modules510and515may include 512 lines with each line being 48 bits. As such, the total size of the memory may be 2×512×48 bits. When the information is read from the memory modules510and515, the information may be transmitted via the multiplexers511and516to a frame buffer540and then to a frame buffer545. It may be noted that the frame buffer540is located outside of the dotted block505and the frame buffer545is located inside the dotted block505. As such, the frame buffer540may operate at a higher voltage and higher clock frequency (e.g., clock 16) than the frame buffer545.

The FFT module525may be configured to operate as a 32-point FFT or a 16-point FFT module, wherein the configuration of the FFT module525may be controlled by the control module560. The FFT module525may process the information received from the memory modules510and515to transform the information from the time domain representation to the frequency domain representation. The multiplication and filtering module520may receive the results from the FFT module525and perform noise filtering and noise suppression operations to generate the enhanced audio information325(illustrated inFIG. 3). The enhanced audio information325may then be stored in a frame buffer535, wherein the enhanced audio information325may then be processed by the voice activity detection module550or555. Depending on the implementation, there may be multiple voice activity modules operating in parallel. Each of the voice activity detection modules550and555may operate using a different algorithm (e.g., the first or second algorithm described above.) As mentioned, the components located inside the dotted block505may be configured to operate in the low frequency (or clock 1) and at a low voltage (low Vcc). The components located outside of the dotted block505may operate in the high frequency (or clock 16) and at a high voltage (or high Vcc). This may be significant because it may enable the components located inside the dotted block505to consume little power.

Turning toFIG. 6, there is a block diagram that illustrates a 512-point Fast Fourier Transform. Diagram600includes four planes: X plane610, Y plane620, Z plane630and W plane640. The X plane610may have 16 rows and 32 columns for a total of 16×32=512 information points. The information points in the X plane610may correspond to the information received by the FFT module525from the memory modules510and515illustrated inFIG. 5.

For some embodiments, the 512 information points in the X plane610may be transformed using 32-point FFT operations. Since there are 16 rows in the X plane610, the 32-point FFT operations may be performed 16 times. The results of each 32-point FFT operations on the to information points of each row of the X plane610are illustrated in the corresponding row in the Y plane620. For example, the results of the 32-point FFT operation on the information points in the first row (X(0), X(16), . . . , X(495)) of the X plane610are reflected in the first row (Y(0), Y(16), . . . , Y(495)) of the Y plane620.

The FFT operations may be based on complex numbers, each with a real part and an imaginary part. The information points in the X plane610may include real information and not any imaginary information because it may represent real audio input signal. The X plane610may be referred to as a real plane. However, the information points in the Y plane620may include both the real parts and the imaginary parts. The Y plane620may be referred to as a complex plane. The information points in the Y plane620may then be multiplied with a set of imaginary twiddle factors625. This twiddle factor625may correspond to the multiplication operations performed by the multiplication and filtering module520illustrated inFIG. 5. For some embodiments, the twiddle factor625may include four complex multipliers operating in parallel. Since there are 512 information points in the Y plane620, there may be 128 multiplication cycles to obtain 512 information points for the Z plane630. The Z plane630may be referred to as a complex plane.

For some embodiments, the information points in the Z plane630may be transformed using 16-point FFT operations. This may be performed by applying the 16-point FFT operations to the information points (e.g., Z(0), Z(1), . . . , Z(15)) in each column of the Z plane630. Since there are 32 columns in the Z plane630, the 16-point FFT operations may be performed 32 times. The results of each 16-point FFT operations on the information points of each column of the Z plane630are reflected in the corresponding column of the W plane640. For example, the results of the 16-point FFT operations on the information points in the first column (Z(0), Z(1), . . . , Z(15)) of the 7 plane630are reflected in the first column (W(0), W(32), . . . , W(480)) of the W plane640.

Turning toFIG. 7, there is a block diagram that illustrates an example hardware implementation of a Fast Fourier Transform module. FFT module700may be referred to as a hybrid FFT module because it may be used to perform both the 32-point FFT and 16-point FFT operations. The FFT module700may correspond to the FFT module525illustrated inFIG. 5. The decomposition of the 512 information points illustrated inFIG. 5may be suited for audio, voice, or speech processing because these applications may be appropriate for operations performed in series. For example, the decomposition of the 512 information point may include using the 32-point FFT operations (16 times) followed by 512 complex multiplications and finally followed the 16-point FFT operations (32 times). This may be slower than performing the 512-point FFT operations of all the information points in the X plane610in parallel.

In order to have low power operation at low frequencies (e.g., 4 MHz), it may be necessary to reduce as much hardware as possible. It may be noted that most of the power at such low frequencies is in leakage, and hence a correct balance between active and leakage power may be obtained by having the operations performed in series using the same hardware. For some embodiments, instead of having two separate FFT modules—one for the 32-point FFT operations, and the other for the 16-point FFT operations—the FFT module700may be used to perform both of the 32-point and 16-point FFT operations. The FFT module700may include two 16-point FFTs710and720. The 16-point FFTs710and720may be configured to operate in parallel.

The first 16-point FFT710may be associated with the 16-point FFT inputs705and its signals Y(0) to Y(15), or it may be associated with the first input 16 signals X(0) to X(15) of the 32-point FFT inputs715. The second 16-point FFT720may be associated with the next 16 input signals X(16) to X(31) of the 32-point FFT inputs715.

One of the 16-point FFTs710and720inside the FFT module700may be exposed to a control signal725. The control signal725may be coupled with the multiplexer730. When the control signal725is in a first setting (e.g., 0), it may cause the multiplexer730to accept the input signals705and in turn causing the FFT module700to operate as a 16-point FFT module. When the control signal725is in a second setting (e.g., 1), it may cause the multiplexer730to accept the input signals715and in turn causing the FFT module700to operate as a 32-point FFT module.

By using the FFT module700instead of having a separate 32-point FFT module and a 16-point FFT module, the total number of adders may be reduced from about 9500 to about 8300, and the total number of multipliers may be reduced from about 312 to about 56. This may provide significant power and area savings, at a potential and acceptable cost of latency.

Turning toFIG. 8, there is a diagram that illustrates an example hardware implementation of a multiplication and filtering module. The multiplication and filtering module800may be configurable to perform both the complex multiplication operations and the filtering operation. For some embodiments, the complex multiplication operations ofFIG. 8may be used as part of the twiddle factor illustrated inFIG. 6. For some embodiments, the filtering operation ofFIG. 8may be performed after the FFT operations. The multiplication and filtering module800may correspond to the multiplication and filtering module520illustrated inFIG. 5.

The multiplication and filtering module800may be configured to perform a complex multiplication of two complex numbers: (a+jb) and (c+jd). Conventionally, the multiplication to of these two complex numbers are performed as follows:
X=a+jb
Y=c+jd
Z=X*Y=(ac+bd)+j(ad+bc)

where X and Y are the input signals and Z is the output signal. To perform the above multiplication, four (4) multipliers and two (2) adders may be needed using the conventional technique. This complex number multiplication may be performed using four complex multipliers operating in parallel. Following is some examples of hardware-related information when using the convention technique to perform the above operations:

For some embodiments, using a modified technique, the multiplication of the same two complex numbers may be performed as follows:
X=a+jb
Y=c+jd
(ac−bd)=a(c+d)−a(d+b) (here the terms “ad” cancel each other out)
(ad+bc)=a(c+d)−a(c−b) (here the terms “ac” cancel each other out)
Z=X*Y=(ac+bd)+j(ad+bc).

To perform the above multiplication, three (3) multipliers and five (5) adders may be needed. It may be noted that, in comparison with the conventional technique, the number of multipliers in the modified modification is less but the number of adders is more. This may be acceptable because a multiplier is more expensive than an adder in terms of power, area, etc. Following is some examples of hardware-related information when using the modified technique to perform the above operations:

Leaf cells=2848 (here the number of cells is less than conventional technique)

Referring toFIG. 8, the three multipliers include multipliers810,820and850. The five adders include adders860,865,870, and the two adders for the expression “c−b” and “b+d” at the input end. The input signals to the multiplication and filtering module800may be sent to a set of multiplexers802,804,806and808. When these multiplexers are set to one value (e.g., zero), the multiplication and filtering module800may be configured to perform the complex multiplication operations. For example, from the first multiplexer, the phrase “c−b” may be passed through to the multiplier810. From the second multiplexer804, the signal “a” may be passed through to the multiplier810, enabling the multiplier810to generate a result for the expression “a (c−b)”. From the third multiplexer806, the expression “b+d” may be passed to through to the multiplier820. From the fourth multiplexer808, the signal “a” may be passed through to the multiplier820, enabling the multiplier820to generate a result for the expression “a (b+d)”. The results from the multipliers810and820may then be used by the adders860,865and870to generate a final result for Z as X*Y=(ac+bd)+j(ad+bc).

The multiplication and filtering module800may be set to perform filtering operations when the multiplexers802,804,806and808are set to another value (e.g., one). In this case, the multiplication and filtering module800may be configured to perform the filtering on the square of the absolute value of the expression “Coff*abs (xR+jxI)*abs (xR+jxI))” from the FFT operations, where “xR+jxI” is a complex number, “abs” is the absolute function, and “Coff” is a coefficient. The mathematical equivalence of this expression is “Coff (xR2+xI2)”. This expression is illustrated on the right side ofFIG. 8. The inputs xR and xI are illustrated as inputs to the multiplexers802,804,806and808. The first multiplier810may then generate a result for “xR2” and the second multiplier820may generate a result for “xI2”. These results may then be used to generate a value for the expression “Coff (xR2+xI2)” using the coefficient848, the multiplexer840, and the multiplier850.

Turning now toFIG. 9, a method of processing the audio signal to detect the human voice is shown. The method may correspond to the hardware architecture shown inFIG. 5. The method may be implemented as a set of logic instructions stored in a machine- or computer-readable storage medium such as RAM, ROM, PROM, flash memory, etc., in configurable logic such as PLAs, FPGAs, CPLDs, in fixed-functionality logic hardware using circuit technology such as ASIC, CMOS or TTL technology, or any combination thereof. For example, computer program code to carry out operations shown in the method may be written in any combination of one or more programming languages, including an object oriented programming language such as C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages.

Block905provides for storing the audio signal into a memory. As mentioned, the audio signal may include the human voice and other noises, including the background noise. The audio signal may have been recorded by a recorder and may be stored in time domain. The memory may be configured to operate at a first clock frequency (e.g., high frequency). The memory may be configured to operate at a first voltage (e.g., high Vcc).

Block910provides for performing FFT operations on the audio signal to convert it from the time domain into the frequency domain. The FFT operations may be based on the frames associated with the audio signal. As mentioned, the frames may be determined using framing and windowing operations. The FFT operations may be performed by a configurable FFT to module that may be configured to operate as different types of FFT module (e.g., a 32-point FFT module or a 16-point FFT module). The configurable FFT module may operate at a second clock frequency (e.g., low frequency). The configurable FFT module may also operate at a second voltage (e.g., low Vcc).

Block915provides for performing the noise suppression and filtering operations on the frequency domain result of the FFT operations from the block910and based on the second voltage. The filtering operations may be performed using configurable the multiplication and filtering hardware illustrated inFIG. 8. The noise suppression operations may be performed using one or more noise suppression techniques as described withFIG. 3. The noise suppression and filtering operations of block915may operate at the second clock frequency (e.g., low frequency). The noise suppression and filtering operations may also operate at the second voltage (e.g., low Vcc).

Block920provides for performing voice detection after the noise suppression and filtering operations of block915are completed. One or more voice detection algorithms may be used as described inFIG. 5. Total energy and background noise in a frame may be used to determine the presence of the human voice. The voice detection operations of block920may operate at the second clock frequency (e.g., low frequency). The voice detection operations may also operate at the second voltage (e.g. low Vcc).