Determining pitch cycle energy and scaling an excitation signal

An electronic device for determining a set of pitch cycle energy parameters is described. The electronic device includes a processor and executable instructions stored in memory. The electronic device obtains a frame, a set of filter coefficients and a residual signal based on the frame and the set of filter coefficients. The electronic device determines a set of peak locations based on the residual signal and segments the residual signal such that each segment includes one peak. The electronic device determines a first set of pitch cycle energy parameters based on a frame region between two consecutive peak locations and maps regions between peaks in the residual signal to regions between peaks in a synthesized excitation signal to produce a mapping. The electronic device determines a second set of pitch cycle energy parameters based on the first set of pitch cycle energy parameters and the mapping.

TECHNICAL FIELD

The present disclosure relates generally to signal processing. More specifically, the present disclosure relates to determining pitch cycle energy and scaling an excitation signal.

BACKGROUND

In the last several decades, the use of electronic devices has become common. In particular, advances in electronic technology have reduced the cost of increasingly complex and useful electronic devices. Cost reduction and consumer demand have proliferated the use of electronic devices such that they are practically ubiquitous in modern society. As the use of electronic devices has expanded, so has the demand for new and improved features of electronic devices. More specifically, electronic devices that perform functions faster, more efficiently or with higher quality are often sought after.

Some electronic devices (e.g., cellular phones, smart phones, computers, etc.) use audio or speech signals. These electronic devices may encode speech signals for storage or transmission. For example, a cellular phone captures a user's voice or speech using a microphone. For instance, the cellular phone converts an acoustic signal into an electronic signal using the microphone. This electronic signal may then be formatted for transmission to another device (e.g., cellular phone, smart phone, computer, etc.) or for storage.

Transmitting or sending an uncompressed speech signal may be costly in terms of bandwidth and/or storage resources, for example. Some schemes exist that attempt to represent a speech signal more efficiently (e.g., using less data). However, these schemes may not represent some parts of a speech signal well, resulting in degraded performance. As can be understood from the foregoing discussion, systems and methods that improve signal coding may be beneficial.

SUMMARY

An electronic device for determining a set of pitch cycle energy parameters is disclosed. The electronic device includes a processor and instructions stored in memory that is in electronic communication with the processor. The electronic device obtains a frame. The electronic device also obtains a set of filter coefficients. The electronic device additionally obtains a residual signal based on the frame and the set of filter coefficients. The electronic device further determines a set of peak locations based on the residual signal. The electronic device also segments the residual signal such that each segment of the residual signal includes one peak. Furthermore, the electronic device determines a first set of pitch cycle energy parameters based on a frame region between two consecutive peak locations. The electronic device additionally maps regions between peaks in the residual signal to regions between peaks in a synthesized excitation signal to produce a mapping. The electronic device also determines a second set of pitch cycle energy parameters based on the first set of pitch cycle energy parameters and the mapping. Obtaining the residual signal may be further based on the set of quantized filter coefficients. The electronic device may obtain the synthesized excitation signal. The electronic device may be a wireless communication device.

The electronic device may send the second set of pitch cycle energy parameters. The electronic device may perform a linear prediction analysis using the frame and a signal prior to a current frame to obtain the set of filter coefficients and may determine a set of quantized filter coefficients based on the set of filter coefficients.

Determining a set of peak locations may include calculating an envelope signal based on an absolute value of samples of the residual signal and a window signal and calculating a first gradient signal based on a difference between the envelope signal and a time-shifted version of the envelope signal. Determining a set of peak locations may also include calculating a second gradient signal based on a difference between the first gradient signal and a time-shifted version of the first gradient signal and selecting a first set of location indices where the a second gradient signal value falls below a first threshold. Determining a set of peak locations may further include determining a second set of location indices from the first set of location indices by eliminating location indices where an envelope value falls below a second threshold relative to a largest value in the envelope and determining a third set of location indices from the second set of location indices by eliminating location indices that do not satisfy a difference threshold with respect to neighboring location indices.

An electronic device for scaling an excitation is also described. The electronic device includes a processor and instructions stored in memory that is in electronic communication with the processor. The electronic device obtains a synthesized excitation signal, a set of pitch cycle energy parameters and a pitch lag. The electronic device also segments the synthesized excitation signal into segments. The electronic device additionally filters each segment to obtain synthesized segments. The electronic device further determines scaling factors based on the synthesized segments and the set of pitch cycle energy parameters. The electronic device also scales the segments using the scaling factors to obtain scaled segments. The electronic device may be a wireless communication device.

The electronic device may also synthesize an audio signal based on the scaled segments and update memory. The synthesized excitation signal may be segmented such that each segment contains one peak. The synthesized excitation signal may be segmented such that each segment is of length equal to the pitch lag. The electronic device may also determine a number of peaks within each of the segments and determine whether the number of peaks within one of the segments is equal to one or greater than one.

The scaling factors may be determined according to an equation

Sk,m=Ek∑i=0Lk⁢xm⁡(i).
Sk,mmay be a scaling factor for a kthsegment, Ekmay be a pitch cycle energy parameter for the kthsegment, Lkmay be a length of the kthsegment and xmmay be a synthesized segment for a filter output m.

The scaling factors may be determined for a segment according to an equation

Sk,m=Ek∑i=0Lk⁢xm⁡(i).
Sk,mmay be a scaling factor for a kthsegment, Ekmay be a pitch cycle energy parameter for the kthsegment, Lkmay be a length of the kthsegment and xmmay be a synthesized segment for a filter output m if the number of peaks within the segment is equal to one. The scaling factors may be determined for a segment based on a range including at most one peak if the number of peaks within the segment is greater than one.

The scaling factors may be determined for a segment according to an equation

Sk,m=Ek∑i=jn⁢xm⁡(i).
Sk,mmay be a scaling factor for a kthsegment, Ekmay be a pitch cycle energy parameter for the kthsegment, Lkmay be a length of the kthsegment, xmmay be a synthesized segment for a filter output m and j and n may be indices selected to include at most one peak within the segment according to an equation |n−j|≦Lk.

A method for determining a set of pitch cycle energy parameters on an electronic device is also disclosed. The method includes obtaining a frame. The method also includes obtaining a set of filter coefficients. The method further includes obtaining a residual signal based on the frame and the set of filter coefficients. The method additionally includes determining a set of peak locations based on the residual signal. Furthermore, the method includes segmenting the residual signal such that each segment of the residual signal includes one peak. The method also includes determining a first set of pitch cycle energy parameters based on a frame region between two consecutive peak locations. The method additionally includes mapping regions between peaks in the residual signal to regions between peaks in a synthesized excitation signal to produce a mapping. The method further includes determining a second set of pitch cycle energy parameters based on the first set of pitch cycle energy parameters and the mapping.

A method for scaling an excitation on an electronic device is also disclosed. The method includes obtaining a synthesized excitation signal, a set of pitch cycle energy parameters and a pitch lag. The method also includes segmenting the synthesized excitation signal into segments. The method further includes filtering each segment to obtain synthesized segments. The method additionally includes determining scaling factors based on the synthesized segments and the set of pitch cycle energy parameters. The method also includes scaling the segments using the scaling factors to obtain scaled segments.

A computer-program product for determining a set of pitch cycle energy parameters is also disclosed. The computer-program product includes a non-transitory tangible computer-readable medium with instructions. The instructions include code for causing an electronic device to obtain a frame. The instructions also include code for causing the electronic device to obtain a set of filter coefficients. The instructions further include code for causing the electronic device to obtain a residual signal based on the frame and the set of filter coefficients. The instructions additionally include code for causing the electronic device to determine a set of peak locations based on the residual signal. Furthermore, the instructions include code for causing the electronic device to segment the residual signal such that each segment of the residual signal includes one peak. The instructions also include code for causing the electronic device to determine a first set of pitch cycle energy parameters based on a frame region between two consecutive peak locations. Additionally, the instructions include code for causing the electronic device to map regions between peaks in the residual signal to regions between peaks in a synthesized excitation signal to produce a mapping. The instructions further include code for causing the electronic device to determine a second set of pitch cycle energy parameters based on the first set of pitch cycle energy parameters and the mapping.

A computer-program product for scaling an excitation is also disclosed. The computer-program product includes a non-transitory tangible computer-readable medium with instructions. The instructions include code for causing an electronic device to obtain a synthesized excitation signal, a set of pitch cycle energy parameters and a pitch lag. The instructions also include code for causing the electronic device to segment the synthesized excitation signal into segments. The instructions further include code for causing the electronic device to filter each segment to obtain synthesized segments. The instructions additionally include code for causing the electronic device to determine scaling factors based on the synthesized segments and the set of pitch cycle energy parameters. The instructions also include code for causing the electronic device to scale the segments using the scaling factors to obtain scaled segments.

An apparatus for determining a set of pitch cycle energy parameters is also disclosed. The apparatus includes means for obtaining a frame. The apparatus also includes means for obtaining a set of filter coefficients. The apparatus further includes means for obtaining a residual signal based on the frame and the set of filter coefficients. The apparatus additionally includes means for determining a set of peak locations based on the residual signal. Furthermore, the apparatus includes means for segmenting the residual signal such that each segment of the residual signal includes one peak. The apparatus also includes means for determining a first set of pitch cycle energy parameters based on a frame region between two consecutive peak locations. Additionally, the apparatus includes means for mapping regions between peaks in the residual signal to regions between peaks in a synthesized excitation signal to produce a mapping. The apparatus further includes means for determining a second set of pitch cycle energy parameters based on the first set of pitch cycle energy parameters and the mapping.

An apparatus for scaling an excitation is also disclosed. The apparatus includes means for obtaining a synthesized excitation signal, a set of pitch cycle energy parameters and a pitch lag. The apparatus also includes means for segmenting the synthesized excitation signal into segments. The apparatus further includes means for filtering each segment to obtain synthesized segments. The apparatus additionally includes means for determining scaling factors based on the synthesized segments and the set of pitch cycle energy parameters. Furthermore, the apparatus includes means for scaling the segments using the scaling factors to obtain scaled segments.

DETAILED DESCRIPTION

The systems and methods disclosed herein may be applied to a variety of electronic devices. Examples of electronic devices include voice recorders, video cameras, audio players (e.g., Moving Picture Experts Group-1 (MPEG-1) or MPEG-2 Audio Layer 3 (MP3) players), video players, audio recorders, desktop computers/laptop computers, personal digital assistants (PDAs), gaming systems, etc. One kind of electronic device is a communication device, which may communicate with another device. Examples of communication devices include telephones, laptop computers, desktop computers, cellular phones, smartphones, wireless or wired modems, e-readers, tablet devices, gaming systems, cellular telephone base stations or nodes, access points, wireless gateways and wireless routers.

An electronic device or communication device may operate in accordance with certain industry standards, such as International Telecommunication Union (ITU) standards and/or Institute of Electrical and Electronics Engineers (IEEE) standards (e.g., Wireless Fidelity or “Wi-Fi” standards such as 802.11a, 802.11b, 802.11g, 802.11n and/or 802.11ac). Other examples of standards that a communication device may comply with include IEEE 802.16 (e.g., Worldwide Interoperability for Microwave Access or “WiMAX”), Third Generation Partnership Project (3GPP), 3GPP Long Term Evolution (LTE), Global System for Mobile Telecommunications (GSM) and others (where a communication device may be referred to as a User Equipment (UE), NodeB, evolved NodeB (eNB), mobile device, mobile station, subscriber station, remote station, access terminal, mobile terminal, terminal, user terminal, subscriber unit, etc., for example). While some of the systems and methods disclosed herein may be described in terms of one or more standards, this should not limit the scope of the disclosure, as the systems and methods may be applicable to many systems and/or standards.

It should be noted that some communication devices may communicate wirelessly and/or may communicate using a wired connection or link. For example, some communication devices may communicate with other devices using an Ethernet protocol. The systems and methods disclosed herein may be applied to communication devices that communicate wirelessly and/or that communicate using a wired connection or link. In one configuration, the systems and methods disclosed herein may be applied to a communication device that communicates with another device using a satellite.

The systems and methods disclosed herein may be applied to one example of a communication system that is described as follows. In this example, the systems and methods disclosed herein may provide low bitrate (e.g., 2 kilobits per second (Kbps)) speech encoding for geo-mobile satellite air interface (GMSA) satellite communication. More specifically, the systems and methods disclosed herein may be used in integrated satellite and mobile communication networks. Such networks may provide seamless, transparent, interoperable and ubiquitous wireless coverage. Satellite-based service may be used for communications in remote locations where terrestrial coverage is unavailable. For example, such service may be useful for man-made or natural disasters, broadcasting and/or fleet management and asset tracking. L- and/or S-band (wireless) spectrum may be used.

In one configuration, a forward link may use 1× Evolution Data Optimized (EV-DO) Rev A air interface as the base technology for the over-the-air satellite link. A reverse link may use frequency-division multiplexing (FDM). For example, a 1.25 megahertz (MHz) block of reverse link spectrum may be divided into 192 narrowband frequency channels, each with a bandwidth of 6.4 kilohertz (kHz). The reverse link data rate may be limited. This may present a need for low bit rate encoding. In some cases, for example, a channel may be able to only support 2.4 Kbps. However, with better channel conditions, 2 FDM channels may be available, possibly providing a 4.8 Kbps transmission.

On the reverse link, for example, a low bit rate speech encoder may be used. This may allow a fixed rate of 2 Kbps for active speech for a single FDM channel assignment on the reverse link. In one configuration, the reverse link uses a ¼ convolution coder for basic channel coding.

In some configurations, the systems and methods disclosed herein may be used in one or more coding modes. For example, the systems and methods disclosed herein may be used in conjunction with or alternatively from quarter rate voiced coding using prototype pitch-period waveform interpolation. In prototype pitch-period waveform interpolation (PPPWI), a prototype waveform may be used to generate interpolated waveforms that may replace actual waveforms, allowing a reduced number of samples to produce a reconstructed signal. PPPWI may be available at full rate or quarter rate and/or may produce a time-synchronous output, for example. Furthermore, quantization may be performed in the frequency domain in PPPWI. QQQ may be used in a voiced encoding mode (instead of FQQ (effective half rate), for example). QQQ is a coding pattern that encodes three consecutive voiced frames using quarter rate prototype pitch period waveform interpolation (QPPP-WI) at 40 bits per frame (2 kilobits per second (kbps) effectively). FQQ is a coding pattern in which three consecutive voiced frames are encoded using full rate prototype pitch period (PPP), quarter rate prototype pitch period (QPPP) and QPPP respectively. This may achieve an average rate of 4 kbps. The latter may not be used in a 2 kbps vocoder. It should be noted that quarter rate prototype pitch period (QPPP) may be used in a modified fashion, with no delta encoding of amplitudes of prototype representation in the frequency domain and with 13-bit line spectral frequency (LSF) quantization. In one configuration, QPPP may use 13 bits for LSFs, 12 bits for a prototype waveform amplitude, six bits for prototype waveform power, seven bits for pitch lag and two bits for mode, resulting in 40 bits total.

In some configurations, the systems and method disclosed herein may be used for a transient encoding mode (which may provide seed needed for QPPP). This transient encoding mode (in a 2 Kbps vocoder, for example) may use a unified model for coding up transients, down transients and voiced transients. The transient coding mode may be applied to a transient frame, for example, which may be situated on the boundary between one speech class and another speech class. For instance, a speech signal may transition from an unvoiced sound (e.g., f, s, sh, th, etc.) to a voiced sound (e.g., a, e, i, o, u, etc.). Some transient types include up transients (when transitioning from an unvoiced to a voiced part of a speech signal, for example), plosives, voiced transients (e.g., Linear Predictive Coding (LPC) changes and pitch lag variations) and down transients (when transitioning from a voiced to an unvoiced or silent part of a speech signal such as word endings, for example).

The systems and methods disclosed herein describe coding one or more audio or speech frames. In one configuration, the systems and methods disclosed herein may use analysis of peaks in a residual and linear predictive coding (LPC) filtering of a synthesized excitation.

The systems and methods disclosed herein describe simultaneously scaling and LPC filtering an excitation signal to match the energy contour of a speech signal. In other words, the systems and methods disclosed herein may enable synthesis of speech by pitch synchronous scaling of an LPC filtered excitation.

LPC-based speech coders employ a synthesis filter at the decoder to generate decoded speech from a synthesized excitation signal. The energy of this synthesized signal may be scaled to match the energy of the speech signal being coded. The systems and methods disclosed herein describe scaling and filtering the synthesized excitation signal in a pitch synchronous manner. This scaling and filtering of the synthesized excitation may be done either for every pitch epoch of the synthesized excitation as determined by a segmentation algorithm or on a fixed interval which may be a function of a pitch lag. This enables scaling and synthesizing on a pitch-synchronous basis, thus improving decoded speech quality.

As used herein, terms such as “simultaneous,” “match” and “synchronous” may or may not imply exactness. For example, “simultaneous” may or may not mean that two events are occurring at exactly the same time. For instance, it may mean that the occurrence of two events overlaps in time. “Match” may or may not mean an exact match. “Synchronous” may or may not mean that events are occurring in a precisely synchronized fashion. The same interpretation may be applied to other variations of the aforementioned terms.

Various configurations are now described with reference to the Figures, where like reference numbers may indicate functionally similar elements. The systems and methods as generally described and illustrated in the Figures herein could be arranged and designed in a wide variety of different configurations. Thus, the following more detailed description of several configurations, as represented in the Figures, is not intended to limit scope, as claimed, but is merely representative of the systems and methods.

FIG. 1is a block diagram illustrating one configuration of an electronic device102in which systems and methods for determining pitch cycle energy and/or scaling an excitation signal may be implemented. Electronic device A102may include an encoder104. One example of the encoder104is a Linear Predictive Coding (LPC) encoder. The encoder104may be used by electronic device A102to encode a speech (or audio) signal106. For instance, the encoder104encodes frames110of a speech signal106into a “compressed” format by estimating or generating a set of parameters that may be used to synthesize or decode the speech signal106. In one configuration, such parameters may represent estimates of pitch (e.g., frequency), amplitude and formants (e.g., resonances) that can be used to synthesize the speech signal106.

Electronic device A102may obtain a speech signal106. In one configuration, electronic device A102obtains the speech signal106by capturing and/or sampling an acoustic signal using a microphone. In another configuration, electronic device A102receives the speech signal106from another device (e.g., a Bluetooth headset, a Universal Serial Bus (USB) drive, a Secure Digital (SD) card, a network interface, wireless microphone, etc.). The speech signal106may be provided to a framing block/module108. As used herein, the term “block/module” may be used to indicate that a particular element may be implemented in hardware, software or a combination of both.

Electronic device A102may format (e.g., divide, segment, etc.) the speech signal106into one or more frames110(e.g., a sequence of frames110) using the framing block/module108. For instance, a frame110may include a particular number of speech signal106samples and/or include an amount of time (e.g., 10-20 milliseconds) of the speech signal106. The speech signal106in the frames110may vary in terms of energy. The systems and methods disclosed herein may be used to estimate “target” pitch cycle energy parameters and/or scale an excitation to match the energy from the speech signal106using the pitch cycle energy parameters.

In some configurations, the frames110may be classified according to the signal that they contain. For example, a frame110may be classified as a voiced frame, an unvoiced frame, a silent frame or a transient frame. The systems and methods disclosed herein may be applied to one or more of these kinds of frames.

The encoder104may use a linear predictive coding (LPC) analysis block/module118to perform a linear prediction analysis (e.g., LPC analysis) on a frame110. It should be noted that the LPC analysis block/module118may additionally or alternatively use one or more samples from a previous frame110.

The LPC analysis block/module118may produce one or more LPC or filter coefficients116. Examples of LPC or filter coefficients116include line spectral frequencies (LSFs) and line spectral pairs (LSPs). The filter coefficients116may be provided to a residual determination block/module112, which may be used to determine a residual signal114. For example, a residual signal114may include a frame110of the speech signal106that has had the formants or the effects of the formants (e.g., coefficients) removed from the speech signal106. The residual signal114may be provided to a peak search block/module120and/or a segmentation block/module128.

The peak search block/module120may search for peaks in the residual signal114. In other words, the encoder104may search for peaks (e.g., regions of high energy) in the residual signal114. These peaks may be identified to obtain a list or set of peaks122that includes one or more peak locations. Peak locations in the list or set of peaks122may be specified in terms of sample number and/or time, for example. More detail on obtaining the list or set of peaks122is given below.

The set of peaks122may be provided to a pitch lag determination block/module124, segmentation block/module128, a peak mapping block/module146and/or to energy estimation block/module B150. The pitch lag determination block/module124may use the set of peaks122to determine a pitch lag126. A “pitch lag” may be a “distance” between two successive pitch spikes in a frame110. A pitch lag126may be specified in a number of samples and/or an amount of time, for example. In some configurations, the pitch lag determination block/module124may use the set of peaks122or a set of pitch lag candidates (which may be the distances between the peaks122) to determine the pitch lag126. For example, the pitch lag determination block/module124may use an averaging or smoothing algorithm to determine the pitch lag126from a set of candidates. Other approaches may be used. The pitch lag126determined by the pitch lag determination block/module124may be provided to an excitation synthesis block/module140, a prototype waveform generation block/module136, energy estimation block/module B150and/or may be output from the encoder104.

The excitation synthesis block/module140may generate or synthesize an excitation144based on the pitch lag126and a prototype waveform138provided by a prototype waveform generation block/module136. The prototype waveform generation block/module136may generate the prototype waveform138based on a spectral shape and/or the pitch lag126.

The excitation synthesis block/module140may provide a set of one or more synthesized excitation peak locations142to the peak mapping block/module146. The set of peaks122(which are the set of peaks122from the residual signal114and should not be confused with the synthesized excitation peak locations142) may also be provided to the peak mapping block/module146. The peak mapping block/module146may generate a mapping148based on the set of peaks122and the synthesized excitation peak locations142. More specifically, the regions between peaks122in the residual signal114may be mapped to regions between peaks142in the synthesized excitation signal. The peak mapping may be accomplished using dynamic programming techniques known in the art. The mapping148may be provided to energy estimation block/module B150.

One example of peak mapping using dynamic programming is illustrated in Listing (1). The peaks PEin a synthesized excitation signal and the peaks PN3in a modified residual signal may be mapped using dynamic programming.

Two matrices each of 10×10 dimensions (denoted scoremat and tracemat) may be initialized to 0s. These matrices may then be filled according to the pseudo code in Listing (1). For concision, PN3is referred to as PTand the number of peaks in PEand PTare respectively denoted by NEand NT.

The mapping matrix mapped_pks[i] is then determined by:

The segmentation block/module128may segment the residual signal114to produce a segmented residual signal130. For example, the segmentation block/module128may use the set of peak locations122in order to segment the residual signal114, such that each segment includes only one peak. In other words, each segment in the segmented residual signal130may include only one peak. The segmented residual signal130may be provided to energy estimation block/module A132.

Energy estimation block/module A132may determine or estimate a first set of pitch cycle energy parameters134. For example, energy estimation block/module A132may estimate the first set of pitch cycle energy parameters134based on one or more regions of the frame110between two consecutive peak locations. For instance, energy estimation block/module A132may use the segmented residual signal130to estimate the first set of pitch cycle energy parameters134. For example, if the segmentation indicates that the first pitch cycle is between samples S1to S2, then the energy of that pitch cycle may be calculated by the sum of squares of all samples between S1and S2. This may be done for each pitch cycle as determined by a segmentation algorithm. The first set of pitch cycle energy parameters134may be provided to energy estimation block/module B150.

The excitation144, the mapping148, the pitch lag126, the set of peaks122, the first set of pitch cycle energy parameters134and/or the filter coefficients116may be provided to energy estimation block/module B150. Energy estimation block/module B150may determine (e.g., estimate, calculate, etc.) a second set of pitch cycle energy parameters (e.g., gains, scaling factors, etc.)152based on the excitation144, the mapping148, the pitch lag126, the set of peaks122, the first set of pitch cycle energy parameters134and/or the filter coefficients116. In some configurations, the second set of pitch cycle energy parameters152may be provided to a TX/RX block/module160and/or to a decoder162.

The encoder104may send, output or provide a pitch lag126, filter coefficients116and/or pitch cycle energy parameters152. In one configuration, an encoded frame may be decoded using the pitch lag126, the filter coefficients116and/or the pitch cycle energy parameters152in order to produce a decoded speech signal. The pitch lag126, the filter coefficients116and/or the pitch cycle energy parameters152may be transmitted to another device, stored and/or decoded.

In one configuration, electronic device A102includes a TX/RX block/module160. In this configuration, several parameters may be provided to the TX/RX block/module160. For example, the pitch lag126, the filter coefficients116and/or the pitch cycle energy parameters152may be provided to the TX/RX block/module160. The TX/RX block/module160may format the pitch lag126, the filter coefficients116and/or the pitch cycle energy parameters152into a format suitable for transmission. For example, the TX/RX block/module160may encode (not to be confused with frame encoding provided by the encoder104), modulate, scale (e.g., amplify) and/or otherwise format the pitch lag126, the filter coefficients116and/or the pitch cycle energy parameters152as one or more messages166. The TX/RX block/module160may transmit the one or more messages166to another device, such as electronic device B168. The one or more messages166may be transmitted using a wireless and/or wired connection or link. In some configurations, the one or more messages166may be relayed by satellite, base station, routers, switches and/or other devices or mediums to electronic device B168.

Electronic device B168may receive the one or more messages166transmitted by electronic device A102using a TX/RX block/module170. The TX/RX block/module170may decode (not to be confused with speech signal decoding), demodulate and/or otherwise deformat the one or more received messages166to produce speech signal information172. The speech signal information172may comprise, for example, a pitch lag, filter coefficients and/or pitch cycle energy parameters. The speech signal information172may be provided to a decoder174(e.g., an LPC decoder) that may produce (e.g., decode) a decoded or synthesized speech signal176. The decoder174may include a scaling and LPC synthesis block/module178. The scaling and LPC synthesis block/module178may use the (received) speech signal information (e.g., filter coefficients, pitch cycle energy parameters and/or a synthesized excitation that is synthesized based on a pitch lag) to produce the synthesized speech signal176. The synthesized speech signal176may be converted to an acoustic signal (e.g., output) using a transducer (e.g., speaker), stored in memory and/or transmitted to another device (e.g., Bluetooth headset).

In another configuration, the pitch lag126, the filter coefficients116and/or the pitch cycle energy parameters152may be provided to a decoder162(on electronic device A102). The decoder162may use the pitch lag126, the filter coefficients116and/or the pitch cycle energy parameters152to produce a decoded or synthesized speech signal164. More specifically, the decoder162may include a scaling and LPC synthesis block/module154. The scaling and LPC synthesis block/module154may use the filter coefficients116, the pitch cycle energy parameters152and/or a synthesized excitation (that is synthesized based on the pitch lag126) to produce the synthesized speech signal164. The synthesized speech signal164may be output using a speaker, stored in memory and/or transmitted to another device, for example. For instance, electronic device A102may be a digital voice recorder that encodes and stores speech signals106in memory, which may then be decoded to produce a synthesized speech signal164. The synthesized speech signal164may then be converted to an acoustic signal (e.g., output) using a transducer (e.g., speaker). The decoder162on electronic device A102and the decoder174on electronic device B168may perform similar functions.

Several points should be noted. The decoder162illustrated as included in electronic device A102may or may not be included and/or used depending on the configuration. Furthermore, electronic device B168may or may not be used in conjunction with electronic device A102. Furthermore, although several parameters or kinds of information126,116,152are illustrated as being provided to the TX/RX block/module160and/or to the decoder162, these parameters or kinds of information126,116,152may or may not be stored in memory before being sent to the TX/RX block/module160and/or the decoder162.

FIG. 2is a flow diagram illustrating one configuration of a method200for determining pitch cycle energy. For example, an electronic device102may perform the method200illustrated inFIG. 2in order to estimate a set of pitch cycle energy parameters. An electronic device102may obtain202a frame110. In one configuration, the electronic device102may obtain an electronic speech signal106by capturing an acoustic speech signal using a microphone. Additionally or alternatively, the electronic device102may receive the speech signal106from another device. The electronic device102may then format (e.g., divide, segment, etc.) the speech signal106into one or more frames110. One example of a frame110may include a certain number of samples or a given amount of time (e.g., 10-20 milliseconds) of the speech signal106.

The electronic device102may obtain204a set of filter (e.g., LPC) coefficients116. For example, the electronic device102may perform an LPC analysis on the frame110in order to obtain204the set of filter coefficients116. The set of filter coefficients116may be, for instance, line spectral frequencies (LSFs) or line spectral pairs (LSPs). In one configuration, the electronic device102may use a look-ahead buffer and a buffer containing at least one sample of the speech signal106prior to the current frame110to obtain the LPC or filter coefficients116.

The electronic device102may obtain206a residual signal114based on the frame110and the filter coefficients116. For example, the electronic device102may remove the effects of the LPC or filter coefficients116(e.g., formants) from the current frame110to obtain206the residual signal114.

The electronic device102may determine208a set of peak locations122based on the residual signal114. For example, the electronic device102may search the LPC residual signal114to determine208the set of peak locations122. A peak location may be described in terms of time and/or sample number, for example.

The electronic device102may segment210the residual signal114such that each segment contains one peak. For example, the electronic device102may use the set of peak locations122in order to form one or more groups of samples from the residual signal114, where each group of samples includes a peak location. In one configuration, for example, a segment may start from just before a first peak to samples just before a second peak. This may ensure that only one peak is selected. Thus, the starting and/or ending points of a segment may occur at a fixed number of samples ahead of a peak or a local minima in the amplitude just ahead of the peak. Thus, the electronic device102may segment210the residual signal114to produce a segmented residual signal130.

The electronic device102may determine212(e.g., estimate) a first set of pitch cycle energy parameters134. The first set of pitch cycle energy parameters134may be determined based on a frame region between two consecutive (e.g., neighboring) peak locations. For instance, the electronic device102may use the segmented residual signal130to estimate the first set of pitch cycle energy parameters134.

The electronic device102may map214regions between peaks122in the residual signal to regions between peaks142in the synthesized excitation signal. For example, mapping214regions between the residual signal peaks122to regions between the synthesized excitation signal peaks142may produce a mapping148. The synthesized excitation signal may be obtained (e.g., synthesized) by the electronic device102based on a prototype waveform138and/or a pitch lag126.

The electronic device102may determine216(e.g., calculate, estimate, etc.) a second set of pitch cycle energy parameters152based on the first set of pitch cycle energy parameters134and the mapping148. For example, the second set of pitch cycle energy parameters may be determined216as follows. Let the first set of energies (e.g., first set of pitch cycle energy parameters) be E1, E2, E3, . . . , EN-1corresponding to the peak locations in the residuals P1, P2, P3, . . . , PN. In other words,

The electronic device102may store, send (e.g., transmit, provide) and/or use the second set of pitch cycle energy parameters152. For example, the electronic device102may store the second set of pitch cycle energy parameters152in memory. Additionally or alternatively, the electronic device102may transmit the second set of pitch cycle energy parameters152to another electronic device. Additionally or alternatively, the electronic device102may use the second set of pitch cycle energy parameters152to decode or synthesize a speech signal, for example.

FIG. 3is a block diagram illustrating one configuration of an encoder304in which systems and methods for determining pitch cycle energy may be implemented. One example of the encoder304is a Linear Predictive Coding (LPC) encoder. The encoder304may be used by an electronic device102to encode a speech (or audio) signal106. For instance, the encoder304encodes frames310of a speech signal106into a “compressed” format by estimating or generating a set of parameters that may be used to synthesize or decode the speech signal106. In one configuration, such parameters may represent estimates of pitch (e.g., frequency), amplitude and formants (e.g., resonances) that can be used to synthesize the speech signal106.

The speech signal106may be formatted (e.g., divided, segmented, etc.) into one or more frames310(e.g., a sequence of frames310). For instance, a frame310may include a particular number of speech signal106samples and/or include an amount of time (e.g., 10-20 milliseconds) of the speech signal106. The speech signal106in the frames310may vary in terms of energy. The systems and methods disclosed herein may be used to estimate “target” pitch cycle energy parameters, which may be used to scale an excitation signal to match the energy from the speech signal106.

The encoder304may use a linear predictive coding (LPC) analysis block/module318to perform a linear prediction analysis (e.g., LPC analysis) on a current frame310a. The LPC analysis block/module318may also use one or more samples from a previous frame310b(of the speech signal106).

The LPC analysis block/module318may produce one or more LPC or filter coefficients316. Examples of LPC or filter coefficients316include line spectral frequencies (LSFs) and line spectral pairs (LSPs). The filter coefficients316may be provided to a coefficient quantization block/module380and an LPC synthesis block/module384.

The coefficient quantization block/module380may quantize the filter coefficients316to produce quantized filter coefficients382. The quantized filter coefficients382may be provided to a residual determination block/module312and energy estimation block/module B350and/or may be provided or sent from the encoder304.

The quantized filter coefficients382and one or more samples from the current frame310amay be used by the residual determination block/module312to determine a residual signal314. For example, a residual signal314may include a current frame310aof the speech signal106that has had the formants or the effects of the formants (e.g., coefficients) removed from the speech signal106. The residual signal314may be provided to a regularization block/module388.

The regularization block/module388may regularize the residual signal314, resulting in a modified (e.g., regularized) residual signal390. One example of regularization is described in detail in section 4.11.6 of 3GPP2 document C.S0014D titled “Enhanced Variable Rate Codec, Speech Service Options 3, 68, 70, and 73 for Wideband Spread Spectrum Digital Systems.” Basically, regularization may move around the pitch pulses in the current frame to line them up with a smoothly evolving pitch coutour. The modified residual signal390may be provided to a peak search block/module320, a segmentation block/module328and/or to an LPC synthesis block/module384. The LPC synthesis block/module384may produce (e.g., synthesize) a modified speech signal386, which may be provided to energy estimation block/module B350. The modified speech signal386may be referred to as “modified” because it is a speech signal derived from the regularized residual and is therefore not the original speech, but a modified version of it.

The peak search block/module320may search for peaks in the modified residual signal390. In other words, the transient encoder304may search for peaks (e.g., regions of high energy) in the modified residual signal390. These peaks may be identified to obtain a list or set of peaks322that includes one or more peak locations. Peak locations in the list or set of peaks322may be specified in terms of sample number and/or time, for example.

The set of peaks322may be provided to the pitch lag determination block/module324, peak mapping block/module346, segmentation block/module328and/or energy estimation block/module B350. The pitch lag determination block/module324may use the set of peaks322to determine a pitch lag326. A “pitch lag” may be a “distance” between two successive pitch spikes in a current frame310a. A pitch lag326may be specified in a number of samples and/or an amount of time, for example. In some configurations, the pitch lag determination block/module324may use the set of peaks322or a set of pitch lag candidates (which may be the distances between the peaks322) to determine the pitch lag326. For example, the pitch lag determination block/module324may use an averaging or smoothing algorithm to determine the pitch lag326from a set of candidates. Other approaches may be used. The pitch lag326determined by the pitch lag determination block/module324may be provided to the excitation synthesis block/module340, to energy estimation block/module B350, to a prototype waveform generation block/module336and/or may be provided or sent from the encoder304.

The excitation synthesis block/module340may generate or synthesize an excitation344based on the pitch lag326and/or a prototype waveform338provided by the prototype waveform generation block/module336. The prototype waveform generation block/module336may generate the prototype waveform338based on a spectral shape and/or the pitch lag326.

The excitation synthesis block/module340may provide a set of one or more synthesized excitation peak locations342to the peak mapping block/module346. The set of peaks322(which are the set of peaks322from the residual signal314and should not be confused with the synthesized excitation peak locations342) may also be provided to the peak mapping block/module346. The peak mapping block/module346may generate a mapping348based on the set of peaks322and the synthesized excitation peak locations342. More specifically, the regions between peaks322in the residual signal may be mapped to regions between peaks342in the synthesized excitation signal. The mapping348may be provided to energy estimation block/module B350.

The segmentation block/module328may segment the modified residual signal390to produce a segmented residual signal330. For example, the segmentation block/module328may use the set of peak locations322in order to segment the residual signal314, such that each segment includes only one peak. In other words, each segment in the segmented residual signal330may include only one peak. The segmented residual signal330may be provided to energy estimation block/module A332.

Energy estimation block/module A332may determine or estimate a first set of pitch cycle energy parameters334. For example, energy estimation block/module A332may estimate the first set of pitch cycle energy parameters334based on one or more regions of the current frame310abetween two consecutive peak locations. For instance, energy estimation block/module A332may use the segmented residual signal330to estimate the first set of pitch cycle energy parameters334. The first set of pitch cycle energy parameters334may be provided to energy estimation block/module B350. It should be noted that a pitch cycle energy parameter (in the first set334) may be determined at each pitch cycle.

The excitation344, the mapping348, the set of peaks322, the pitch lag326, the first set of pitch cycle energy parameters334, the quantized filter coefficients382and/or the modified speech signal386may be provided to energy estimation block/module B350. Energy estimation block/module B350may determine (e.g., estimate, calculate, etc.) a second set of pitch cycle energy parameters (e.g., gains, scaling factors, etc.)352based on excitation344, the mapping348, the set of peaks322, the pitch lag326, the first set of pitch cycle energy parameters334, the quantized filter coefficients382and/or the modified speech signal386. In some configurations, the second set of pitch cycle energy parameters352may be provided to a quantization block/module356that quantizes the second set of pitch cycle energy parameters352to produce a set of quantized pitch cycle energy parameters358. It should be noted that a pitch cycle energy parameter (in the second set352) may be determined at each pitch cycle.

The encoder304may send, output or provide a pitch lag326, quantized filter coefficients382and/or quantized pitch cycle energy parameters358. In one configuration, an encoded frame may be decoded using the pitch lag326, the quantized filter coefficients382and/or the quantized pitch cycle energy parameters358in order to produce a decoded speech signal. The pitch lag326, the quantized filter coefficients382and/or the quantized pitch cycle energy parameters358may be transmitted to another device, stored and/or decoded.

FIG. 4is a flow diagram illustrating a more specific configuration of a method400for determining pitch cycle energy. For example, an electronic device may perform the method400illustrated inFIG. 4in order to estimate or calculate a set of pitch cycle energy parameters. An electronic device may obtain402a frame310. In one configuration, the electronic device may obtain an electronic speech signal by capturing an acoustic speech signal using a microphone. Additionally or alternatively, the electronic device may receive the speech signal from another device. The electronic device may then format (e.g., divide, segment, etc.) the speech signal into one or more frames310. One example of a frame310may include a certain number of samples or a given amount of time (e.g., 10-20 milliseconds) of the speech signal.

The electronic device may perform404a linear prediction analysis using the (current) frame310aand a signal prior to the (current) frame310a(e.g., one or more samples from a previous frame310b) to obtain a set of filter (e.g., LPC) coefficients316. For example, the electronic device may use a look-ahead buffer and a buffer containing at least one sample of the speech signal from the previous frame310bto obtain the filter coefficients316.

The electronic device may determine406a set of quantized filter (e.g., LPC) coefficients382based on the set of filter coefficients316. For example, the electronic device may quantize the set of filter coefficients316to determine406the set of quantized filter coefficients382.

The electronic device may obtain408a residual signal314based on the (current) frame310aand the quantized filter coefficients382. For example, the electronic device may remove the effects of the filter coefficients316(or quantized filter coefficients382) from the current frame310ato obtain408the residual signal314.

The electronic device may determine410a set of peak locations322based on the residual signal314(or modified residual signal390). For example, the electronic device may search the LPC residual signal314to determine the set of peak locations322. A peak location may be described in terms of time and/or sample number, for example.

In one configuration, the electronic device may determine410the set of peak locations as follows. The electronic device may calculate an envelope signal based on the absolute value of samples of the (LPC) residual signal314(or modified residual signal390) and a predetermined window signal. The electronic device may then calculate a first gradient signal based on a difference between the envelope signal and a time-shifted version of the envelope signal. The electronic device may calculate a second gradient signal based on a difference between the first gradient signal and a time-shifted version of the first gradient signal. The electronic device may then select a first set of location indices where a second gradient signal value falls below a predetermined negative (first) threshold. The electronic device may also determine a second set of location indices from the first set of location indices by eliminating location indices where an envelope value falls below a predetermined (second) threshold relative to the largest value in the envelope. Additionally, the electronic device may determine a third set of location indices from the second set of location indices by eliminating location indices that are not a pre-determined difference threshold with respect to neighboring location indices. The location indices (e.g., the first, second and/or third set) may correspond to the location of the determined set of peaks322.

The electronic device may segment412the residual signal314(or modified residual signal390) such that each segment includes one peak. For example, the electronic device may use the set of peak locations322in order to form one or more groups of samples from the residual signal314(or modified residual signal390), where each group of samples includes a peak location. In other words, the electronic device may segment412the residual signal314to produce a segmented residual signal330.

The electronic device may determine414(e.g., estimate) a first set of pitch cycle energy parameters334. The first set of pitch cycle energy parameters334may be determined based on a frame region between two consecutive peak locations. For instance, the electronic device may use the segmented residual signal330to estimate the first set of pitch cycle energy parameters334.

The electronic device may map416regions between peaks322in the residual signal to regions between peaks342in the synthesized excitation signal. For example, mapping416regions between the residual signal peaks322to regions between the synthesized excitation signal peaks342may produce a mapping348.

The electronic device may determine418(e.g., calculate, estimate, etc.) a second set of pitch cycle energy parameters352based on the first set of pitch cycle energy parameters334and the mapping348. In some configurations, the electronic device may quantize the second set of pitch cycle energy parameters352.

The electronic device may send (e.g., transmit, provide)420the second set of pitch cycle energy parameters352(or quantized pitch cycle energy parameters358). For example, the electronic device may transmit the second set of pitch cycle energy parameters352(or quantized pitch cycle energy parameters358) to another electronic device. Additionally or alternatively, the electronic device may send the second set of pitch cycle energy parameters352(or quantized pitch cycle energy parameters358) to a decoder in order to decode or synthesize a speech signal, for example. In some configurations, the electronic device may additionally or alternatively store the second set of pitch cycle energy parameters352in memory. In some configurations, the electronic device may also send a pitch lag326and/or the quantized filter coefficients382to a decoder (on the same or different electronic device) and/or to a storage device.

FIG. 5is a block diagram illustrating one configuration of a decoder592in which systems and methods for scaling an excitation signal may be implemented. The decoder592may include an excitation synthesis block/module598, a segmentation block/module503and/or a pitch synchronous gain scaling and LPC synthesis block/module509. One example of the decoder592is an LPC decoder. For instance, the decoder592may be a decoder162,174as illustrated inFIG. 1.

The decoder592may obtain one or more pitch cycle energy parameters507, a previous frame residual594(which may be derived from a previously decoded frame), a pitch lag596and filter coefficients511. For example, an encoder104may provide the pitch cycle energy parameters507, the pitch lag596and/or filter coefficients511. In one configuration, this information507,596,511may originate from an encoder104that is on the same electronic device as the decoder592. For instance, the decoder592may receive the information507,596,511directly from an encoder104or may retrieve it from memory. In another configuration, the information507,596,511may originate from an encoder104that is on a different electronic device from the decoder592. For instance, the decoder592may obtain the information507,596,511from a receiver170that has received it from another electronic device102.

In some configurations, the pitch cycle energy parameters507, the pitch lag596and/or filter coefficients511may be received as parameters. More specifically, the decoder592may receive a parameter representing pitch cycle energy parameters507, a pitch lag parameter596and/or a filter coefficients parameter511. For instance, each type of this information507,596,511may be represented using a number of bits. In one configuration, these bits may be received in a packet. The bits may be unpacked, interpreted, de-formatted and/or decoded by an electronic device and/or the decoder592such that the decoder592may use the information507,596,511. In one configuration, bits may be allocated for the information507,596,511as set forth in Table (1).

TABLE (1)ParameterNumber of BitsFilter coefficients 51118(e.g., LSPs or LSFs)Pitch Lag 5967Pitch Cycle Energy8Parameters 507
It should be noted that these parameters511,596,507may be sent in addition to or alternatively from other parameters or information.

The excitation synthesis block/module598may synthesize an excitation501based on a pitch lag596and/or a previous frame residual594. The synthesized excitation signal501may be provided to the segmentation block/module503. The segmentation block/module503may segment the excitation501to produce a segmented excitation505. In some configurations, the segmentation block/module503may segment the excitation501such that each segment (of the segmented excitation505) contains only one peak. In other configurations, the segmentation block/module503may segment the excitation501based on the pitch lag596. When the excitation501is segmented based on the pitch lag596, each of the segments (of the segmented excitation505) may include one or more peaks.

The segmented excitation505may be provided to the pitch synchronous gain scaling and LPC synthesis block/module509. The pitch synchronous gain scaling and LPC synthesis block/module509may use the segmented excitation505, the pitch cycle energy parameters507and/or the filter coefficients511to produce a synthesized or decoded speech signal513. One example of a pitch synchronous gain scaling and LPC synthesis block/module509is described in connection withFIG. 6below. The synthesized speech signal513may be stored in memory, may be output using a speaker and/or may be transmitted to another electronic device.

FIG. 6is a block diagram illustrating one configuration of a pitch synchronous gain scaling and LPC synthesis block/module609. The pitch synchronous gain scaling and LPC synthesis block/module609illustrated inFIG. 6may be one example of a pitch synchronous gain scaling and LPC synthesis block/module509shown inFIG. 5. As illustrated inFIG. 6, a pitch synchronous gain scaling and LPC synthesis block/module609may include one or more LPC synthesis filters617a-c, one or more scale factor determination blocks/modules623a-band/or one or more multipliers627a-b.

The pitch synchronous gain scaling and LPC synthesis block/module609may be used to scale an excitation signal and synthesize speech at a decoder (and/or at an encoder in some configurations). The pitch synchronous gain scaling and LPC synthesis block/module609may obtain or receive an excitation segment (e.g., excitation signal segment)615a, a pitch cycle energy parameter625and one or more filter (e.g., LPC) coefficients. In one configuration, the excitation segment615amay be a segment of an excitation signal that includes a single pitch cycle. The pitch synchronous gain scaling and LPC synthesis block/module609may scale the excitation segment615aand synthesize (e.g., decode) speech based on the pitch cycle energy parameter625and the one or more filter coefficients. For example, the LPC coefficients may be inputs to the synthesis filter. These coefficients may be used in an autoregressive synthesis filter to generate the synthesized speech. The pitch synchronous gain scaling and LPC synthesis block/module609may attempt to scale the excitation segment615ato the level of original speech while synthesizing it. In some configurations, these procedures may also be followed on the same electronic device that encoded the speech signal in order to maintain some memory or a copy of the synthesized speech613at the encoder for future analysis or synthesis.

The systems and methods described herein may be beneficially applied by having the decoded signal match the energy level of original speech. For instance, matching the decoded speech energy level with the original speech may be beneficial when waveform reconstruction is not used. For example, in model-based reconstruction, fine scaling of the excitation to match an original speech level may be beneficial.

As described above, an encoder may determine the energy on every pitch cycle and pass that information to a decoder. For steady voice segments, the energy may remain approximately constant. In other words, from cycle to cycle, the energy may remain fairly constant for steady voice segments. However, there may be other transient segments where the energy may not be a constant. Thus, that contour may be transmitted to the decoder and the energies that are transmitted may be fixed synchronous, which may mean that one unique energy value per pitch cycle is sent from the encoder to the decoder. Each energy value represents the energy of original speech for a pitch cycle. For instance, if there is a set of p pitch cycles in a frame, p energy values may be transmitted (per frame).

The block diagram illustrated inFIG. 6illustrates the scaling and synthesis that may be done for a pitch cycle or segment (e.g., the kthcycle or segment, where 1≦k≦p). An excitation segment615a(e.g., a cycle of an excitation signal) may be input into LPC synthesis filter A617a(e.g., LPC synthesis filter A617a). Initially, the memory619of LPC synthesis filter A617amay be zero. For example, the memory619may be “zeroed.” LPC synthesis filter A617amay produce a first synthesized segment621(e.g., a “first cut” speech signal estimate prior to scaling, which may be denoted x1(i), where i is a sample or index number within the kthsynthesized segment).

Scale factor determination block/module A623amay use the first synthesized segment (e.g., x1(i))621in addition to the (target) pitch cycle energy625for the current segment (e.g., Ek) in order to estimate a first scaling factor (e.g., Sk)635a. The (synthesized) excitation segment615amay be multiplied by the first scaling factor635ato produce a first scaled excitation segment615b.

In the configuration illustrated inFIG. 6, the pitch synchronous scaling and LPC synthesis block/module609is shown as implemented in two stages. In the second stage, a similar procedure may be followed as the first stage. However, in the second stage, instead of using zero memory for LPC synthesis, memory629from the past (e.g., a previous cycle or previous frame) may be used. For instance, for the first cycle (in a frame), memory that was updated at the end of the previous frame may be used; for the second cycle, memory that was updated at the end of the first cycle may be used and so on. Thus, scale factor determination block/module B623bmay produce a second scale factor (e.g., Sk)635band will take the first scaled excitation segment615bfrom the first stage and scale it to obtain a second scaled excitation segment615c.

LPC synthesis may then be performed using the second scaled excitation segment615cby LPC filter C617cto generate the synthesized speech segment613. The synthesized speech segment613has the LPC spectral attributes as well as the appropriate scaling (that approximately matches the original speech signal).

The scale factor determination blocks/modules623a-bmay function according to a configuration. In one configuration (when the excitation signal is segmented according to pitch lag, for example), some excitation segments615amay have more than one peak. In that configuration, a peak search within the frame may be performed. This may be done to ensure that in scale factor calculation, only one peak is used (e.g., not two peaks or multiple peaks). Thus, the determination of the scale factor (e.g., Skas illustrated in Equation 3 below) may use a summation based on a range (e.g., indices from j to n) that does not include multiple peaks. For instance, assume that an excitation segment is used that has two peaks. A peak search may be used that would indicate two peaks. Only a region or range including one peak may be used.

Other approaches in the art may not do an explicit peak search to ensure protection for multiple peaks and scaling. Largely, other approaches apply the scaling on not just pitch lag lengths but on larger segments (although a synthesis method itself may guarantee one peak in some configurations). In some configurations, the general synthesis approach does not guarantee that there is one peak in every cycle, because the pitch lag may be off or the pitch lag may change within the segment. In other words, the systems and methods disclosed herein may take the possibility of multiple peaks into account.

One feature of the systems and methods disclosed herein is that scaling and filtering may be done on a pitch cycle synchronous basis. For example, other approaches may simply scale the residual and filter, but that approach may not match up the energy to the original speech. However, the systems and methods disclosed herein may help to match up the energy of the original speech during every pitch cycle (when sent to the decoder, for example). Some traditional approaches may transmit a scale factor. However, the systems and methods herein may not transmit the scale factor. Rather, energy indicators (e.g., pitch cycle energy parameters) may be sent. That is, traditional approaches may transmit a gain or a scale factor directly applied to excitation signal, thus scaling the excitation in one step. However, the energy of the pitch cycle may not match up in that approach. Conversely, the systems and methods disclosed herein may help to ensure that the decoded speech signal matches the energy of the original speech for every pitch cycle.

For clarity, a more detailed explanation of the pitch synchronous gain scaling and LPC synthesis block/module609is given hereafter. LPC synthesis filter A617amay obtain or receive an excitation segment615a. The excitation segment615amay be a segment of an excitation signal that is the length of a single pitch cycle, for example. Initially, LPC synthesis filter A617amay use a zero memory input619. LPC synthesis filter A617amay produce a first synthesized segment621. The first synthesized segment621may be denoted x1(i), for example. The first synthesized segment621from LPC synthesis filter A617amay be provided to scale factor determination block/module A623a. Scale factor determination block/module A623amay use the first synthesized segment621(e.g., x1(i)) and a pitch cycle energy input (e.g., Ek)625to produce a first scaling factor (e.g., Sk)635a. The first scaling factor (e.g., Sk)635amay be provided to a first multiplier627a. The first multiplier627amultiplies the excitation segment615aby the first scaling factor (e.g., Sk)635ato produce a first scaled excitation segment615b. The first scaled excitation segment615b(e.g., first multiplier627aoutput) is provided to LPC synthesis filter B617band a second multiplier627b.

LPC synthesis filter B617buses the first scaled excitation segment615bas well as a memory input629(from previous operations) to produce a second synthesized segment (e.g., x2(i))633that is provided to scale factor determination block/module B623b. The memory input629may come from the memory at the end of a previous frame and/or from a previous pitch cycle, for example. Scale factor determination block/module B623buses the second synthesized segment (e.g., x2(i))633in addition to the pitch cycle energy input (e.g., Ek)625in order to produce a second scaling factor (e.g., Sk)635b, which is provided to the second multiplier627b. The second multiplier627bmultiplies the first scaled excitation segment615bby the second scaling factor (e.g., Sk)635bto produce a second scaled excitation segment615c. The second scaled excitation segment615cis provided to LPC synthesis filter C617c. LPC synthesis filter C617cuses the second scaled excitation segment615cin addition to the memory input629to produce a synthesized speech signal613and memory631for further operations.

FIG. 7is a flow diagram illustrating one configuration of a method700for scaling an excitation signal. The method700illustrated may use a synthesized (LPC) excitation signal, a set of pitch cycle energy parameters, a pitch lag and/or a set of (LPC) filter coefficients. An electronic device may obtain702a synthesized excitation signal501, a set of pitch cycle energy parameters507, a pitch lag596and/or a set of filter coefficients511. For example, the electronic device may generate the synthesized excitation signal501based on a pitch lag596and/or a previous frame residual signal594. The electronic device may generate the pitch lag596or may receive it from another device.

In one configuration, the electronic device may generate or determine the set of pitch cycle energy parameters507as described above in connection withFIG. 2orFIG. 4. For instance, the set of pitch cycle energy parameters507may be the second set of pitch cycle energy parameters determined as described above. In another configuration, the electronic device may receive the set of pitch cycle energy parameters507sent from another device. In one configuration, the electronic device may generate the filter coefficients511. In another configuration, the electronic device may receive the filter coefficients511from another device.

The electronic device may segment704the synthesized excitation signal501into segments. In one configuration, the electronic device may segment704the excitation501based on the pitch lag596. For example, the electronic device may segment704the excitation501into segments that are the same length as the pitch lag596. In another configuration, the electronic device may segment704the excitation501such that each segment contains one peak.

The electronic device may filter706each segment to obtain synthesized segments. For example, the electronic device may filter706each segment (e.g., unscaled and/or scaled segments) using an LPC synthesis filter and a memory input. For instance, the LPC synthesis filter may use a zero memory input and/or a memory input from previous operations (e.g., from a previous pitch cycle or previous frame synthesis).

The electronic device may determine708scaling factors based on the synthesized segments (e.g., LPC filter outputs) and the set of pitch cycle energy parameters. In one configuration, where each segment only contains one peak, the scaling factors (e.g., Sk) may be determined as illustrated by Equation (1).

Sk,m=Ek∑i=0Lk⁢xm⁡(i)(1)
In Equation (1), Sk,mis a scaling factor for a kthsegment and an mthfilter output or stage, Ekis a pitch cycle energy parameter, Lkis the length of a kthsegment and xmis a synthesized segment (e.g., an LPC filter output), where m is represents a filter output. For example, x1is a first filter output and x2is a second filter output in a series of LPC synthesis filters. It should be noted that Equation (1) only illustrates one example of how the scaling factors may be determined708. Other approaches may be used to determine708scaling factors, for instance, when a segment includes more than one peak.

The electronic device may scale710the segments (of the synthesized excitation) using the scaling factors to obtain scaled segments. For example, the electronic device may multiply an excitation segment (e.g., unscaled and/or scaled excitation segments) by one or more scaling factors. For instance, the electronic device may first multiply an unscaled excitation segment by a first scaling factor to obtain a first scaled segment. The electronic device may then multiply the first scaled segment by a second scaling factor to obtain a second scaled segment.

It should be noted that filtering706each segment, determining708scaling factors and scaling710the segments may be repeated and/or performed in a different order than illustrated inFIG. 7. For example, the electronic device may filter706a segment615ato obtain a first synthesized segment621, determine708a first scaling factor635abased on the first synthesized segment621and scale710the segment615ausing the scaling factor635ato obtain a first scaled segment615b. The steps706,708,710may then be repeated. For instance, the electronic device may then filter706the first scaled segment615bto obtain a second synthesized segment633, determine708a second scaling factor635bbased on the second synthesized segment633and scale710the first scaled segment615bto obtain a second scaled segment615c. Thus, for instance, the electronic device may filter706a segment615ato obtain a first synthesized segment621and may filter706the first scaled segment615b(which was obtained based on segment615aand the synthesized segment621) to obtain the second synthesized segment633. Furthermore, the electronic device may determine708the first scaling factor635aand the second scaling factor635bbased respectively on the first synthesized segment621and the second synthesized segment633(in addition to the pitch cycle energy parameter625). Additionally, the electronic device may scale710the segment615a(to obtain the first scaled segment615b) and the first scaled segment615b(to obtain the second scaled segment615c).

The electronic device may synthesize712an audio (e.g., speech) signal based on the scaled segments. For example, the electronic device may LPC filter a scaled excitation segment in order to generate a synthesized speech signal513. In one configuration, the LPC filter may use the scaled segment and a memory input from previous operations (e.g., memory from a previous frame and/or from a previous pitch cycle) to generate the synthesized speech signal513.

The electronic device may update714memory. For example, the electronic device may store information corresponding to the synthesized speech signal in order to update714synthesis filter memory.

FIG. 8is a flow diagram illustrating a more specific configuration of a method800for scaling an excitation signal. The method800illustrated may use a synthesized (LPC) excitation signal, a set of pitch cycle energy parameters, a pitch lag and/or a set of (LPC) filter coefficients. An electronic device may obtain802a synthesized excitation signal501, a set of pitch cycle energy parameters507, a pitch lag596and/or a set of filter coefficients511. For example, the electronic device may generate the synthesized excitation signal501based on a pitch lag596and/or a previous frame residual signal594. The electronic device may generate the pitch lag596or may receive it from another device.

In one configuration, the electronic device may generate or determine the set of pitch cycle energy parameters507as described above in connection withFIG. 2orFIG. 4. For instance, the set of pitch cycle energy parameters507may be the second set of pitch cycle energy parameters determined as described above. In another configuration, the electronic device may receive the set of pitch cycle energy parameters507sent from another device. In one configuration, the electronic device may generate the filter coefficients511. In another configuration, the electronic device may receive the filter coefficients511from another device.

The electronic device may segment804the synthesized excitation signal501into segments such that each segment is of a length equal to the pitch lag596. For example, the electronic device may obtain the pitch lag596in a number of samples or a period of time. The electronic device may then segment, divide and/or designate portions of a frame of the synthesized excitation signal into one or more segments of length equal to the pitch lag596.

The electronic device may determine806a number of peaks within each of the segments. For example, the electronic device may search each segment to determine806how many peaks (e.g., one or more) are included within each of the segments. In one configuration, the electronic device may obtain a residual signal based on the segment and find regions of high energy within the residual. For example, one or more points in the residual that satisfy one or more thresholds may be peaks.

The electronic device may determine808whether the number of peaks for each segment is equal to one or is greater than one (e.g., greater than or equal to two). If the number of peaks for a segment is equal to one, the electronic device may filter810the segment to obtain synthesized segments. The electronic device may also determine812scaling factors based on the synthesized segments and a pitch cycle energy parameter. In one configuration, the scaling factors may be determined as illustrated by Equation (2).

Sk,m=Ek∑i=0Lk⁢xm⁡(i)(2)
In Equation (2), Sk,mis a scaling factor for a kthsegment, Ekis a pitch cycle energy parameter for a kthsegment, Lkis the length of a kthsegment and xmis a synthesized segment (e.g., an LPC filter output), where m is represents a filter output (number or index, for example). For example, x1is a first filter output and x2is a second filter output in a number (e.g., series) of LPC synthesis filters. As can be observed, the summation in the denominator of Equation (2) may be performed over the entire length of the segment in this case (e.g., the case when there is only one peak in the segment).

If the number of peaks for a segment is greater than one, the electronic device may filter814the segment to obtain synthesized segments. The electronic device may also determine816scaling factors based on the synthesized segments based on a range including at most one peak and a pitch cycle energy parameter. In one configuration, the scaling factors may be determined as illustrated by Equation (3).

In Equation (3), Sk,mis a scaling factor, Ekis a pitch cycle energy parameter, k is a segment number or index, xmis a synthesized segment, where m is represents a filter output. For example, x1is a first synthesized segment (e.g., filter output) and x2is a second synthesized segment (e.g., filter output) in a number (e.g., series) of LPC synthesis filters. Furthermore, j and n are indices selected to include at most one peak within the excitation as illustrated in Equation (4).
|n−j|≦Lk(4)

The electronic device may scale818each segment (of the synthesized excitation) using the scaling factors to obtain scaled segments. For example, the electronic device may multiply an excitation segment (e.g., unscaled and/or scaled excitation segments) by one or more scaling factors. For instance, the electronic device may first multiply an unscaled excitation segment615aby a first scaling factor635ato obtain a first scaled segment615b. The electronic device may then multiply the first scaled segment615bby a second scaling factor635bto obtain a second scaled segment615c.

The electronic device may synthesize820a speech signal based on the scaled segments. For example, the electronic device may LPC filter a scaled excitation segment in order to generate a synthesized speech signal513. In one configuration, the LPC filter may use the scaled segment and a memory input from previous operations (e.g., memory from a previous frame and/or from a previous pitch cycle) to generate the synthesized speech signal513.

The electronic device may update822memory. For example, the electronic device may store information corresponding to the synthesized speech signal in order to update714synthesis filter memory.

FIG. 9is a block diagram illustrating one example of an electronic device902in which systems and methods for determining pitch cycle energy may be implemented. In this example, the electronic device902includes a preprocessing and noise suppression block/module937, a model parameter estimation block/module941, a rate determination block/module939, a first switching block/module943, a silence encoder945, a noise excited linear prediction (NELP) encoder947, a transient encoder949, a quarter-rate prototype pitch period (QPPP) encoder951, a second switching block/module953and a packet formatting block/module955.

The preprocessing and noise suppression block/module937may obtain or receive a speech signal906. In one configuration, the preprocessing and noise suppression block/module937may suppress noise in the speech signal906and/or perform other processing on the speech signal906, such as filtering. The resulting output signal is provided to a model parameter estimation block/module941.

The model parameter estimation block/module941may estimate LPC coefficients through linear prediction analysis, estimate a first approximation pitch lag and estimate the autocorrelation at the first approximation pitch lag. The rate determination block/module939may determine a coding rate for encoding the speech signal906. The coding rate may be provided to a decoder for use in decoding the (encoded) speech signal906.

The electronic device902may determine which encoder to use for encoding the speech signal906. It should be noted that, at times, the speech signal906may not always contain actual speech, but may contain silence and/or noise, for example. In one configuration, the electronic device902may determine which encoder to use based on the model parameter estimation941. For example, if the electronic device902detects silence in the speech signal906, it902may use the first switching block/module943to channel the (silent) speech signal through the silence encoder945. The first switching block/module943may be similarly used to switch the speech signal906for encoding by the NELP encoder947, the transient encoder949or the QPPP encoder951, based on the model parameter estimation941.

The silence encoder945may encode or represent the silence with one or more pieces of information. For instance, the silence encoder945could produce a parameter that represents the length of silence in the speech signal906.

The noise-excited linear predictive (NELP) encoder947may be used to code frames classified as unvoiced speech. NELP coding operates effectively, in terms of signal reproduction, where the speech signal906has little or no pitch structure. More specifically, NELP may be used to encode speech that is noise-like in character, such as unvoiced speech or background noise. NELP uses a filtered pseudo-random noise signal to model unvoiced speech. The noise-like character of such speech segments can be reconstructed by generating random signals at the decoder and applying appropriate gains to them. NELP may use a simple model for the coded speech, thereby achieving a lower bit rate.

The transient encoder949may be used to encode transient frames in the speech signal906. More specifically, the electronic device902may use the transient encoder949to encode the speech signal906when a transient frame is detected. In one configuration, the encoders104,304described in connection withFIGS. 1 and 3above may be examples of a transient encoder949. For instance, a transient encoder949may determine pitch cycle energy parameters such that a decoder may be able to match the energy contour from the original speech signal906in transient frames. Although the transient encoder949is given as one possible application of the systems and methods disclosed herein, it should be noted that the systems and methods disclosed herein may be applied to other types of encoders (e.g., silence encoders945, NELP encoders947and/or prototype pitch period (PPP) encoders such as the QPPP encoder951, etc.).

The quarter-rate prototype pitch period (QPPP) encoder951may be used to code frames classified as voiced speech. Voiced speech contains slowly time varying periodic components that are exploited by the QPPP encoder951. The QPPP encoder951codes a subset of the pitch periods within each frame. The remaining periods of the speech signal906are reconstructed by interpolating between these prototype periods. By exploiting the periodicity of voiced speech, the QPPP encoder951is able to reproduce the speech signal906in a perceptually accurate manner.

The QPPP encoder951may use prototype pitch period waveform interpolation (PPPWI), which may be used to encode speech data that is periodic in nature. Such speech is characterized by different pitch periods being similar to a “prototype” pitch period (PPP). This PPP may be voice information that the QPPP encoder951uses to encode. A decoder can use this PPP to reconstruct other pitch periods in the speech segment.

The second switching block/module953may be used to channel the (encoded) speech signal from the encoder945,947,949,951that was used to code the current frame to the packet formatting block/module955. The packet formatting block/module955may format the (encoded) speech signal906into one or more packets957(for transmission, for example). For instance, the packet formatting block/module955may format a packet957for a transient frame. In one configuration, the one or more packets957produced by the packet formatting block/module955may be transmitted to another device.

FIG. 10is a block diagram illustrating one example of an electronic device1000in which systems and methods for scaling an excitation signal may be implemented. In this example, the electronic device1000includes a frame/bit error detector1061, a de-packetization block/module1063, a first switching block/module1065, a silence decoder1067, a noise excited linear predictive (NELP) decoder1069, a transient decoder1071, a quarter-rate prototype pitch period (QPPP) decoder1073, a second switching block/module1075and a post filter1077.

The electronic device1000may receive a packet1059. The packet1059may be provided to the frame/bit error detector1061and the de-packetization block/module1063. The de-packetization block/module1063may “unpack” information from the packet1059. For example, a packet1059may include header information, error correction information, routing information and/or other information in addition to payload data. The de-packetization block/module1063may extract the payload data from the packet1059. The payload data may be provided to the first switching block/module1065.

The frame/bit error detector1061may detect whether part or all of the packet1059was received incorrectly. For example, the frame/bit error detector1061may use an error detection code (sent with the packet1059) to determine whether any of the packet1059was received incorrectly. In some configurations, the electronic device1000may control the first switching block/module1065and/or the second switching block/module1075based on whether some or all of the packet1059was received incorrectly, which may be indicated by the frame/bit error detector1061output.

Additionally or alternatively, the packet1059may include information that indicates which type of decoder should be used to decode the payload data. For example, an encoding electronic device902may send two bits that indicate the encoding mode. The (decoding) electronic device1000may use this indication to control the first switching block/module1065and the second switching block/module1075.

The electronic device1000may thus use the silence decoder1067, the NELP decoder1069, the transient decoder1071and/or the QPPP decoder1073to decode the payload data from the packet1059. The decoded data may then be provided to the second switching block/module1075, which may route the decoded data to the post filter1077. The post filter1077may perform some filtering on the decoded data and output a synthesized speech signal1079.

In one example, the packet1059may indicate (with the coding mode indicator) that a silence encoder945was used to encode the payload data. The electronic device1000may control the first switching block/module1065to route the payload data to the silence decoder1067. The decoded (silent) payload data may then be provided to the second switching block/module1075, which may route the decoded payload data to the post filter1077. In another example, the NELP decoder1069may be used to decode a speech signal (e.g., unvoiced speech signal) that was encoded by a NELP encoder947.

In another example, the packet1059may indicate that the payload data was encoded using a transient encoder949(using a coding mode indicator, for example). Thus, the electronic device1000may use the first switching block/module1065to route the payload data to the transient decoder1071. The transient decoder1071may be one example of the decoder592described above in connection withFIG. 5. Thus, the transient decoder1071may decode the payload data as described above. It should be noted, however, that the systems and methods disclosed herein may be applied to other decoders, such as the silence decoder1067, NELP decoder1069and/or prototype pitch period (PPP) decoders (e.g., the QPPP decoder1073). The QPPP decoder1073may be used to decode a speech signal (e.g., voiced speech signal) that was encoded by a QPPP encoder951.

The decoded data may be provided to the second switching block/module1075, which may route it to the post filter1077. The post filter1077may perform some filtering on the signal, which may be output as a synthesized speech signal1079. The synthesized speech signal1079may then be stored, output (using a speaker, for example) and/or transmitted to another device (e.g., a Bluetooth headset).

FIG. 11is a block diagram illustrating one configuration of a wireless communication device1102in which systems and methods for determining pitch cycle energy and/or scaling an excitation signal may be implemented. The wireless communication device1102may include an application processor1193. The application processor1193generally processes instructions (e.g., runs programs) to perform functions on the wireless communication device. The application processor1193may be coupled to an audio coder/decoder (codec)1187.

The audio codec1187may be an electronic device (e.g., integrated circuit) used for coding and/or decoding audio signals. The audio codec1187may be coupled to one or more speakers1181, an earpiece1183, an output jack1185and/or one or more microphones1119. The speakers1181may include one or more electro-acoustic transducers that convert electrical or electronic signals into acoustic signals. For example, the speakers1181may be used to play music or output a speakerphone conversation, etc. The earpiece1183may be another speaker or electro-acoustic transducer that can be used to output acoustic signals (e.g., speech signals) to a user. For example, the earpiece1183may be used such that only a user may reliably hear the acoustic signal. The output jack1185may be used for coupling other devices to the wireless communication device1102for outputting audio, such as headphones. The speakers1181, earpiece1183and/or output jack1185may generally be used for outputting an audio signal from the audio codec1187. The one or more microphones1119may be acousto-electric transducer that converts an acoustic signal (such as a user's voice) into electrical or electronic signals that are provided to the audio codec1187.

The audio codec1187may include a pitch cycle energy determination block/module1189. In one configuration, the pitch cycle energy determination block/module1189is included in an encoder, such as the encoders104,304described in connection withFIGS. 1 and 3above. The pitch cycle energy determination block/module1189may be used to perform one or more of the methods200,400described above in connection withFIGS. 2 and 4for determining a set of pitch cycle energy parameters according to the systems and methods disclosed herein.

The audio codec1187may additionally or alternatively include an excitation scaling block/module1191. In one configuration, the excitation scaling block/module1191is included in a decoder, such as the decoder592described above in connection withFIG. 5. The excitation scaling block/module1191may perform one or more of the methods700,800described in connection withFIGS. 7 and 8above.

The application processor1193may also be coupled to a power management circuit1195. One example of a power management circuit is a power management integrated circuit (PMIC), which may be used to manage the electrical power consumption of the wireless communication device1102. The power management circuit1195may be coupled to a battery1197. The battery1197may generally provide electrical power to the wireless communication device1102.

The application processor1193may be coupled to one or more input devices1199for receiving input. Examples of input devices1199include infrared sensors, image sensors, accelerometers, touch sensors, keypads, etc. The input devices1199may allow user interaction with the wireless communication device1102. The application processor1193may also be coupled to one or more output devices1101. Examples of output devices1101include printers, projectors, screens, haptic devices, etc. The output devices1101may allow the wireless communication device1102to produce output that may be experienced by a user.

The application processor1193may be coupled to application memory1103. The application memory1103may be any electronic device that is capable of storing electronic information. Examples of application memory1103include double data rate synchronous dynamic random access memory (DDRAM), synchronous dynamic random access memory (SDRAM), flash memory, etc. The application memory1103may provide storage for the application processor1193. For instance, the application memory1103may store data and/or instructions for the functioning of programs that are run on the application processor1193.

The application processor1193may be coupled to a display controller1105, which in turn may be coupled to a display1117. The display controller1105may be a hardware block that is used to generate images on the display1117. For example, the display controller1105may translate instructions and/or data from the application processor1193into images that can be presented on the display1117. Examples of the display1117include liquid crystal display (LCD) panels, light emitting diode (LED) panels, cathode ray tube (CRT) displays, plasma displays, etc.

The application processor1193may be coupled to a baseband processor1107. The baseband processor1107generally processes communication signals. For example, the baseband processor1107may demodulate and/or decode received signals. Additionally or alternatively, the baseband processor1107may encode and/or modulate signals in preparation for transmission.

The baseband processor1107may be coupled to baseband memory1109. The baseband memory1109may be any electronic device capable of storing electronic information, such as SDRAM, DDRAM, flash memory, etc. The baseband processor1107may read information (e.g., instructions and/or data) from and/or write information to the baseband memory1109. Additionally or alternatively, the baseband processor1107may use instructions and/or data stored in the baseband memory1109to perform communication operations.

The baseband processor1107may be coupled to a radio frequency (RF) transceiver1111. The RF transceiver1111may be coupled to a power amplifier1113and one or more antennas1115. The RF transceiver1111may transmit and/or receive radio frequency signals. For example, the RF transceiver1111may transmit an RF signal using a power amplifier1113and one or more antennas1115. The RF transceiver1111may also receive RF signals using the one or more antennas1115. The wireless communication device1102may be one example of an electronic device102,168,902,1000,1202or wireless communication device1300as described herein.

FIG. 12illustrates various components that may be utilized in an electronic device1200. The illustrated components may be located within the same physical structure or in separate housings or structures. One or more of the electronic devices102,168,902,1000described previously may be configured similarly to the electronic device1200. The electronic device1200includes a processor1227. The processor1227may be a general purpose single- or multi-chip microprocessor (e.g., an ARM), a special purpose microprocessor (e.g., a digital signal processor (DSP)), a microcontroller, a programmable gate array, etc. The processor1227may be referred to as a central processing unit (CPU). Although just a single processor1227is shown in the electronic device1200ofFIG. 12, in an alternative configuration, a combination of processors (e.g., an ARM and DSP) could be used.

The electronic device1200also includes memory1221in electronic communication with the processor1227. That is, the processor1227can read information from and/or write information to the memory1221. The memory1221may be any electronic component capable of storing electronic information. The memory1221may be random access memory (RAM), read-only memory (ROM), magnetic disk storage media, optical storage media, flash memory devices in RAM, on-board memory included with the processor, programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable PROM (EEPROM), registers, and so forth, including combinations thereof.

Data1225aand instructions1223amay be stored in the memory1221. The instructions1223amay include one or more programs, routines, sub-routines, functions, procedures, etc. The instructions1223amay include a single computer-readable statement or many computer-readable statements. The instructions1223amay be executable by the processor1227to implement one or more of the methods200,400,700,800described above. Executing the instructions1223amay involve the use of the data1225athat is stored in the memory1221.FIG. 12shows some instructions1223band data1225bbeing loaded into the processor1227(which may come from instructions1223aand data1225a).

The electronic device1200may also include one or more communication interfaces1231for communicating with other electronic devices. The communication interfaces1231may be based on wired communication technology, wireless communication technology, or both. Examples of different types of communication interfaces1231include a serial port, a parallel port, a Universal Serial Bus (USB), an Ethernet adapter, an IEEE 1394 bus interface, a small computer system interface (SCSI) bus interface, an infrared (IR) communication port, a Bluetooth wireless communication adapter, and so forth.

The electronic device1200may also include one or more input devices1233and one or more output devices1237. Examples of different kinds of input devices1233include a keyboard, mouse, microphone, remote control device, button, joystick, trackball, touchpad, lightpen, etc. For instance, the electronic device1200may include one or more microphones1235for capturing acoustic signals. In one configuration, a microphone1235may be a transducer that converts acoustic signals (e.g., voice, speech) into electrical or electronic signals. Examples of different kinds of output devices1237include a speaker, printer, etc. For instance, the electronic device1200may include one or more speakers1239. In one configuration, a speaker1239may be a transducer that converts electrical or electronic signals into acoustic signals. One specific type of output device which may be typically included in an electronic device1200is a display device1241. Display devices1241used with configurations disclosed herein may utilize any suitable image projection technology, such as a cathode ray tube (CRT), liquid crystal display (LCD), light-emitting diode (LED), gas plasma, electroluminescence, or the like. A display controller1243may also be provided, for converting data stored in the memory1221into text, graphics, and/or moving images (as appropriate) shown on the display device1241.

The various components of the electronic device1200may be coupled together by one or more buses, which may include a power bus, a control signal bus, a status signal bus, a data bus, etc. For simplicity, the various buses are illustrated inFIG. 12as a bus system1229. It should be noted thatFIG. 12illustrates only one possible configuration of an electronic device1200. Various other architectures and components may be utilized.

FIG. 13illustrates certain components that may be included within a wireless communication device1300. One or more of the electronic devices102,168,902,1000,1200and/or the wireless communication device1102described above may be configured similarly to the wireless communication device1300that is shown inFIG. 13.

The wireless communication device1300includes a processor1363. The processor1363may be a general purpose single- or multi-chip microprocessor (e.g., an ARM), a special purpose microprocessor (e.g., a digital signal processor (DSP)), a microcontroller, a programmable gate array, etc. The processor1363may be referred to as a central processing unit (CPU). Although just a single processor1363is shown in the wireless communication device1300ofFIG. 13, in an alternative configuration, a combination of processors (e.g., an ARM and DSP) could be used.

The wireless communication device1300also includes memory1345in electronic communication with the processor1363(i.e., the processor1363can read information from and/or write information to the memory1345). The memory1345may be any electronic component capable of storing electronic information. The memory1345may be random access memory (RAM), read-only memory (ROM), magnetic disk storage media, optical storage media, flash memory devices in RAM, on-board memory included with the processor, programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable PROM (EEPROM), registers, and so forth, including combinations thereof.

Data1347and instructions1349may be stored in the memory1345. The instructions1349may include one or more programs, routines, sub-routines, functions, procedures, code, etc. The instructions1349may include a single computer-readable statement or many computer-readable statements. The instructions1349may be executable by the processor1363to implement one or more of the methods200,400,700,800described above. Executing the instructions1349may involve the use of the data1347that is stored in the memory1345.FIG. 13shows some instructions1349aand data1347abeing loaded into the processor1363(which may come from instructions1349and data1347).

The wireless communication device1300may also include a transmitter1359and a receiver1361to allow transmission and reception of signals between the wireless communication device1300and a remote location (e.g., another electronic device, wireless communication device, etc.). The transmitter1359and receiver1361may be collectively referred to as a transceiver1357. An antenna1365may be electrically coupled to the transceiver1357. The wireless communication device1300may also include (not shown) multiple transmitters, multiple receivers, multiple transceivers and/or multiple antenna.

In some configurations, the wireless communication device1300may include one or more microphones1351for capturing acoustic signals. In one configuration, a microphone1351may be a transducer that converts acoustic signals (e.g., voice, speech) into electrical or electronic signals. Additionally or alternatively, the wireless communication device1300may include one or more speakers1353. In one configuration, a speaker1353may be a transducer that converts electrical or electronic signals into acoustic signals.

The various components of the wireless communication device1300may be coupled together by one or more buses, which may include a power bus, a control signal bus, a status signal bus, a data bus, etc. For simplicity, the various buses are illustrated inFIG. 13as a bus system1355.

The functions described herein may be stored as one or more instructions on a processor-readable or computer-readable medium. The term “computer-readable medium” refers to any available medium that can be accessed by a computer or processor. By way of example, and not limitation, such a medium may comprise RAM, ROM, EEPROM, flash memory, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Disk and disc, as used herein, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray® disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. It should be noted that a computer-readable medium may be tangible and non-transitory. The term “computer-program product” refers to a computing device or processor in combination with code or instructions (e.g., a “program”) that may be executed, processed or computed by the computing device or processor. As used herein, the term “code” may refer to software, instructions, code or data that is/are executable by a computing device or processor.