System and method for addressing discontinuous transmission in a network device

Embodiments included herein are directed towards a system and method for addressing discontinuous transmission (DTX) in a network device. Embodiments may include receiving, at a computing device, an audio signal and generating at least one silence descriptor (SID) frame associated with the audio signal. Embodiments may also include generating at least one no data frame associated with the audio signal. Embodiments may also include initiating a speech decoder, voice enhancement, and speech encoder operation for the at least one SID frame during a DTX operation and bypassing the speech decoder, voice enhancement, and speech encoder functions for the at least one no data frame.

TECHNICAL FIELD

This disclosure relates to communications systems and, more particularly, to a system and method for discontinuous transmission (“DTX”) operation in a network device in order to increase system capacity with voice enhancement.

BACKGROUND

Discontinuous transmission (DTX) may refer to a method of momentarily powering-down, or muting, a mobile or portable wireless telephone set when there is no voice input to the set. In a typical two-way conversation, each individual speaks slightly less than half of the time. If the transmitter signal is switched on only during periods of voice input, the duty cycle of the telephone set can be cut to less than 50 percent. This conserves battery power, eases the workload of the components in the transmitter devices, and frees the voice channel so that time-division multiplexing (“TDM”) and code-division multiplexing access (“CDMA”) networks can take advantage of the available bandwidth by sharing the channel with other signals. On the receiver side, the speech decoder generates comfort noise matching the background noise during DTX to avoid annoying effect of “total silence” when the transmission is switched off.

Among others, it has been established that the DTX operation in wireless networks such as GSM networks and CDMA networks provides a number of advantages, some of which may include, but are not limited to, saving power and battery usage in the user equipment and reducing the overall interference and load in the networks. This optimizes the overall efficiency of a wireless voice communication system. The downlink DTX improves the overall carrier to interference (“C/I”) levels in the network, which results in better spectrum utilization and increased capacity.

SUMMARY OF DISCLOSURE

In one implementation, a computer-implemented method for addressing discontinuous transmission (DTX) in a network device is provided. Embodiments may include receiving, at a computing device, an audio signal and generating at least one silence descriptor (SID) frame associated with the audio signal. Embodiments may also include generating at least one no data frame associated with the audio signal. Embodiments may also include initiating a speech decoder, voice enhancement, and speech encoder operation for the at least one SID frame during a DTX operation and bypassing the speech decoder, voice enhancement, and speech encoder functions for the at least one no data frame.

One or more of the following features may be included. In some embodiments, the method may include relaying a plurality of bits from a decoder associated with the network device to an adaptive encoder. The method may further include relaying a receiver (RX) frame type from the decoder to a transmission (TX) frame type in the adaptive encoder. The method may also include calculating a logarithmic frame energy based upon, at least in part, a current SID frame. The method may further include updating a history memory buffer associated with the logarithmic frame energy using the current SID frame. The method may also include calculating an averaged logarithmic frame energy using the updated history memory buffer. The method may further include defining a decoder voice activity detection (VAD) flag based upon, at least in part, a codec mode rate and saving the VAD_flag in an adaptive encoder memory. The method may also include calculating a decoder excitation for the at least one SID frame based upon, at least in part, a fixed codebook input without including an adaptive codebook input. The method may further include saving original encoded LP coefficients and LSP parameters in an adaptive encoder memory associated with the network device. The method may include copying the at least one SID frame from an RTP packet in the decoder to the output of the adaptive encoder. The method may also include saving an adaptive encoder excitation to an encoder excitation to achieve excitation synchronization. The method may further include generating a new SID frame using one or more LPC parameters available in an adaptive encoder memory.

In another implementation, a system configured to addressing discontinuous transmission (DTX) in a network device is provided. The system may include a processor configured to perform one or more operations. Operations may include receiving, at a computing device, an audio signal and generating at least one silence descriptor (SID) frame associated with the audio signal. Embodiments may also include generating at least one no data frame associated with the audio signal. Embodiments may also include initiating a speech decoder, voice enhancement, and speech encoder operation for the at least one SID frame during a DTX operation and bypassing the speech decoder, voice enhancement, and speech encoder functions for the at least one no data frame.

One or more of the following features may be included. In some embodiments, the operations may include relaying a plurality of bits from a decoder associated with the network device to an adaptive encoder. Operations may further include relaying a receiver (RX) frame type from the decoder to a transmission (TX) frame type in the adaptive encoder. Operations may also include calculating a logarithmic frame energy based upon, at least in part, a current SID frame. Operations may further include updating a history memory buffer associated with the logarithmic frame energy using the current SID frame Operations may also include calculating an averaged logarithmic frame energy using the updated history memory buffer. The method may further include defining a decoder voice activity detection (VAD) flag based upon, at least in part, a codec mode rate and saving the VAD flag in an adaptive encoder memory. Operations may also include calculating a decoder excitation for the at least one SID frame based upon, at least in part, a fixed codebook input without including an adaptive codebook input. Operations may further include saving original encoded LP coefficients and LSP parameters in an adaptive encoder memory associated with the network device. Operations may include copying the at least one SID frame from an RTP packet in the decoder to the output of the adaptive encoder. Operations may also include saving an adaptive encoder excitation to an encoder excitation to achieve excitation synchronization. Operations may further include generating a new SID frame using one or more LPC parameters available in an adaptive encoder memory.

Like reference symbols in the various drawings may indicate like elements.

DETAILED DESCRIPTION

Embodiments provided herein are directed towards a system and method for addressing DTX issues in a network device. Accordingly, some embodiments relate generally to wireless and Voice over Internet Protocol (VoIP) applications in fields that may include, but are not limited to, telephony, data networking, telecommunications, cellular systems, smart phones, and mobile devices. The embodiments included herein may allow for DTX operation in a network device in order to increase system capacity with voice enhancement.

Embodiments included herein may be used in accordance with an Ethernet Voice Processor (“EVP”) as is discussed in further detail hereinbelow. With traditional DTX operation in a voice enhancement device (“VED”), a speech decoder may generate 160 ms of comfort noise and voice quality assurance (VQA) algorithms, and the speech encoder may process 160 ms of comfort noise. Embodiments of the present disclosure may ignore certain data frames during DTX to increase system capacity. Accordingly, in some embodiments, the system may process only 20 ms of comfort noise during the same 160 ms DTX period. As such, the overall CPU usage in term of MIPS may be conserved and the system capacity in terms of number of voice channels simultaneously supported by the EVP system may be increased. By way of example, if 50% of the packets in a call are DTX frames, then the overall EVP system capacity may be doubled. Accordingly, embodiments of the present disclosure may be used to increase the EVP system capacity.

Referring toFIG. 1, there is shown a DTX process10that may reside on and may be executed by computer12, which may be connected to network14(e.g., the Internet or a local area network). Server application20may include some or all of the elements of DTX process10described herein. Examples of computer12may include but are not limited to a single server computer, a series of server computers, a single personal computer, a series of personal computers, a mini computer, a mainframe computer, an electronic mail server, a social network server, a text message server, a photo server, a multiprocessor computer, one or more virtual machines running on a computing cloud, and/or a distributed system. The various components of computer12may execute one or more operating systems, examples of which may include but are not limited to: Microsoft Windows Server™; Novell Netware™; Redhat Linux™, Unix, or a custom operating system, for example.

As will be discussed below in greater detail inFIGS. 2-7, DTX process10may include receiving (202), at a computing device, an audio signal and generating (204) at least one silence descriptor (SID) frame associated with the audio signal. Embodiments may also include generating (206) at least one no data frame associated with the audio signal. Embodiments may also include initiating (208) a speech decoder, voice enhancement, and speech encoder operation for the at least one SID frame during a DTX operation and bypassing (210) the speech decoder, voice enhancement, and speech encoder functions for the at least one no data frame.

The instruction sets and subroutines of DTX process10, which may be stored on storage device16coupled to computer12, may be executed by one or more processors (not shown) and one or more memory architectures (not shown) included within computer12. Storage device16may include but is not limited to: a hard disk drive; a flash drive, a tape drive; an optical drive; a RAID array; a random access memory (RAM); and a read-only memory (ROM).

In some embodiments, DTX process10may reside in whole or in part on one or more client devices and, as such, may be accessed and/or activated via client applications22,24,26,28. Examples of client applications22,24,26,28may include but are not limited to a standard web browser, a customized web browser, or a custom application that can display data to a user. The instruction sets and subroutines of client applications22,24,26,28, which may be stored on storage devices30,32,34,36(respectively) coupled to client electronic devices38,40,42,44(respectively), may be executed by one or more processors (not shown) and one or more memory architectures (not shown) incorporated into client electronic devices38,40,42,44(respectively).

Storage devices30,32,34,36may include but are not limited to: hard disk drives; flash drives, tape drives; optical drives; RAID arrays; random access memories (RAM); and read-only memories (ROM). Examples of client electronic devices38,40,42,44may include, but are not limited to, personal computer38, laptop computer40, smart phone42, television43, notebook computer44, a server (not shown), a data-enabled, cellular telephone (not shown), and a dedicated network device (not shown).

One or more of client applications22,24,26,28may be configured to effectuate some or all of the functionality of DTX process10. Accordingly, DTX process10may be a purely server-side application, a purely client-side application, or a hybrid server-side/client-side application that is cooperatively executed by one or more of client applications22,24,26,28and DTX process10.

Client electronic devices38,40,42,44may each execute an operating system, examples of which may include but are not limited to Apple iOS™, Microsoft Windows™, Android™, Redhat Linux™, or a custom operating system.

Users46,48,50,52may access computer12and DTX process10directly through network14or through secondary network18. Further, computer12may be connected to network14through secondary network18, as illustrated with phantom link line54. In some embodiments, users may access DTX process10through one or more telecommunications network facilities62.

The various client electronic devices may be directly or indirectly coupled to network14(or network18). For example, personal computer38is shown directly coupled to network14via a hardwired network connection. Further, notebook computer44is shown directly coupled to network18via a hardwired network connection. Laptop computer40is shown wirelessly coupled to network14via wireless communication channel56established between laptop computer40and wireless access point (i.e., WAP)58, which is shown directly coupled to network14. WAP58may be, for example, an IEEE 802.11a, 802.11b, 802.11g, Wi-Fi, and/or Bluetooth device that is capable of establishing wireless communication channel56between laptop computer40and WAP58. All of the IEEE 802.11x specifications may use Ethernet protocol and carrier sense multiple access with collision avoidance (i.e., CSMA/CA) for path sharing. The various 802.11x specifications may use phase-shift keying (i.e., PSK) modulation or complementary code keying (i.e., CCK) modulation, for example. Bluetooth is a telecommunications industry specification that allows e.g., mobile phones, computers, and smart phones to be interconnected using a short-range wireless connection.

Smart phone42is shown wirelessly coupled to network14via wireless communication channel60established between smart phone42and telecommunications network facility62, which is shown directly coupled to network14.

In some embodiments, some or all of the devices shown inFIG. 1may be or may include encoders, decoders, or any combination thereof. The term “codec” as used herein may refer to a device or computer program capable of encoding and/or decoding a digital data stream or signal.

Referring now toFIG. 3, and as discussed above, embodiments of DTX process10may be used in accordance with an Ethernet Voice Processor (EVP).FIG. 3depicts a wireless device302, base transceiver station304, base station controller (BSC)306, EVP308and mobile switching center310.FIG. 3shows how a VED solution may be deployed at the A-interface of GSM networks. A voice enhancement device (VED) may be located at a central office, for example, within network equipment, such as the A-interface between MSC310and BSC306in a GSM wireless network.

In some embodiments, the voice enhancement algorithms may be referred to as voice quality assurance (VQA).FIG. 4provides a diagram depicting VED with VQA capability. The encoded bit stream from a first user may be sent to a network device with VQA capability for voice enhancement. Some VQA algorithms may include, but are not limited to, adaptive noise reduction (ANR), acoustic echo cancellation (AEC), hybrid echo cancellation (HEC), adaptive level control (ALC), and enhanced voice intelligence (EVI) modules. The VQA algorithms may operate on the decoded speech. After the impairments such as noise and echo are removed, the speech may be encoded again. Then the encoded bit stream is sent to a second user for decoding. The other direction works similarly where the encoded speech from a second user may be sent to VED for voice enhancement and the re-encoded speech may be sent back to the first user for decoding.

Existing DTX methods focus on performing efficient DTX operation on the end device, i.e., on the radio transmitter and receiver. A voice activity detector (VAD) may be needed for DTX operation, which tells whether the input signal in the current frame contains speech or not under complicated background noise environments. Embodiments of the present disclosure include a method and apparatus for new DTX operation in a network device to increase system capacity in terms of number of voice channels simultaneously supported by an EVP system.

As discussed above, in wireless communications, discontinuous transmission (DTX) happens because mobile users talk about 40%-50% of the time and are silent for the remainder. During a typical DTX period in a voice enhancement device (VED), the speech decoder may generate 160 ms comfort noise; the voice quality assurance (VQA) algorithms and the speech encoder may process 160 ms comfort noise. Embodiments of the present disclosure may be used to increase system capacity of VED. This may be achieved using a variety of techniques, for example, by not processing the 140 ms comfort noise corresponding to DTX no data frames, and, when the DTX silence descriptor (SID) frame does show up, by relaying the state machine status bit and the in-band signaling bits. Without processing the 140 ms of data frames during DTX, embodiments of the present disclosure may provide an approach for VQA timing synchronization.

Embodiments of DTX process10are directed towards DTX operation in a network device with voice enhancement. Some examples discussed herein are in the context of an Adaptive Multi-Rate (AMR) coder. However, it should be noted that the teachings of the present disclosure are not limited to such an example and may be implemented using various coders, some of which may include, but are not limited to, G.729, AMR, and GSM-HR coders. Additionally and/or alternatively, embodiments of DTX process10may apply to any or all speech coders used in GSM and CDMA networks some of which may include, but are not limited to, GSM enhanced full rate (EFR), GSM full rate (FR), GSM-HR, AMR, AMR wideband (AMR-WB), and enhanced variable rate codec (EVRC).

Referring now to Table 1, an embodiment depicting DTX operation and the SID frame format for an AMR coder is provided. An AMR coder may have a 20 ms frame time and eight mode rates: 4.75 kbps, 5.15 kbps, 5.9 kbps, 6.7 kbps, 7.4 kbps, 7.95 kbps, 10.2 kbps, and 12.2 kbps. A voice activity detector (VAD) may be used in the AMR encoder to detect whether the input signal contains speech or not. The output of the VAD function per 20 ms codec frame is a binary flag called VAD_flag, where VAD_flag=1 indicates a speech frame and VAD_flag=0 indicates a noise frame. The DTX operation in the encoder may be controlled by the TX DTX handler. Table 1 illustrates the principle of the TX DTX hander to generate silence descriptor (SID) frames.

At the end of a speech burst, i.e., frame (n−1) in Table 1, there is a hangover period of seven frames where the TX DTX handler generates speech frames even though the VAD_flag=0. The 1stSID frame, called SID_FIRST is generated at the frame (n+7) after the hangover period. After the SID_FIRST frame, the 1st SID_UPDATE frame is generated as the third frame at frame (n+10). Other SID_UPDATE frames may be generated every 8thframe. There is one exceptional scenario where less than 24 frames have elapsed at the end of the speech burst since the last SID_UPDATE frame was computed. In this case the last SID_UPDATE frame may be used. The hangover time may be the same at the initial time of the TX DTX handler. During the NO DATA period, the speech decoder on the RX side generates comfort noise using the latest available SID parameters.

An AMR SID frame may include 39 bits, where the first 35 bits are linear prediction coefficient (LPC) parameters, using an equivalent line spectral frequency (LSF) representation, as illustrated in Table 2 shown below. The 1stthree bits are the index for the un-quantized mean LSF vector over the past eight frames given as follows:

fmean⁡(i)=18⁢∑n=07⁢⁢f⁡(i-n)⁢
where f(i) is the un-quantized LSF parameter vector of the current frame with the form fT=[f1f2. . . f10] since 10-order infinite impulse response (IIR) filter is used for the speech synthesis (M=10). The next 26 bits from s4-s29 in Table 2 are the LSF parameters. The averaged logarithmic frame energy over the past eight frames may be quantized using 6 bits from s30-s35. The SID type indicator (STI) bit indicates SID_FIRST and SID_UPDATE if STI=0 and STI=1 respectively. The last three bits is the mode indication of the current frame with least significant bit (LSB) first.

TABLE 2SID Frame Format for AMR Coderbitsdescriptions1-s3index of reference vectors4-s11index of 1stLSF sub-vectors12-s20index of 2ndLSF sub-vectors21-s29index of 3rdLSF sub-vectors30-s35index of logarithmic frame energys36SID type indicator (STI)s37-s39mode indication (MI)

For VoIP applications, the real-time transport protocol (RTP) provides end-to-end delivery services for data with real-time characteristics. Every RTP packet may include a fixed length RTP header, followed by RTP payload. For AMR, the RTP payload structure is shown in the following Table 3.

TABLE 3RTP Payload Format for AMRPayload headerTable of contents (TOC)Speech data

For both bandwidth-efficient (BE) and octet-aligned (OA) modes, the payload header has a 3-bit field called codec mode request (CMR), and the TOC has a 6-bit field as shown in Table 4.

In Table 4, the F bit indicates whether this frame is followed by another speech frame, FT is the frame type (FT) index, and the Q bit is the frame quality indicator where Q=1 and Q=0 means that the current frame is good and bad respectively. When FT is in the range between [0, 7], FT means the AMR mode rate used in the encoded bit stream. When FT=8 and FT=15, the frame is an AMR SID frame and no data frame, respectively.

The principle of the DTX operation for other speech coders in GSM networks is similar to Table 1 for AMR. AMR-WB may include an identical timing procedure as that for AMR, e.g., one SID_UPDATE frame may be generated in every 8thframe. For GSM-HR, one SID frame may be generated in every 240 ms. In the case of GSM EFR and GSM FR, one SID frame is generated in every 24 frames, corresponding to 480 ms background noise.

In terms of SID frame format, AMR-WB SID frame may be similar to AMR, except it has 40 bits since the mode indication has four bits in order to represent 9 mode rates for AMR-WB. For GSM-HR, the SID codeword with 79 bits of all “1” at the end of each frame is used for SID identification. In the case of GSM EFR, the SID codeword may be defined by 95 bits of all “1” based on a table. For GSM FR, the SID codeword uses 95 bits of all zero for SID identification.

Embodiments of DTX process10may include an EVP that may provide Voice Quality Assurance (VQA), Experience Intelligence (EXi), trans-coding, RTP packet processing, jitter buffer (JB) for network impairments, etc. An example of the VED model is provided inFIG. 5. As shown in the figure, an RTP module may be used to validate the incoming packets in a typical VOIP application. The JB module provides algorithms to deal with network impairments such as jitter, delay, packet loss, packet re-order, packet duplicates, etc. After speech encoder, the speech frames are assembled in the RTP packetizer module.

Referring back toFIG. 4, the speech decoder in the VED may be referred to as a partial decoder. The speech encoder in the VED may be referred to as an adaptive encoder.FIG. 6depicts an embodiment when both users are using an AMR coder. When other speech coders, such as a G.729 coder and GSM-HR coder, are used, similar diagrams can be obtained. InFIG. 6, CMR, FT, and the decoder parameters LP filter coefficients may be copied from the decoder input to the adaptive encoder output, to avoid codec tandeming.

Based onFIG. 6and Table 1, during AMR DTX operation, the DTX timing procedure in a traditional VED is specified in Table 5. As shown in Table 5, the AMR decoder, VQA module, and AMR encoder may be called for all speech frames from the n-th frame to the (n+7)-th frame. From frame (n+1) to frame (n+7), the JB provides the no data frame information to the speech decoder. Then the speech decoder may generate comfort noise. The VQA algorithms may be applied to process the impairments such as echo and noise. The output signal may be encoded using AMR encoder. Then, the encoder bit stream is sent out using RTP packet format.

An example of an EVP DTX operation timing procedure can be specified in Table 6.

In comparison with traditional DTX operation for voice enhancement device (VED), embodiments of DTX process10completely ignore the no data frames. The speech decoder, VQA algorithms, and the speech encoder may not be called at all during the period of no data frames.

With traditional DTX operation in VED, the speech decoder generates 160 ms comfort noise; the speech decoder, VQA algorithms, and the speech encoder are called eight times from the n-th frame to the (n+7)-th frame. In some embodiments, the speech decoder generates 20 ms comfort noise; the speech decoder, VQA algorithms, and the speech encoder are called only one time in the new EVP system during the same 160 ms DTX operation period. Thus, the overall CPU usage in term of MIPS is saved; the system capacity in terms of number of voice channels simultaneously supported by EVP system is increased. If 50% of packets in a call are DTX frames, then the overall EVP system capacity is almost doubled.

Let us describe the new DTX timing procedure inFIG. 6without running the consecutive no data frames as shown in Table 6. The 39 bits of AMR SID frame may be divided into three parts: one STI bit, three MI bits, and 35 bits for comfort noise. The STI bit contains state machine information in remote AMR encoder of user 1, which cannot be recovered, since only 20 ms samples are available and other 140 ms NO DATA samples are unavailable in our EVP system. The three MI bits contain DTX in-band signaling information; they indicate the codec mode rate that would have been used if the current frame had been a speech frame instead of SID frame. The VED system in EVP is unable to generate its own MI bits.

Embodiments of DTX process10may relay the last four bits completely. The system capacity may be increased by taking advantage of the NO DATA frames; meanwhile the RX DTX operation of remote user 2 inFIG. 6is unaffected.

For example, suppose that pAdaptive is a pointer to the defined adaptive encoder memory. A variable pAdaptive→sid_para in the adaptive encoder memory may be used to save the last four bits of a SID frame. When an SID frame is received, the speech decoder obtains the last four bits and save them in pAdaptive→sid_para. Since FT is relayed as shown inFIG. 6, an SID frame may be generated from the speech encoder in VED. At the time when a new SID frame is synthesized, pAdaptive→sid_para is used as the last four bits, leading to STI and MI bits relay for the SID frame.

An example describing a frame type relay in the EVP system is provided below. The RX frame type may be defined in the data structure RXFrameType. After receiving the RTP packet, the Q bit in Table 4 may be used to determine if the current frame is a bad frame, given by a variable bfi, where bfi=1 indicates a bad frame and bfi=0 indicates a good frame. The RX frame type may be determined using the following procedure.

In some embodiments, if bfi equals 1, the AMR mode information from the FT field in Table 4 may be used to determine whether the current frame type is a bad speech frame or bad SID frame (i.e., RX_SPEECH_BAD or RX_SID_BAD), unless it is a no data frame in which case the frame type may be defined as RX_NO_DATA. If the current frame is a good frame where bfi=0, the STI bit in Table 2 may be used to determine the RX frame type: STI=0 indicates RX_SID_FIRST and STI=1 indicates RX_SID_UPDATE. If no mode information is available, the mode information from the previous frame may be used and the current RX frame type may be changed from RX_SPEECH_BAD to RX_SID_BAD if previous frame type is bigger or equals to RX_SID_FIRST. Finally, the RX frame type may be saved to the adaptive encoder memory pAdaptive→dec_frameType.

In some embodiments, the TX frame type may have a defined data structure TXFrameType. After the AMR encoder is called, the encoded bit stream from the AMR encoder may be generated by the actual used mode. If the used mode is MRDTX (=8), then define TX frame type as TX_SID_FIRST, TX_SID_UPDATE, TX_NO_DATA, TX_SPEECH_BAD, and TX_SID_BAD if pAdaptive→dec_frameType equals to RX_SID_FIRST, RX_SID_UPDATE, RX_NO_DATA, RX_SPEECH_BAD, and RX_SID_BAD, respectively. If the used mode is in the range between 0 and 7, then define TX frame type as TX_SPEECH_GOOD.

In some embodiments, for the AMR encoder to generate a SID frame, the averaged logarithmic energy may be calculated. The logarithmic frame energy may be computed for each frame by the following formula:

enl⁢og⁡(i)=12⁢log2⁡(1N⁢∑n=0N-1⁢⁢y2⁡(n)),Equation⁢⁢(1)
where y(n) is the encoder input signal of the current frame i as shown inFIG. 6. The averaged logarithmic energy may be computed by

enlogmean⁡(i)=18⁢∑n=07⁢⁢enlog⁡(i-n)Equation⁢⁢(2)
for frame i, and is further quantized using 6 bits s30-s35 as shown in Table 2.

The calculation of the averaged logarithmic energy in a SID frame requires eight consecutive noise frames. For EVP DTX operation, the other seven no data frames, corresponding to seven consecutive noise frames, are not available. Thus the averaging operation may not finish. Embodiments of the present disclosure may determine the averaged logarithmic energy using the following DTX memory synchronization approach.

Suppose that log_en is the averaged logarithmic energy obtained from Equation (1) using this SID frame. The DTX encoder state has an array log_en_hist[ ] with maximum size eight to represent the history of the averaged logarithmic energy. When the used mode rate in the AMR encoder is MRDTX (=8), corresponding to a SID frame in the AMR decoder inFIG. 6, an update of the history memory of the logarithmic energy just using this frame may be performed as the previous seven no data frames are not available. This may involve assigning log_en to the eight elements in the buffer buffer log_en_hist[ ]. Accordingly, the history memory of the averaged logarithmic energy due to DTX operation without no data frames is synchronized, and the SID frame with correct comfort noise energy level can be generated using Equation (2).

In some embodiments, a voice activity detector (VAD) is running in the AMR encoder to generate a binary flag indicating whether the input signal contains speech or not, where 1 indicates speech and 0 indicates noise. Such a voicing flag may be used to drive the TX DTX timing procedure as shown in Table 1. In this section, an example showing a methodology for deriving a new decoder VAD flag to drive the TX DTX operation without running the VAD function is provided.

In the AMR decoder, a new VAD flag may be defined, which may be referred to as vadFlagDecoder. If the AMR mode rate, derived from the FT bit field from RTP payload as seen in Table 4, is in the range between MRDTX (=8) and 15, then define vadFlagDecoder=0. Otherwise if it is in the range between 0 and 7, define vadFlagDecoder=1.

In some embodiments, the VAD function in the AMR encoder may be disabled to save CPU MIPS usage and improve the system capacity. The output vad_flag from the VAD function may be defined as the new decoder VAD_flag vadFlagDecoder. The TX DTX handler may also be disabled. The used mode in the encoder may be used to decide whether we need generate a SID frame or not. A flag compute_sid_flag may be used to indicate whether it is necessary to generate an SID frame. If the used mode is MRDTX (=8), set the flag compute_sid_flag=1 so that a SID frame is always generated whenever the DTX encoder function is called.

In some embodiments, some VQA algorithms may include, but are not limited to, fast Fourier transform (FFT), voice activity detector (VAD), adaptive noise reduction (ANR), acoustic echo cancellation (AEC), hybrid echo cancellation (HEC), adaptive level control (ALC), and enhanced voice intelligence (EVI) modules, and packet loss concealment (PLC) modules, where AEC, HEC, and PLC modules may need to measure the timing changes from the incoming RTP packets, in particular, during DTX operation period.

In some embodiments, DTX process10may include one or more Experience Intelligence (EXi) modules. The EXi may include a non-intrusive voice monitoring tool that may include network impairment to estimate the voice quality in term of mean-opinion-score (MOS), based on ITU G.107 E Model. EXi module may be designed to understand the characteristics of VoIP and the impact of IP network impairments on voice quality. The EXi module may generate call quality metrics, including listening quality (LQ) and conversational quality (CQ) MOS scores. The basic rating factor R in the E-model is given by:
R=Ro−Is−Id−Ie-eff+AEquation (3)
where Rois the basic signal-to-noise (SNR) ratio, Isis the combination of all impairments with the voice transmission, Idis the impairments caused by delay, Ie-effis the effective impairments caused by low bit rate codecs, and A is the advantage factor. The input to the E-model may include one or more of the following: signal level, noise level, SNR, real-time packet loss impairment, and the echo related parameters including delay and echo path loss. It may be necessary to provide the above metrics when the DTX operation occurs. The output of the E-model may include R factors and MOS scores for LQ and CQ. Without running VQA functions during the period of no data frames, it may be necessary to compensate the speech and noise power level. Otherwise, the EXi scores may not be accurate.

Suppose that chP is a pointer to the defined channel memory with channel state data structure. When a RTP packet arrives at EVP system, the RTP timestamp as a 32-bit unsigned integer may be saved in a local variable curr_timestamp. The channel state memory chP→preValidTS may be used to save the timestamp value, and may be initialized to zero when the channel memory is initialized. In case that chP→preValidTS=0, set chP→preValidTS as the current timestamp value. Otherwise, the timestamp jump tsSkips in term of AMR codec frame time 20 ms is determined as follows. First, calculate the difference between curr_timestamp and previous saved timestamp chP→preValidTS. Then, divide the difference by 160 and then minus one to obtain the timestamp jump tsSkips in terms of AMR codec frame time 20 ms, where 160 is the expected timestamp change for consecutive arriving packets. Since RTP timestamp is a 32-bit integer, wrapping around situation need be taken into account. After that, curr_timestamp value is saved to chP→preValidTS.

Suppose the VQA input signal is s(n) and the output signal is y(n) as shown inFIG. 6. To measure the speech and noise power, a voice activity detector (VAD) function in the VQA module is called to detect whether the input signal s(n) contains speech or not. The output is a flag called VadFlag where VadFlag=0 and 1 mean noise and speech respectively. The input frame power is calculated by

Similarly, the output power Poutis obtained.

If tsSkips=0 (i.e., there is no timestamp jump) then call the measurement process function PWRMEA_process( ) for the input power Pinand the output power Poutto calculate the average speech and noise power based on the VAD flag VadFlag. Suppose that pState is a pointer to the defined power measurement state memory with a state data structure. Then, at the end of the function PWRMEA_process( ), the input power and VadFlag are saved in the state variables pState→pre_framePwr pState→pre_VadFlag respectively.

If tsSkips>0 (i.e., there is a timestamp jump) then DTX process10may use the previous saved power and VadFlag to repeat the power measurement process (tsSkips) times. Then, call the measurement process function PWRMEA_process( ) using the new input power Pinand the output power Poutto calculate the average speech and noise power based on the new VAD flag VadFlag. Thus, the power measurement process may be called (tsSkips+1) times with different power measurements and VAD flags. At the end of the function PWRMEA_process( ) the latest power measurement and VadFlag may be saved in pState→pre_framePwr and pState→pre_VadFlag respectively. The above process may be repeated for both input signal s(n) and the output signal y(n).

In some embodiments, the AEC module may use the following formula to calculate reference signal energy:
P=(1−α)P+αy2(n)  Equation (5)
where α= 1/64 and α= 1/512 for short term and long term reference signal energy calculation respectively.

If the timestamp jump tsSkips=0 (i.e., there is no timestamp jump) then DTX process10may update the reference signal power once for the AEC operation on the other direction. There are two steps involving the reference signal power updating, one step in the time-domain and another step in the frequency-domain. Suppose that chPrev is a pointer to the defined channel memory on the other direction of the call with data structure PCM_CHAN_STATE, and hAec is a pointer to the defined AEC state memory on the other direction of the call with data structure AEC_STATE.

In this example, in the time-domain, the three buffers hAec→lLongWinRefEnr[ ], hAec→lShortWinRefEnr[ ], and hAec→nRefVad[ ], representing the long term reference signal energy, short term reference signal energy, and the VAD flag respectively, are shifted to the right one position. Then, hAec→lLongWinRefEnr[0], hAec→lShortWinRefEnr[0], and hAec→nRefVad[0] may be updated with latest long term reference signal energy, latest short term reference signal energy, and the latest VAD flag respectively.

In the frequency domain, the dB value of the latest signal energy based on each critical band is stored in an array EdB[ ] with array size 18 since there are 18 critical bands. Then, the EdB[ ] array may be copied to hAec→nRefEnr[nIdx0] [ ], where nIdx0 is the current index position. Meanwhile, the EdB[ ] array may be saved in the array hAec→preRefEdb[ ] for the next frame.

If tsSkips>0 (i.e., there is a timestamp jump) then in the time domain, DTX process10may update the three buffers hAec→lLongWinRefEnr[ ], hAec→lShortWinRefEnr[ ], and hAec→nRefVad[ ] as many as (tsSkips) times using previous available measurements. In the frequency domain, previous saved power level in dB value in the buffer hAec→preRefEdb[ ] may be used to update the buffer hAec→nRefEnr[nIdx0] [ ] as many as (tsSkips) times, where the index nIdx0 keeps decreasing until reaching zero, in which case it will be set to the maximal value (BULKDELAY_FRM_MAX+1), where BULKDELAY_FRM_MAX represents the maximal frame number for the buffer. After that, the procedure may be repeated as the case where tsSkips=0 using latest signal and EdB[ ] buffer. The AEC timing may be synchronized by the above procedure during the DTX operation where the no data frames are not processed.

In some embodiments, DTX process10may include excitation synchronization between an AMR encoder and an AMR adaptive encoder for DTX operations. With regard to decoder excitation during DTX, suppose that pAdaptive is a pointer to the defined adaptive encoder memory with data structure ADAP_ENC_STATE. If the received frame is an AMR SID frame, the interpolated linear prediction coefficient (LPC) parameters A[ ] with array size 44 and the decoded line spectral pair (LSP) parameters may be saved in the adaptive encoder memory pAdaptive→A[ ] and pAdaptive→lsp[ ] respectively. The total excitation before the synthesis filter in the decoder is given by:
u(n)=ĝcc(n)  Equation (6)
where u(n) is the total excitation, c(n) is the fixed codebook vector, and ĝcis the quantized fixed codebook gain respectively. The total decoder excitation u(n) before the synthesis filter is denoted by e2 (n) with 160 samples for current SID frame. The speech synthesis filter is provided below:

Hf⁡(z)=1A^⁡(z),A^⁡(z)=1+∑i=1M⁢⁢a^i⁢z-i,M=10Equation⁢⁢(7)
where âi, 1≦i≦10 are the quantized LPCs. The comfort noise s(n) may be synthesized by filtering the reconstructed excitation signal u(n) through the LP synthesis filter using the speech synthesis model. At the end of the decoder function, the total excitation u(n) per codec frame may be saved in the adaptive encoder memory pAdaptive→dec_curr_exc[ ].

Referring again toFIG. 6, the output signal after VQA module is denoted by y(n). In this example, let pEncState be a pointer to the defined encoder state memory and pEncState→old_exc[ ] be the encoder excitation buffer. The new excitation e1(n) associated with the output signal y(n) is obtained by passing y(n) through the analyser filter Â(z) as defined below:

e⁢⁢1⁢(n)=s⁡(n)+∑i=1M⁢⁢a^i⁢s⁡(n-i)Equation⁢⁢(8)
where {circumflex over (α)}i, 1≦i≦M are the interpolated Â(z) coefficients for each sub-frame with 40 samples.

DTX process10may compare the distance D between e1(n) and previous e2(n). If the distance D is very small, then the original SID frame from the RTP packet in the decoder is copied to the output of the AMR encoder. The adaptive encoder excitation e2(n) may be saved to the encoder excitation buffer pEncState→old_exc[ ] for current frame to achieve excitation synchronization. This is a result of the fact that the next frame may be a speech frame and it may be necessary to re-encode it. In that example, the adaptive codebook generation for the next frame may need the excitation vector in the current SID frame. If the distance D is too large it may be necessary to use the DTX encoder to generate a new SID frame using LPC parameters available in the adaptive encoder memory pAdaptive→A[ ] and pAdaptive→lsp[ ].

As discussed above, in some embodiments, the EVP system may process one SID frame; the seven other data frames may be completely ignored. The last four bits of the 39-bit AMR SID frame may be particularly useful. The SID type indicator (STI) bit may include state machine status in a remote AMR encoder. In some embodiments, the VED system may not be able to recover the state machine since the 140 ms consecutive comfort noise samples, corresponding to seven no data frames, may be unavailable. The three mode indication (MI) bits may include DTX in-band signaling information. The EVP system may leave them untouched. In some embodiments, DTX process10may be configured to relay the last four bits completely.

After the decoded speech signal is processed by VQA (e.g., using adaptive noise cancellation (ANC)) the remaining 35 bits in a SID frame, including six bits for the averaged logarithmic frame energy may be handled as discussed below. The first 29 bits of the AMR SID frame, which may belong to an equivalent line spectral frequency (LSF) representation of the linear prediction coefficients (LPC), may be relayed. The calculation of the averaged logarithmic energy in an SID frame requires eight consecutive noise frames. For EVP DTX operation, the other seven data frames, corresponding to seven consecutive noise frames, may be unavailable. Accordingly, the averaging operation using eight consecutive noise frames cannot be finished. Embodiments of DTX process10may use DTX memory synchronization to solve this problem. First, DTX process10may calculate the logarithmic energy belonging to this SID frame using 160 samples. DTX process10may also assign the logarithmic energy to the eight elements in the history buffer. In this way, the history memory of the averaged logarithmic energy due to DTX operation without data frames may be synchronized and the SID frame with correct comfort noise energy level can be generated.

In some embodiments, a voice activity detector (VAD) may be running in the AMR encoder to generate a binary flag indicating whether the input signal contains speech or not, where, in this example, “1” indicates speech and “0” indicates noise. Such a voicing flag may be used to drive the TX DTX timing procedure. Embodiments of DTX process10may derive a new decoder VAD flag to drive the TX DTX operation without running the VAD function. The VAD function in the original AMR encoder may be disabled to save CPU MIPS usage and further improve the system capacity.

Embodiments of DTX process10may provide VQA timing synchronization during DTX. Without processing the 140 ms of consecutive comfort noise samples by VQA functions during the seven no data frames, when the AMR SID frame does appear, the system may compensate the speech and noise power level calculation. The rationale behind this compensation is that during the seven no data frames the frame energy has insignificant changes. Embodiments of DTX process10may use the previous saved speech power, noise power, and VAD flag to repeat the power measurement process seven times. Embodiments of DTX process10may include an Experience Intelligence (EXi) module that may be configured to provide accurate mean-opinion-score (MOS) values, based on ITU G.107 E-model, despite the fact that the VQA functions are not processing the 140 ms comfort noise.

In some embodiments, the same principle may apply to timing synchronization for AEC module. In the time-domain, the three buffers representing the long term reference signal energy, short term reference signal energy, and the VAD flag, may be compensated for the seven no data frames when the DTX SID frame does appear. In the frequency domain, the dB value of the latest signal energy based on each critical band may be stored in a buffer with array size 18 since there are totally 18 critical bands. DTX process10may compensate this buffer using a similar approach. The AEC timing may be synchronized by the above procedure during DTX where seven no data frames are not processed.

Referring now toFIG. 7, an example of a generic computer device700and a generic mobile computer device750, which may be used with the techniques described herein is provided. Computing device700is intended to represent various forms of digital computers, such as tablet computers, laptops, desktops, workstations, personal digital assistants, servers, blade servers, mainframes, and other appropriate computers. In some embodiments, computing device750can include various forms of mobile devices, such as personal digital assistants, cellular telephones, smartphones, and other similar computing devices. Computing device750and/or computing device700may also include other devices, such as televisions with one or more processors embedded therein or attached thereto. The components shown here, their connections and relationships, and their functions, are meant to be exemplary only, and are not meant to limit implementations of the inventions described and/or claimed in this document.

Memory704may store information within the computing device700. In one implementation, the memory704may be a volatile memory unit or units. In another implementation, the memory704may be a non-volatile memory unit or units. The memory704may also be another form of computer-readable medium, such as a magnetic or optical disk.

Computing device700may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a standard server720, or multiple times in a group of such servers. It may also be implemented as part of a rack server system724. In addition, it may be implemented in a personal computer such as a laptop computer722. Alternatively, components from computing device700may be combined with other components in a mobile device (not shown), such as device750. Each of such devices may contain one or more of computing device700,750, and an entire system may be made up of multiple computing devices700,750communicating with each other.

Computing device750may include a processor752, memory754, an input/output device such as a display754, a communication interface766, and a transceiver768, among other components. The device750may also be provided with a storage device, such as a micro-drive or other device, to provide additional storage. Each of the components750,752,754,784,766, and768, may be interconnected using various buses, and several of the components may be mounted on a common motherboard or in other manners as appropriate.

Processor752may execute instructions within the computing device750, including instructions stored in the memory764. The processor may be implemented as a chipset of chips that include separate and multiple analog and digital processors. The processor may provide, for example, for coordination of the other components of the device750, such as control of user interfaces, applications run by device750, and wireless communication by device750.

In some embodiments, processor752may communicate with a user through control interface758and display interface756coupled to a display754. The display754may be, for example, a TFT LCD (Thin-Film-Transistor Liquid Crystal Display) or an OLED (Organic Light Emitting Diode) display, or other appropriate display technology. The display interface756may comprise appropriate circuitry for driving the display754to present graphical and other information to a user. The control interface758may receive commands from a user and convert them for submission to the processor752. In addition, an external interface762may be provided in communication with processor752, so as to enable near area communication of device750with other devices. External interface762may provide, for example, for wired communication in some implementations, or for wireless communication in other implementations, and multiple interfaces may also be used.

The memory may include, for example, flash memory and/or NVRAM memory, as discussed below. In one implementation, a computer program product is tangibly embodied in an information carrier. The computer program product may contain instructions that, when executed, perform one or more methods, such as those described above. The information carrier may be a computer- or machine-readable medium, such as the memory764, expansion memory774, memory on processor752, or a propagated signal that may be received, for example, over transceiver768or external interface762.

Computing device750may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a cellular telephone780. It may also be implemented as part of a smartphone782, personal digital assistant, remote control, or other similar mobile device.

Computer program code for carrying out operations of the present disclosure may be written in an object oriented programming language such as Java, Smalltalk, C++ or the like. However, the computer program code for carrying out operations of the present disclosure may also be written in conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). Any examples of code provided in the present disclosure are provided merely by way of example and are only provided as one possible way in, which the teachings of the present disclosure may be implemented.