APPARATUS AND METHOD FOR CONTROLLING AN ECHO CANCELER

Abstract: An echo canceler (10) is controlled and operated during hangover time between a double talk condition and a single talk condition for a more natural residual echo cancellation. The adaptive gain and the residual suppression threshold necessary for controlling an adaptive filter and a residual echo suppressor, respectively, are computed such that their respective values increase gradually and smoothly from predetermined minimum values to predetermined maximum values during the hangover time.

Description: APPARATUS AND METHOD FOR CONTROLLING AN ECHO CANCELER TECHNICAL FIELD OF THE INVENTION This invention relates in general to the field of telephone networks and coitimunications, and more particularly the present invention relates to apparatus and a method for controlling an echo canceler. BACKGROUND OF THE INVENTION Echo cancelers are typically voice operated devices positioned in the telephone network to improve the quality of voice and data transmissions by reducing the amount of echoes in the transmission. Echoes are generally caused by imperfect impedance matching in the 2-wire to 4-wire interfaces in the network. The echo canceler receives the transmitted signal, generates an estimate of the echo in the signal, and then subtracts the estimate from the transmitted signal. Since the amount of echo can vary during a telephone call as well as from call to call, the task of echo cancellation is a challenging problem not satisfactorily resolved by conventional echo cancelers. This task is even further complicated by the peculiarities of human hearing. In general, the far-end speech signal is received and perceived by an echo canceler as the sum of near-end speech and echo. The echo canceler generally includes an adaptive filter to generate the echo estimate to cancel the echo in the far-end speech signal. Since this cancellation may not be complete, a non-linear processor is usually implemented to suppress the residual echo or the difference between the actual echo and the estimate of the echo. The adaptive filter is generally controlled by a parameter commonly called the adaptive gain. The non-linear processor is controlled by a parameter commonly called the residual suppression threshold. Therefore, the task of echo cancellation becomes the problem of computing the values for these parameters and providing the computed parameter values to the adaptive filter and non-linear processor at the correct time instances. In the telephony industry, the terms "single talk", "double talk", and "soft double talk" describe the various conditions where the signal received by the echo canceler contains either all echo, no echo, and a combination of near-end speech and echo, respectively. Typically, both the adaptive gain and the residual suppression threshold parameters are both set at their respective minimum values during double talk, and at maximum values during single talk. However, during the transitional gray area between double talk and single talk conditions, the conventional method, of holding the parameter values at the minimum up to the instance the single talk condition is detected, has been proven unsatisfactory. The abrupt switch from the parameter minimum values to the maximum values demands an extremely accurate detection of the single talk condition. Inaccuracy may result in no echo canceling during an initial period of single talk, or maximum echo canceling during a latter period of hangover time where some information content may be present. Accordingly, it is advantageous to gradually vary the adaptive filter and non-linear processor control parameters during hangover time. The result is a more desirable natural transition period between double talk and single talk. SUMMARY OF THE INVENTION In accordance with the present invention, apparatus and a method for controlling an echo canceler are provided which substantially eliminate or reduce disadvantages and problems associated with prior echo cancelers. In one aspect of the present invention, an echo canceler is controlled and operated during hangover time between a double talk condition and a single talk condition for a more natural residual echo cancellation. The adaptive gain and the residual suppression threshold necessary for controlling an adaptive filter and a residual echo suppressor, respectively, are computed such that their respective values increase gradually and smoothly from predetermined minimum values to predetermined maximum values during the hangover time. In another aspect of the present invention, adaptive gain modifying values and residual suppressor threshold modifying values are computed and subtracted from the optimum or maximum values of the adaptive gain and residual suppression threshold to compute for the adaptive gain and residual suppression threshold values. In yet another aspect of the present invention, a counter is initialized and enabled to count during the hangover time. The adaptive gain modifying values and residual suppressor threshold modifying values are determined and then stored in look-up tables accessible by using the counter value to index the tables. An important technical advantage of the present invention is a more desirable and more natural residual echo canceling during the hangover time between double talk and single talk. BRIEF DESCRIPTION OF THE DRAWINGS For a better understanding of the present invention, reference may be made to the accompanying drawings, in which: FIG. 1 is a greatly simplified block diagram of an echo canceler; FIG. 2 is a block diagram of an echo canceler block in the echo canceler; FIG. 3 is a block diagram of an echo engine in the echo canceler; FIG. 4 is a plot showing the input and output characteristics of the non-linear processor; FIG. 5 is a flowchart describing the algorithm for computing adaptive filter and non-linear processor control parameters; FIG. 6 is a short term power versus time plot describing hangover time; FIG. 7 is plot of a prior implementation of residual suppression threshold versus time before, during and after hangover time; and FIG. 8 is a plot of residual suppression threshold or adaptive gain versus time in accordance with the teachings of the present invention. DETAILED DESCRIPTION OF THE INVENTION With reference to the drawings, FIG. 1 is a greatly simplified block diagram of an echo canceler 10 operating at the DSl level. The architecture of echo canceler 10 may be grouped into two logic blocks: a DSl block 12 and an echo canceler block 14. DSl block 12 includes microprocessors and circuitry primarily serving as an interface between echo canceler 10 and the telephone network (not shown) . For example, DSl block 12 performs all relevant tasks related to multiplexing and demultiplexing the twenty-four channels in the DSl streams to and from the tail or near-end 16 and the long or far-end 18 sides of echo canceler 10. DSl block 12 may also handle alarms and some digital signal processing functions as known in the telephony art. In addition, DSl block provides echo canceler block 14 channel signals and ^« 20 and 21 from near-end 16 and far-end 18, and also accepts signals » processed by echo canceler block 14 to be transmitted to far-end 18. A number of status and control signals 24 are passed between DSl block 12 and echo canceler block 14. Signals «, ^« and r " 20-22 are discussed in more detail below in conjunction with FIG. 3. Referring to FIG. 2, a more detailed block diagram of echo canceler block 14 is shown. A circuitry 30 serves as an interface between DSl block 12 and N echo engines 32-35. Typically, N is equal to 24, where each echo engine serves to cancel out the echoes in each of the 24 channels in DSl. A data bus 36 couples DSl interface circuitry 30 and echo engines 32-35. Echo engines 32-35 are coupled to a microprocessor 40 by a control bus 38. Microprocessor 40 computes the adaptive gain, K, and residual suppression threshold, RST, parameters and supplies them to echo engines 32-35. Another circuitry 42 is coupled between microprocessor 40 and DSl block 12 serving as an interface for the status and control signals 24 therebetween. FIG. 3 provides a more detailed block diagram of one echo engine 32 which is also representative of the other echo engines 33-35. The signal received by echo canceler 10 or echo engine 32 is signal ^« 21, which is the sum of near-end signal « 50 and echo e " 52. In the preferred embodiment of the instant invention, microprocessor 40 supplies computed adaptive gain value K to a correlator 54, which also receives a far-end signal « 20. Correlator 54 performs adaptive control of the filter coefficients for an adaptive filter 56. Adaptive filter 56 produces an echo estimate e n 58, which is subtracted from ^« 21 to yield a signal W " 60. Equations governing adaptive filter 56 are: m-l w. w. = y n - ∑ h », *«-* (1) A = μ > + K Wn x n . k ] (2) where μ is a leak constant as known in the art. Since the echo estimation may not be perfect, signal w_ 60 may contain residual echoes. Microprocessor 40 further supplies a residual suppression threshold value RST to a non-linear processor (NLP) or residual suppressor 62, which further reduces the amount of echo in the speech signal to produce signal n . Referring to FIG. 4, the transfer function of non-linear processor 62 is shown. Inputs less than the residual suppression threshold value RST are suppressed, and inputs above the threshold are passed to the output. As can be seen from FIG. 4, the input-output characteristic of non-linear processor 62 is symmetric and is usually referred to as a center clipper. The output signal r » of non-linear processor 62 can be summarized by the following: where t n is a noise signal of appropriate levels for noise-matching purposes, as determined by algorithms known in the art. Additionally, echo engine 32 also includes circuitry 64 which estimates or computes the level or power of signals «, ^« and « and supplies the computed signal powers to microprocessor 40. Referring to FIG. 5, a simplified flowchart depicting the preferred algorithm executed by microprocessor 40 for computing the adaptive gain K and residual suppression threshold RST is shown. The algorithm maintains a double talk counter DBCTR, which is decremented in block 70. The signal powers for *«, ^» and w » are read from echo engines 32-35, as shown in block 72, and a determination is made as to whether a double talk condition exists, as shown in block 74. The double talk condition is determined by examining and comparing the signal powers of «, ; « and «, and is summarized below. Condition double talk double talk single talk soft double talk P χ , P y and P w are computed power levels of signals «, ^« and W ", respectively. In comparison (a), where y > χ , signal ^« is probably predominantly near-end speech, and therefore double talk exists. Where P y < P x , shown as comparison (b) , the speech signal probably contains no echo. In comparison (c)(1), where P y <a P x and P v» < P y , signal ^« is probably mostly echo, which indicates a single talk condition. In (c) (2) , where P y <a P x and < ~ Py' y n probably contains a combination of echo and near-end speech, which is commonly called soft double talk. The algorithms for determining double talk, single talk and soft double talk are quite involved, and therefore the table above merely presents a simplified scheme for their determination. The determination of these conditions is known in the art and not within the scope of the present invention. By examining the power levels of the signals, if a double talk condition exists, then the double talk counter DBCTR is set to a predetermined maximum value, as shown in block 76. In this manner, DBCTR remains at its maximum value as long as double talk conditions exist. In the preferred embodiment of the instant invention as implemented within the EC24 echo canceler manufactured by DSC Communications Corporation of Piano, Texas, the maximum value for DBCTR is 60, where the algorithm shown in FIG. 5 is executed approximately every four milliseconds. Therefore, the maximum value of DBCTR is dependent on its application and may be experimentally determined. Proceeding to block 78, since a double talk condition exists, the adaptive gain K and residual suppression threshold RST are set to zero, for minimal or no echo cancellation. The values of K and RST are then written into the respective echo engine. On the other hand, if the determination in block 74 assessed that there is probably no double talk, the optimal values for the adaptive gain, ^-OPT , and residual suppression threshold, ^^OPT , are computed, as shown in block 82. The optimal K and RST values may have been determined and calculated previously and stored in a look-up table. Please consult the Appendix for an example of the optimum K and RST look-up tables formulated for DSC's EC24 Echo Canceler. The ^OPT table is labeled as "K OPTIMUM TABLE", and the ^- ^ OPT table is labeled as "CCT TBL" in the Appendix. A further determination is made in block 84 as to whether a soft double talk condition exists. If a soft double talk condition exists, the double talk counter DBCTR is set to its maximum value once again, as shown in block 88. In block 86, the adaptive gain K and the residual suppression threshold RST are computed by the following equations: K = K npτ - F(DBCTR) (4) RST = RST npτ - G(DBCTR), (5) where F and G represent adaptive gain K and residual suppression threshold RST functions implemented as look- up tables. The tables are shown as "KSSDKM" and "LWRCCT" tables in the Appendix. It can be seen that the double talk counter DBCTR is used as an index into the look-up tables F and G. Therefore, as shown in Equations (4) and (5) , the optimum K and RST values are modified by some stored value depending on the value of DBCTR. The values in the look-up tables are experimentally determined and may therefore be hardware dependent. Subsequently, the computed values of K and RST are supplied to the echo engines 32-35. Therefore, as long as double talk or soft double talk conditions exist, the double talk counter DBCTR remains at its maximum value. When the double talk condition expires, the value of DBCTR decrements with each iteration of the algorithm, eventually reaching zero, which corresponds to a single talk condition. Hangover time corresponds to the interval while DBCTR is between its maximum value and zero. Accordingly, the adaptive gain K and the residual suppression threshold RST are set depending on the value of DBCTR by the table look-up operations. In the exemplary implementation, as shown in the Appendix, the computed values of K and RST increases as F and G decreases (and DBCTR decreases) , although other implementations/ yielding a gradual and smooth K and RST values during the hangover time are also contemplated and within the scope of the present invention. For example, 'the adaptive gain K and the residual suppression threshold RST themselves may be computed and stored in look-up tables. Referring to FIG. 6, a short-term power plot of a typical speech signal is shown. The period t < ^o is deemed as active by comparing the speech signal short- term power with a certain fixed threshold as known in the art. At time ' > ^ι, the speech signal short-term power is essentially zero, marking the silent time period. Hangover occurs between the active and silent time periods, where the short-term power level of the speech signal is below the threshold but is non-zero. Accordingly, there is information content in the speech signal during the hangover time that is perceivable by the human ear. Referring to FIG. 7, a plot of a conventional implementation of adaptive gain K and residual suppression threshold RST is shown. The parameters K and/or RST are set to the minimum values during double talk. They remain at the minimum during the entire duration of hangover time, *.D < t < , and set to the maximum values at * ~ * \ . The abrupt transition at = ^ι may result in unnatural echo canceling. Accordingly, this method requires an extremely accurate determination of the occurrence of single talk or when Y is echo only. Inaccuracy would result in no echo cancelling at all during some periods of single talk, or maximum echo cancelling during some period of hangover time where some information content may be present. Referring to FIG. 8, the preferred embodiment of the present invention provides for smooth transitional values during the hangover time for the adaptive gain K and residual suppression threshold RST. The parameters gradually increase from their minimum values to their maximum values during hangover time. The parameter values are determined experimentally and are implemented by look-up table as described above. Examples of the look-up tables implemented for the EC24 are shown in the Appendix. It is apparent that by increasing the echo canceler control parameter values K and RST gradually, the need for extremely accurate determinations of double talk and single talk transitions is eliminated since the need to make a black-and-white decision is obviated. Additionally, a higher quality and more natural voice transmission is achieved. Although the present invention has been described in detail, it should be understood that various changes, substitutions and alterations can be made thereto without departing from the spirit and scope of the present invention as defined by the appended claims. 4/10789 14 APPENDIX PROGRAM FOR M3 Echo For purposes of explanation of the operation of the enhanced echo control algorithm, the following are excerpts from the actual code. Since the actual code would not be relevant in several cases, the notation " ..." indicates that statements have been deleted to provide a simpler and more understandable description of the enhanced control algorithm. The echo control functions are implemented in a micro-processor (6502) that is intimately connected, hardware-wise, to the echo- engine. The echo engine is a custom ASIC code-named "DRAGON". Each ASIC can handle 6 channels at 16-msec tail-delay; 3 channels at 32-msec tail-delay; or 2 channels at 48-msec tail-delay. The 6502 microprocessor can read certain control registers in the DRAGON chip. The format of these registers are : FORMAT OF CONTROL REGISTERS: BIT 7 6 5 4 3 2 1 0 K: HUPDATE CNTL 2*S COMPLEMENT ADAPTION GAIN CONSTANT LEAK (%) ERL LEAK RATE X X X TCE 0 E ATTACK TIME X E DECAY TIME TCY 0 Y ATTACK TIME X Y DECAY TIME CHL HTST XTST P9 P8 HI HO Cl CO CHH FRAME SYNC POLY COUNTER DELAY START REGISTER CONTROL DEFINITIONS: HUPDATE CONTROL ERL ADGR9 ADGR68 0 ADAPT FILTER 00 MAX COEFF 1/4 0 FREEZE FILTER 01 MAX COEFF 1/2 1 CLEAR FILTER 10 MAX COEFF 1/2 1 COMPLEMENT FILTER COEFF 11 MAX COEFF 1 LEAK RATE C0.C1 DETERMINE # OF FILTERS 00 NEVER LEAK 11 1 96 MS FILTER (not used) 01 1/(7*127) 01 2 48 MS FILTERS 10 1/7 10 3 32 MS FILTERS 11 1/127 00 6 16 MS FILTERS (X) usually 0 PAGE SEQUENCES: 1 FILTER- 000 2 FILTERS- 000,001 3 FILTERS-000,010,100 6 FILTERS- 000,011,100,001,010,101 4/10789 15 ADDRESS FOR ECHO I/O CONTROL The memory-map of the 6502 contains the following addresses which correspond to the registers in the DRAGON and supporting circuitry : * *** REGISTERS ADDRESS READ R-OUT PATTERN REGISTER WRITE X PATTERN REGISTER WRITE Y PATTERN REGISTER WRITE DROP AND INSERT REGISTER WRITE CHANNEL REGISTER WRITE WATCH DOG LED DUMMY LOCATION FOR DEBUG PURPOSES DUAL-PORT RAM STATUS RESSES GLOBAL CHANNEL CONTROL REGISTER LOW BYTE GLOBAL CHANNEL CONTROL REGISTER HIGH BYTE GLOBAL TEMPORARY REGISTER FOR X GLOBAL TEMPORARY REGISTER FOR Y R U-LAW REGISTER E U-LAW REGISTER CENTER CLIPPER THRESHOLD NOISE MASK E AVERAGE LOW BYTE E AVERAGE HIGH BYTE Y AVERAGE LOW BYTE Y AVERAGE HIGH BYTE XMAX REGISTER H OVERFLOW REGISTER (DIVERGE) HMAX REGISTER K REGISTER LEAK REGISTER EAV TIME CONSTANT YAV TIME CONSTANT Various parameter locations (variables) are defined here : For speed purposes, certain "current" variables are stored in Page 0. PAGE 0 DATA TABLE ORG "H01 X AVERAGE Y AVERAGE AFTER CONVERSION TO LOG2 CODE E AVERAGE AFTER CONVERSION TO LOG2 CODE ADAPTION GAIN ECHO RETURN LOSS ECHO RETURN LOSS ENHANCEMENT ERL+ERLE CHANNEL NUMBER FOR NOISE MATCH PROCESS CROSS TALK CENTER CLIPPER THRESHOLD ; TEMPORARY HOLDING REGISTER FOR CCT CALCULATION ; (KSTE6 MODIFICATION) ;EC CALCULATION CONSTANT ;£C AUmULATiati cβrtCTWT 10789 16 C6: .BLKB ;EC CALCULATION CONSTANT temporary locations used during optimization CCTKS .BLKB PARAMETER USED FOR CENTER-CLIPPER THRESHOLD ; (TE used $13 ) ATKS .BLKB PARAMETER TO CONTROL THE ATTACK AND DECAY TIMES USED ; BY DRAGON TO ESTIMATE Yave (TE used S47) LIMKS .BLKB LIMIT USED IN CENTER-CLIPPER CALCULATION ; (TE used = $1E) SFDCKS; .BLKB INITIAL VALUE FOR SOFT-DOUBLE-TALK TIMER ; (TE used = 58) OPCTKS; .BLKB INITIAL VALUE FOR HARD-DOUBLE-TALK TIMER ; (TE used = 19) LOWKKS: , BLKB PARAMETER TO LOWER THE VALUE OF K DURING TIMES OF SOFT-DOUBLE-TALK ("ADP1" in speech mode) (default value = 01 in KSTE4 ) not applicable in KSTE5 which uses a table. IN KSTE5 USE THIS TO MODIFY IDLNS IDLEKS: •BLKB PARAMETER (THRESHOLD) TO DETERMINE IF "IDLE" ; DURING THE SPEECH/NOISE DOUBLE-TALK ; (TE uses VALUE = 24) DBCTKS: •BLKB DEBOUNCE COUNTER (MAX) INITIAL VALUE USED DURING ; SPEEC/NOISE DOUBLE-TALK. (TE used = A0 ) SYGTKS: .BLKB THRESHOLD MODIFIER FOR DOUBLE-TALK DETECTION ; (TE used = 04) LEEKKS: .BLKB LEAK-RATE (COMBO LEAK AND MAX COEFF. ) ; (TE used = 70) ; KSTE8 :: assume max-coeff = (1/2) (6 dB ERL) ; implies LEEKKS default = 30. INCRK: .BLKB THRESHOLD TO DECREASE K IF ADAPTATION IS ; GOING WELL (7/24/92) (ERLE < INCK2) ΪNCK2: .BLKB SECOND THRESHOLD TO FURTHER DECREASE K. ; INCK2 = INCRK - 6 ZCHNKS: .BLKB NUMBER OF CHANNELS (default = 24 channels) AUTO TEST ENABLE FLAG: 0=OFF, l=ON ECHO CUSTOM CHIP TEST RESULT: 0=FAIL, 1=PASS AUTO TEST LOOP COUNT LOW AUTO TEST LOOP COUNT HIGH AUTO TEST PATTERN LOW BYTE AUTO TEST PATTERN HIGH BYTE AUTO TEST MODE: 0=16mS, l=32mS, 2=48mS EC TEST TIMER COUNT EC TEST LOOP NUMBER EC TEST CHIP NUMBER EC TEST CHANNEL NUMBER UP6502 MASKABLE INTERRUPT ENABLE EC BOARD TAIL DELAY MODE: 0=16mS, l=32mS,2=48mS EC BOARD CUSTOM CHIP COUNT CHANNEL NUMBER DECODING STORAGE REGISTER CHANNEL COUNT; 0-24 EC TEST CHANNEL NUMBER ;TEMP STORAGE FOR PWRUP ;DUAL-PORT RAM DATA TEMP. STORAGE 94/10789 17 HREGT: .BLKB HREG TEMP REG RSNMT: .BLKB RSNM TEMP REG ERLMDT .BLKB ERLMD TEMP REG INTEST .BLKB ECHO IN TEST FLAG TESTCH .BLKB TESTING CHANNEL SFREG: .BLKB SELF TEST CHANNEL TEMP. REG YAVEH: .BLKB 18 HIGH BYTE OF YAVE XAVE: .BLKB 18 X AVERAGE IN LOG2 FORMAT ERLL: ,BLKB 18 ECHO RETURN LOSS ESTIMATE LOW BYTE ERLH: .BLKB 18 ECHO RETURN LOSS ESTIMATE HIGH BYTE ERLEL: .BLKB 18 ECHO RETURN LOSS ENHANCEMENT ESTIMATE LOW BYTE ERLEH: .BLKB 18 ECHO RETURN LOSS ENHANCEMENT ESTIMATE HIGH BYTE TIMERX: .BLKB QYTEMP: ,BLKB temp location to store Y index register ** ARRAY VARABLES IN PAGE 2 ORG "H0200 CCMSK: •BLKB 18 ;CENTER CLIPPER MASK ENABLE, 7F=ENABLE 00=DISABLE ADGR: .BLKB 18 ADPCTR .BLKB 18 SFTCTR •BLKB 18 MINERL .BLKB 18 ERL SETTING : FOR 6DB == ; FOR ODB == EAVE: .BLKB 18 ESTIMATE OF RESIDUAL ECHO (APPROX_POWER?) ACFLG: .BLKB 18 RESCTR .BLKB 18 NSFLRL .BLKB 18 ;NOISE FLOOR ESTIMATE NSFLRH .BLKB 18 IDLNS: .BLKB 18 ;NOISE FLOOR + 2 DB IN LOG2 FORM MSKE: .BLKB 18 ;NOISE MASK ENABLE 00=DISABLE FF=ENABLE OPCTR: .BLKB 18 SKIPDT .BLKB 18 ; flag (per-chan) to determine whether double-talk ; processing should be attempted. (0==> do double-talk ; otherwise skip) ;ADDRESS SEQUENCE FOR THE 24 CHANNELS ;DEBOUNCE COUNTER ;TONE FLAG PER CHANNEL ;TONE DETECTION STATUS ; per-channel maximum H-reg 4. Leak-rate ;STATUS OF BYPASS AND E&M FOR EACH CHANNEL BLKB ; MOVE TO PAGE 0 4/10789 18 In tne EC24 (M3) echo canceler, there are two other processors. A 56001 DSP processor does a variety of computations including the detection of the presecnce of tones. The 68008 (abbreviated as 68K) processor is the main control processor that, among other functions provides overall control of the whole unit as well as transfers parameters to and from the 6502. The transfer mechanism is via a dual-port-RAM which both the 6502 and 68K can treat as "local" memory. ORG "H08000 POWER UP HANDSHAKE WITH uP 68008 SOFTWARE REV. NUMBER FLAG=1, SINE WAVE DETECTED, , FLAG=0, NO SINE WAVE ;H REGISTER FLAGS ;NOLINEAR PROCESSOR FLAGS ;SINE WAVE INDICATOR ;ERL MODE, ;ON DEMAND SELF TEST FLAGS ;SELF TEST RESULTS rposes store the values of Xave and Yave in DPR so 24 LOCATIONS FOR Xave 8700—8717 (hex) ONE LOCATION FOR TONECT (CHAN. 0 ONLY) ONE LOCATION FOR NOISE FLOOR (CHAN. 0 ONLY) ONE LOCATION FOR IDLNS (CHAN. 0 ONLY) ONE LOC. FOR CH 0 Eave One location for CH 0 ERL (High Byte) One location for CH 0 ERLE estimate (High byte) ORG "H08720 KSYAVE: .BLKB 24 LOCATIONS FOR Yave 8720—8737 (hex) For optimization purposes, the variables that could be modified by the 68K using MONITOR FLAG: (=0 ==> NO 68K UPDATE YET) PARAMETER FOR CENTER-CLIPPER THRESHOLD CONTROL PARAMETER FOR ATTACK/DECAY TIME ; FED TO CHIP FOR Yave CALCULATION. LIMIT USED IN CENTER-CLIPPER THRESHOLD CALC. SOFT-DOUBLE-TALK TIMER (MAX. VALUE) KSOPCT: .BLKB ; HARD-DOUBLE-TALK TIMER (MAX VALUE) KSLOWK: .BLKB ; PARAMETER TO LOWER K DURING SOFT-DBLE-TALK ; DEFAULT = 00 ("TE" == 0) KSLOWK is not used in KSTE5 KSIDLE: .BLKB ; PARAMETER fTHRESHOLD) FOR IDLE DETECTION » KSDBCT: .BLKB ; PARAMETER (INITIAL, MAX) VALUE FOR DEBOUNCE 10789 19 THRESHOLD MODIFIER FOR DOUBLE-TALK LEAK-RATE-CUM_MAX_COEFF GAIN MODIFIER (TO INCREASE GAIN) Number of channels (default = 24) ** ** ' INITIALIZATION ' ** ******************************************************************** SPOINT=00FF .=0OCOO0 ;BEGINNING OF ROM ADDR SPACE (27128) ORG 'HCOOO START: SEI ;SET INTERRUPT DISABLE BIT LDX #SPOINT ;INITIALIZE STACK POINTER TXS WAITUP: LDA PWRUP ;READ DUAL-PORT RAM PWRUP register STA PWRTMP ;AND HANDSHAKES WITH uP 68008 PWRAGN: LDA #00AA STA PWRUP VERS: LDA #000E ;VERSION NUMBER STA REV NOW HANDLE THE LOCATIONS RELATED TO OPTIMIZATION EXERCISE: OPTFLG: LDA *0000 STA KSFLAG CLEAR THE FLAG BYTE CCTINI: LDA #0029 default = 29 (HEX) STA CCTKS STORE IN LOCAL (PAGE 0) STA KSCCT WRITE TO DPR YATKIN: LDA #0037 default = 37 STA YATKS STORE IN LOCAL MEMORY (PAGE 0) STA KSYATK LIMKIN: LDA #001E default = IE STA LIMKS STA KSLIM SFDCIN: LDA #0040 default = 40 (should always be less than 5F) STA SFDCKS STA KSSFDC OPCTIN: LDA #0025 ; default = 25 STA OPCTKS STA KSOPCT LOWKTN: FROM NSFLRH (IDLNS = NSFLRH + LOWKKS) = (1/2)) DETERMINE FILTER MODE: MODE=0- 16 MS, MODE=l- 32 MS, MODE=2- 48 MS During the power-up sequence, the 6502 examines how many physical units of the DRAGON are present since this would determine the tail-delay configuration : INITIALIZE PER CHANNEL REGISTERS ON E.C • s AND PER CHANNEL PARAMETERS IN RAM LDY #0000 LP1: LDX RAMSEQ.Y LDA #007F ; INITIALLY ENABLE CENTER CLIPPER ; the following command writes to the DRAGON chip and serves as ; an example of the manner in which the 6502 and echo-engine ; converse. xx xxχx*x*χ****xχ*χχ*x*xxx**x *χ χ***χx«xxx*x*χ*χxχχ**χ*χ«χ*xχχxχχχ* * ** MAIN OPERATION SOFTWARE ** χxxx»****xχχxxχx**χ*χ*χχx**»χχχ**x*χ*x**xχ**x*x*xχ***χ*χ*χ*χχ** X xχχ*x INITIALIZE CHANNEL COUNT check if channel is being tested, etc. START CANCELLOR ALGORITHM GODBTK: LDX CHNCNT ; get channel number LDA SKIPDT.X ; check flag that tells whether double-talk ; ; algorithm needs to be implemented BEQ ALSTAR JMP CNTL ; branch if flag is set CALCULATE LOG2 CODES FOR EAVE,YAVE,AND XMAX FIND EAVE ALSTAR: LDY RAMSEQ.X obtain right offset for this channel the 6502 reads the value of Eave (the canceller output prior to the non-linear-processor) which is a measure of the strength of the signal. This is an example of the 6502 reading from the echo engine. LDX CEAVEH.Y ; read chip high-byte for Eave FIND EAVE IN LOG2 CODE by doing a table look-up The conversion from the number-representation used by DRAGON and the equivalent logarithm-base-2 is done via a table called "LOG2". The following line of code exemplifies how a table look-up is performed. <A> = log2(E-average) ; restore channel count in X ; store Eave in array as well as in Page 0 (temporary) Read Xave which is an estimate of the strength of (xn) FIND XAVE FAR: ; read chip ; table look-up for log2 store (new) value of Xave in array as well as in Page 0 (temporary) FIND YAVE restire channel count in register X "C6" is a measure of how much enhancement we would expect. This uses a table called "FARTK" FIND C6 TAY LDA FARTK,Y STA C6 decrement the soft-double-talk counter if not yet zero Find the optimal value for the adaptation gain "K" This depends on the power (strength) of {xn} and also depends whether the signal is like a "tone" or is like "sppech" (i.e. not tone). Other processing determines whether the signal is tone-like. STDGO: LDA TONECT.X ;IF TONE PRESENT CHANGE GAIN BEQ FUDG if tone-like then use tables KLTO and KGTO for determining the optimal value for the adaptation gain based solely on the current estimate of ERL and the strength of {xn} If not-tone-like then use the table "KOP" for the optimal value of the adaptation gain : FUDG: LDY XAVEST LDA KOP, STA K ; WE DECREMENT K IF ERLE IS GREATER THAN THRESHOLD. ; since if ERLE is good then we do not want to change the ; coefficients (by much). LDA ERLEH.X ; READ ERLE CMP INCK2 ; COMPARE WITH (LOWER) THRESHOLD BMI ENOTLW ; CONTINUE IF ERLE < THRESHOLD ; ELSE BMI ENOTLW ; CONTINUE IF ERLE > SECOND_THRESHOLD ; ELSE DEC K ; DECREMENT K FURTHER NOTLW: ESTIMATE ERL ESTIMATE ERL AS A (NONLINEAR) FILTER IN 16-BIT ARITHMETIC (DOUBLE USE OF 8-BIT ALU) Compute "ERL" as : IF(6dB setting) then ERL = MINERL (no tone present) or ERL = MINERL-6 ( if to e present) IF(0dB setting) then ERLt = MINERL (no tone) or ERLt = MINERL-7 (tone present THEN ERL = max{ ERLt , ERLH } The intention is to declare double-tak ("strong double talk") if the strength of {yn} is greater the the worst-case echo expected based on the setting of the canceller (0 dB or 6 dB). A different numerical threshold is required in the case of tone rather than speech because of the way we compute the strength of the signal(s). DETERMINE IF DOUBLE-TALK CONDITION EXISTS : ALSO COMPUTE THE "OPTIMAL" VALUE FOR THE CENTER CLIPPER (i.e. NON_LINEAR_PROCESSOR) THRESHOLD. FIND CENTER CLIPPER THRESHOLD "ACOM" is an estimate of how much lower the echo should be relative to {xn} CCT=XAVEST-ACOM+"CCTKS" DB ■ LIN: STA ALTCCT ; STORE PRELIM VALUE IN TEMPORARY STORAGE ; ; ( .R A1TERATION IN SOFT-DOUBLE-TALK IF NEC. ) TAX LDA CCTTBL.X ; COMPUTE FUNCTION VIA TABLE LOOK-UP ; the table "CCTTBL" is used for this purpose. STA CCT ; CCT = VALUE WRITTEN TO CHIP /10789 24 ine aigoiitnin is uiriou'n. l i -on -LiKe and speec -11Ke signals. If the signal is speech- l Li.e then = 0. The difference, nowever, is not relevant to the disclosure. DTI: LDA TO. ECT.X BEQ SDT1 JMP KSTDT1 ; IF TONE-LIKE THEN JUMP TO SECTION HANDLING TOVES ELSE PERFORM OPTIMIZATION USING THE SPEECH LIKE ALGORITHM SPEECH AND NOISE ALGOK.THM S DPT: LDA YAVEST ;CHECK Y POWER LEVEL First determine if the condition of "strong double talk" is existent. Strong double-talk implies that the strength of {yn} if "much" greater than the largest echo expected. The thresholds were determined empirically. SCK : ;Y>X-ERL+4. MAKE THIS A VARIABLE FOR OPTIMIZATION DEFAULT VALUE FOR SYGTKS = 04 if strength of (yn) is not large enough to constitute ; strong double-talk branch to "SYLOW" JMP SYGTX ; if strength of {yn} is enough to represent double-tal ; ; then branch to "SYGTX" Entry here implies that strength of {yn} relative to strength of {xn} is not enough to constitute strong double-talk. SYLOW: LDA XAVEST ;CHECK X POWER LEVEL if strength of {xn} is below threshold then probably both sides are idle. Consequently do not adapt and open the non-linear- processor (make the threshold zero) and handle the various counters that keep track of timing and exit from this main loop for handling this channel. If strength of {xn} is above threshold then check if we are getting the expected ERLE. Also handle the various counters that keep track of timing (for hang-over from strong-double-talk). 3YLTX: ; get timer for hangover from strong-double-t. ; if expired then branch else do the following check while hangover counter has not expired. LDA *0008 •IMPROVES TELEPHOTO 3-25-87 4/10789 25 use table "HGTHRD" compare Eave with HGTHRD<Xave "FRZO" ==> freeze the coefficients but keep ; the non-linear-processor enabled. IG0V1 : JMP FRZ1 • FRZ1" ==> freeze the coefficients and disable ; the non-linear processor if the hangover counter has expired then the following processing takes place : NOHG: ;NO HANG OVER COUNT ; compare the signal {wn} with the expected ; idle noise power. ; if the signal prior to the NLP is less than ; the noise threshold (found empirically) then i is probably single-talk and {yn} is probably onl echo. HENCE BRANCH TO "SXTALK" if strength of {wn} (also cailed {en}, I apologise for the confusion) is greater than the expected noise level then either 1) {yn} is echo but the canceler has not converged yet OR 2) {yn} has a significant component of near-end speech and is hence a candidate for SOFT DOUBLE TAL The table "SFTHRD" is used to determine whether we "in converging mode' or in SOFT_DOUBLE TALK : if the function SFTHRD is greater than Eave then it ; ; is likely that {yn} is only echo. ; ; i.e. SFTHRD<Xave> > Eave ==> probable single-talk BPL SXTALK ; so branch to "SXTALK" Else It is SOFT DOUBLE TALK : ;-IMPROVES TELEPHOTO 3-25-87 ;Soft DT ;SFDCTR 250ms ; FOR OPTIMIZATION, THIS IS A "VARIABLE" ; IN PAGE 0. DEFAULT = 40 ; set soft-double-talk counter to max. (40 He Go to code that handle control of the gain and non-lmear-processot- For possible single talk the following ι*ode is executed XTALK: LDA YAVEST ;SINGLE TALK 94/10789 26 r - ft ι-!(.iilιl>_ t.tik). This is accomplished by a set of counters timers) and thresholds The following code exemplifies the operation of the canceler in sof -double-talk. The tables and functions were determined empirically The tables are tailored such that declaring sof -double-talk when it is actually single-talk is not a grievious error at all. BEFORE JUMPING TO ΛDP1 , LOWER THE VALUE OF K BY A MOL'VT BASED ON THE TABLE. ("ΛDP1" is section of code that writes the values into the DRAGON) KS DPl : ; in l__-te5+, modify K depending on so t-double-talk ; counter. Modification given in table "KSSDKM" ; THE TABLE VALUE IS SUBTRACTED FROM THE CURRENT ; ESTIMATE OF K. THE TABLE VALUE IS LARGE FOR L ΛRGE ; VALUES.OF "SFDCTR" (SFDCTR" is the counter the counts ; down upon the expiry of double-talk to provide hang-over time.) ALSO : modify the center-clipper-threshold by reducing the threshold based on the table "LWRCCT" indexed by the value of "SFDCTR". GET "CURRENT" VALUE OF GAIN ; get value of soft-double-talk-counter. ; DECREMENT K BY A FUNCTION OF SFDCTR ; STORE K BACK GET PARAMETER FOR CALCULATING CCT ; DECREASE THE CCT-PARAMETER BY FUNCTION OF SFDC ; CHECK FOR UNDER-FLOW; BRANCH IF OK ; CLEAR IF NEGATIVE TRANSFER PARAM TO Y FOR FOLLOWING TABLE-LOOKUP ; GET FUNCTION OF PARAM STORE THRESHOLD COMPUTATION BACK LDY QYTEMP ; RESTORE INDEX-REG. Y JMP ADP0 ; IN KSTE6 JUMP TO ADP0 (ADAPT+CC-ENABLED) For strong double talk : SYGTX: LDA #00FF ;DOUBLE TALK ; If strong-double-talk is detected, then set the various hangover counters to maximum value Based on a function of Yave , ie the strength of {yn} using a table "HRTHRD" , decide whether to enable the center-clipper or disable it. The coefficients of the adaptive filter are frozen. 4/10789 27 ALGORITHM FOR TONE the algorithm for tone mirrors that for speech with some additional modifications that are not relevant to this disclosure. KSTDT1: The following code describes how the adaptation gain and cente clipper threshold are written into the DRAGON : CASE 1 ADAPTION AND CENTER CLIPPER CONTROL ADAPT AND CENTER CLIPPER ON ADPO: LDA K AND #003F ORA ADGR.X CHECK ADAPTION STATUS K FROM KOP TABLE STA CK,Y HAS MOST SIGNIFICANT 2 BITS=0 - ADAPT LDA CCT ENABLE CENTER CLIPPER THRESHOLD AND CCMSK.X MASK CENTER CLIPPER STA CCCT,Y JMP CNTL CASE 2 ADAPT AND DISABLE CENTER CLIPPER ADP1 LDA K AND #003F ORA ADGR,X STA CK.Y ;ADAPT BUT DISABLE CENTER CLIPPER LDA #0000 ;SET CENTER CLIPPER THRESHOLD STA CCCT,Y ;TO 0. JMP CNTL CASE 3 FREEZE H AND DISABLE CENTER CLIPPER FRZ1 : LDA ADGR.X BNE ADG0 LDA #0040 ADG0: STA CK.Y LDA #0000 STA CCCT,Y ;SET CC THRESHOLD TO 0 JMP CNTL CASE 4 FREEZE H AND ENABLE CENTER CLIPPER FRZO: LDA ADGR.X BNE ADG1 LDA #0040 ADG1 : STA CK.Y LDA CCT AND CCMSK.X STA CCCT,Y ;SET CC THRESHOLD TO INITIAL VALUE GET READY FOR NEXT CHANNEL 94/10789 28 ; PROCESS NEXT CHANNEL the following section computes the expected ERL and ERLE based on measured values of Xave, Yave, and Eave. ALSO, miscellaneous code to handle communication with the 68K main-control-processor, channel-self-test, etc. These functions are not relevant ot the current disclosure. ************************************************************************ ** ' TABLES' ** ** START TABLES AT E000 TO ALIGN ON PAGE BOUNDRY ** AND TO ALLOW SPACE FOR EXPANSION ** BEGIN WITH TABLES THAT TAKE A FULL PAGE FIRST ** ********************** ****************** *********** ********************* .=00E000 ORG 'HEOOO ROMSE : 0 1 2 3 4 5 6 7 8 9 A B C D E F BYTE 30,31,32,33,40,41,42,43,10,11,12,13,20,21,22,23 ;0 BYTE 50,51,52,53,00,01,02,03,00,00,00,00,00,00,00,00 ;1 BYTE 20,21,22,23,24,25,26,27,40,41,42,43,44,45,46,47 ;2 BYTE 00,01,02,03,04,05,06,07,00,00,00,00,00,00,00,00 ;3 BYTE 10,11,12,13, 14,15,16,17,18, 19.1A, IB, 00, 01, 02, 03 ;4 BYTE 04, 05, 06, 07, 08, 09, 0A, 0B, 00, 00, 00, 00, 00, 00, 00, 00 ;5 PZ DELAY TABLE THIS ASSUMES ALL E.C.'S ARE PLUGGED IN CONSECUTIVE SLOTS PZDEL: 0 1 2 3 4 5 6 7 8 9 A B BYTE 037,080,042,001,076,033,00D,0D7,011,021,0Λ6,02E CHL TABLE CHLTBL: 0 1 2 3 4 5 6 7 8 9 A B BYTE 030,030,010,020,020,000,020,000,010,010,030,030 CCT TABLE: CCTTBL: 0 1 2 3 4 S 6 7 8 9 A B C D E F BYTE 000,000,000,000,000,000,003,003,003,004,004,004,006,006,006,008 ;0 BYTE 009,OOA,OOC,OOD,OOE,010,011,012,013,015,017,019,01B,01D,020,021 ;1 BYTE 022,025,027,029,02C,02F,031,033,035,037,03A,03D,040,042,044,046 ;2 BYTE 049, 04C.04F, 051,053, 056, 058, 05B.05F, 061,063, 065, 068, 06B.06F, 071 ;3 BYTE 073,075,078,07B,07E,07F,07F,07F,07F,07F,07F,07F,07F,07F,07F,07F ;4 BYTE 07F,07F,07F,07F,07F,07F,07F,07F,07F,07F,07F,07F,07F,07F,07F,07F ;5 BYTE 07F,07F,07F,07F,07F,07F,07F,07F,07F,07F,07F,07F,07F,07F,07F,07F ;6 BYTE 07F,07F,07F,07F,O7F,07F,07F,07F,07F,07F,07F,07F,07F,O7F,07F,07F ;7 U-LAW TO LOG2 TABLE LOG2: 0 1 2 3 4 5 6 7 8 9 A B C D E F BYTE 00 OO 06 09 n ~ OF OF U 4 l» 14 * 15 'β 17 17 • * BITE 21, 22,23, 23, -1,24, 25, 25, 6, 26, 27, 27, 7, 28, 8,28 C BYTE 29,29,2A,2A,2B,2B,2C,2C,2D,2D,2D,2E,2E,2E,2F,2F D BYTE ' 2F, 30,30,. " .1,31, 32, 32, 33, 33, 3. ' .,34, 34, 34, 35, 35, 35 E BYTE 36, 6,37,37,3«,J8 f 38,39,39,3A,3A,3A,3B,3B,3B,3B F BYTE 3C,3C,3D,3D,3E,3E,3F,3F,3F,40,40,40,41,41,41, 1 10 BYTE 42, !2, 3, 3, 44, 44,45,45.45, 6, 46, 46, 47, 7, 47,48 11 K OPTIMUM TABLE KOP: 0 1 2 3 4 5 6 7 8 9 A B D E F BYTE 02,02,02,02,02,02,02,02 ,02,02,02,02,02,02,02,02 BYTE 02,02,02,02,02,02,02,02 ,02,02,02,02,02,02,02,02 BYTE 02,02,02,02,02,02,02,02 ,02,02,02,02,02,02,02,02 BYTE 03,03,03,03,03,03,03,03 ,03,04,04,04,04,04,04,04 BYTE 04,04,04,04,04,04,04,04 ,04,04,04,04,04,04,04,04 BYTE 03,03,03,03,03,03,03,03 ,02,02,02,02,02,02,02,02 BYTE 02,02,02,02,01,01,01,01 ,01,01,01,01 ,01,01,01,01 BYTE 01,01,01,01,00,00,00,00 ,00,00,00,00,00,00,00,00 NOISE MASK CONVERSION TABLE MASK: 0 1 2 3 4 5 6 7 8 9 A B C D E F BYTE 000, 001, 001,003, 005, 006, 085, 085, 087, 089, 089, 089, 089, 089, 08B,08B BYTE 08F,08F,08F, 092, 092, 092, 092, 092, 092, 092, 092, 092, 092, 092, 092, 092 BYTE 092,092,092,092,092,092,092,092,092,092,092,092,092,092,092,092 FERL TABLE: NONLINEAR FUNCTION FOR- ' ESTIMATING ERL FERLL: 0 1 2 3 4 5 6 7 8 9 A B C D E F BYTE 000,003,006, 009,00C,OOF,012,015,018.01B.01E,021,024 ,027,02A.02D BYTE 030,033,036, 039.03C,03F,042,045,048.04B.04E,051,054 ,057,05A.05D BYTE 060,063,066, 069,06C,06F,072,075,078,07B,07E,081,084 ,087,08A.08D BYTE 090,093,096, 099,09C.09F.0A2,OAS,0A8.0AB.0AE.0B1.0B4 ,0B7,OBA.OBD BYTE OCO,0C3,OC6, 0C9,0CC.0CF.0D2,0D5,0D8,0DB,0DE,0E1,0E4,0E7,OEA.OED BYTE 0F0,0F3,0F6, 0F9.0FC,OFF,002,005,008,00B,00E,011,014.017,01A.01C BYTE 020,023,026, 029,02C,02F,032,035,038,03B,03E,041,044 ,047,04A.04C BYTE 050,053,056, 059,05C,05F,062,065,068.06B.06E,071,074 ,077,07A.07C BYTE 007,OOF,017, OIF,027,02F,037,03F,047,04F,057,05F,067,06F,077,07F BYTE 087,08F,097, 09F.0A7,0AF,0B7,0BF,0C7.0CF.0D7.0DF.0E7,OEF,0F7.0FF BYTE 007,OOF,017, OIF,027.02F.037,03F,047,04F,057,05F,067,06F,077,07F BYTE 087,08F,097, 09F.OA7.0AF.0B7,0BF,0C7.0CF.0D7,0DF,0E7,0EF,OF",OFF BYTE 007,OOF,017, OIF,027.02F.037,03F,047,04F,057,05F,067,06F,077,07F BYTE 087,08F,097, 09F.0A7.0AF.0B7,0BF,0C7.0CF.0D7.0DF.0E7,0EF,0F7.0FF BYTE 007,OOF,017 OIF,027,02F,037,03F,047,04F,057,05F,067,06F,077,07F BYTE 087.08F.097, 09F.0A7.0AF.0B7,0BF,0C7,0CF,0D7,0DF,0E7,0EF,0F7.0FF FERLH: BYTE 000, 000, 000, 000, 000, 000, 000,000, 000,000, 000,000, 000,000, 000,000 BYTE 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 BYTE 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 BYTE 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 BYTE 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 BYTE 000,000,000,000,000,000,001,001,001,001,001,001,001,001,001,001 BYTE 001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001 BYTE 001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001 BYTE OFC,OFC,OFC,OFC,OFC,OFC,OFC,OFC,OFC,OFC,OFC,OFC,OFC,OFC,OFC,OFC BYTE OFC,OFC,OFC,OFC,OFC,OFC,OFC,OFC,OFC,OFC,OFC,OFC,OFC,OFC,OFC,OFC BYTE OFD,OFD,OFD,OFD,OFD,OFD,OFD,OFD,OFD,OFD,OFD,OFD,OFD,OFD,OFD,OFD BYTE OFD,OFD,OFD,OFD,OFD,OFD,OFD.OFD,OFD,OFD,OFD,OFD,OFD,OFD,OFD,OFD BYTE OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE . BVTt OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, FF, OFF, OFF, OFF, OFF, OFF, OFF ;E .BYTE OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF ;F FERLEL: ; 0 1 2 3 4 5 6 7 8 9 A B C D E F .BYTE 000, 040, 080, O O, 000, 040,000 ,000, 000, 000, 000, 000, 000, 000, 000, 000 ;0 .BYTE 000,000, 000, 000,000, 000, 000, 000, 000, 000, 000, 000, 000,000, 000, 000 ; 1 .BYTE 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 ;2 .BYTE 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 ;3 .BYTE 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 ;4 .BYTE 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 ;5 .BYTE 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 ;6 .BYTE 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 ; 7 •BYTE 000,0F8,OF8,0F8,OF8,0F8,0F8,0F8,0F8,OF8,0F8,0F8,0F8,OF8,0F8,0F8 ;8 . BYTE 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 ; . BYTE 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 ; A .BYTE OF8,OF8,OF8,OF8,OF8,OF8,OF8,OF8,OF8,0F8,OF8,OF8,0F8,OF8.0F8,OF8 ;B . BYTE 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 ; C . BYTE 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 ; D . BYTE 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0FS , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 ; E . BYTE 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 0F8 , 080 , 0A0 , OCO , OEO ; F FERLEH : .BYTE 000,000,000,000,001,001,001,001,001,001,001 ,001,001,001,001,001 .BYTE 001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001 .BYTE 001,001,001,001,001,001,001,001,001,001 ,001,001,001,001,001,001 •BYTE 001,001,001,001,001,001,001,001,001,001,001 ,001 ,001,001,001,001 .BYTE 001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001 .BYTE 001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001 .BYTE 001,001,001,001,001,001,001,001,001,001,001 ,001,001,001,001,001 .BYTE 001,001,001,001,001,001,001,001,001,001,001,001,001,001,001,001 .BYTE OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE ;8 .BYTE OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE ;9 .BYTE OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE ;A .BYTE 0FE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE ;B .BYTE OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE ;C .BYTE OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE ;D •BYTE OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE ;E .BYTE OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFF,OFF,OFF,OFF ;F ********************************************************************* ** ** WHITE NOISE TEST PATTERN ** ********************************************************************* WXNTP: .'BYTE 09D,OC6,01F,049,023,OD9,081,OA3,035,052,057,04D,01D,ODD,034,0 F ;0 WYNTP: ; 0 1 2 3 4 5 6 7 8 9 A B C D E F .BYTE OFF,044,092,OC5,028,OCF,OB7,OC8,04E,002,049,04D,060,055,045,050 . BYTE OCF , ODB , 05E , OCA , 0B4 , OCO , OBI , 012 , 020 , 053 , 032 , OAE , 0A9 , OCD , 017 , 0B8 .BYTE 044,O27,032,OCC,O28,050,053,0A9, D3,08A,098,0CE,O49,04A,097,09D .BYTE 09B,05E,05D,025,079,O5C,0D2,0A0,OAl,08B,0CC,045,056,0FD,0AD,04B .BYTE 049,OC4,01A,OEO,054,003,OA1 ) 022,OAA,OCC,014,05D,04C,04D,034,056 .BYTE 045,012,OA7,OEF,OD3,OA6,OCC,054,025,048,030,053,04D,01E,OD8.0B1 .BYTE 055,097,O56,O60,056,04E,043,036,0D9,0CA,0D4,007,O4C,OBC,0CF,0A7 .BYTE 042,097,0C1,049,013,0CD,0CB,0A9,053,0DB,09E,0BB,09B,0D6,06F,048 .BYTE 0EA,045,0DB,060,035,043,0E4,0D3,0BE,0D7,093,0A4,047,051,021,0D6 •BYTE 053,051,0D2,050,053,046,03B,099,09E,04A,09F,09A,0D6,04D,020,0C9 • BYTE OCl,0AE,OC5,08C,O9F,O90,O4D,05D,05A,062,06B,041,OA4,O59,049,OD0 .BYTE 099,OEB,031,025,OC4,ODB,020,04D,OC7.0CA.OCD,05F.,09E,056,OB7,049 31 BYTE 04F.0D4 ,U(.C, 04B, OC.'I. , U4f. ,o5b, () OA,04F, 053, OSj.ϋ 7, 09B, 099,036, ODD BYTE ODB,ODA,O32,0CA,042,0C9,0;.C,04D,01B,062,0A9,053,01 ,0A4 , ODE, 036 BYTE ' 09D,OC6,01 F,O49 l 023,OD9,O81 ,OΛ3,035,(..'.2,057,0 D,01 ,ODD 1 034 ,04F ***************************** ***-*****x******************************* ** ** WHITE NOISE TEST RESULT PATTERN ** ********************************************************************* 16mS TEST PATTERN TSPΛTO: BYTE OC6.017 ,048, 01D.0D9, 085, A , 034, 052,057 ,04D, 020, ODD, 034.04E.0FF BYTE 044,097,0C5 ,02A.0CE,OB5.0C7,04E,080,049,04C,060,054,044,04F,0CF BYTE 0DB.05E,0CA,0B4.0BF,OB0.015,021,053,031 ,OAE,0A6,OCD,016,0B9,044 BYTE 029,032,0CC,025,050,053,OAA,0D3,090,097,OCD,04A,04B,090,09D,099 BYTE 05E.05D,024,079.05C,0D2.0A0,OAO,091.0CC,045,056,OFD,OAC.04B.049 BYTE 0C4.01B,0E0,054,004,09F,024,0A7,0CC.011 ,05D,04B,04D,034,056,045 BYTE 012.0A5,0EF,0D3.0A6,0CC.054,025,048,030,053,04D,020,OD8.0B1.055 BYTE 099,056,060,056,04E,043,036,0D9,0CA.0D4 ,007,04C,OBC,OCF,09D,OC6 BYTE 07F.051 ,051 32mS MODE TSPAT1 : BYTE 0C6.010, 048, 01B, OD9.082.0AO ,035,052,058 ,04F, 021, ODE,033, 04E.0FF BYTE 044,09B,0C5,029,0CE.0B4.0C7 ,04D,002,049,04D,060,054,044,050,OCE BYTE 0DA.05F,OCA,0B5,0BE,0B0,013,021,052,02F,0B0,0A8,0CE.014,0BA.044 BYTE 029,033,OCC,026,050.053.0A6,0D3,090,O94 ,0CC,04B,04B.08A,0A0.09A BYTE 05E.05D,021 ,079,05B,0D2,0A1 ,OA2,090,0CD,045,056,OFD,OAA,04B.049 BYTE 0C4.01F,OEO,054,006.09F.024,0A9,0CD,007,05D,04B,04C.033,056,045 BYTE 015.0A4,OEF,0D3,0A5,0CC,054,027,048,031 ,053,04D,021,0D8,OBI ,055 BYTE 09C.056,060,056,04E.043.036,0D9,0CA,0D4 ,005,04C,OBC.OCF,09D.0C6 BYTE 07F.051,051 48mS MODE TSPAT2: BYTE OIF, 048, OIF, 0D9, 083, 09D, 034, 052, 058,04E ,020, ODE,033, 04D.0FF.044 BYTE 098,0C5,02B,OCD,0B4,0C8,04D,08A,049,04C,060,054,044,050,0CE,0DA BYTE 05E,OCA,0B5,OBD,OAE,014,022,052,030,OAE,0A8,OCE,013,OBA.045,029 BYTE 032,OCB,026,050,053,0A5,0D3,091,094,OCC,04A,04B.08A,OA0,O97,O5E BYTE 05D,022,079,05B,0D2,OAO,0A2,090,OCD,045,056,OFD.OAB,04A.049.0C4 BYTE 020,OEO,054,009,09C,026,0A7,OCD,002,05C,04B,04C.033,056,045,016 BYTE 0A3,OEF,0D3,0A4,OCC,054,028,048,031 ,053,04D,022,0D8,OBI .055.09D BYTE 056,060,056,04D,043,036,0D9,OCA,0D4.004,04C,OBC.OCF,09D.0C6.01F BYTE 07F,051,051 ********************************************************************* ** ** SFTDT TABLE ** ********************************************************************* SFTDT: 0 1 2 3 4 5 6 7 8 9 A B C D E F BYTE 06,06,06,06,06,06,06,06,06,06,06,06,06,06,06,06 BYTE 07,07,07,07,07,07,07,07,07,07,07,07,07,07,07,07 BYTE 08,08,08,08,08,08,08,08,08,08,08,08,09,09,09,09 BYTE 09.Q9.09 09 09 09 09 09 09 09 09 0$ 09 09 08 03 FTONE: " 0 1 2 3 4 5 6 7 8 9 A B C D E F BYTE 04,0 ,04,04,0 , 0 , 0 , 04 , 0 , 0 , , 4 , U 1 , 04 , 0 J , 04 BYTE 05 , 05 , 05 , 05 , 05 , 05 , 05 , 05 , 05 , Of, , Of. , 05 , 05 , 0 " > , 05 , 05 BYTF. Ofi , 06 , 06 , 06 , 0 , 06 , 06 , 06 , 06 , 0 , Ofi , 06 , 0 , 07 , 07 , 07 BYTE 07,07,07,07,07,07,07,07,07,07,07, ,07,07,07,07 BYTE 0 , 7, 07, 07, 07, 8, 09, OA, OB, OB, OB, OB, OB, OR, OB, OR SFTNS: 0 1 2 3 4 5 6 7 8 9 \ R C D E F RYTE 000,000,000,000,000,000,000,000,000,000,001 ,001 ,001 ,001 ,001 ,002 BYTE 002,002,002,003,003,003,003,003,003,003,00.'.,003 ,003,003,003,003 BYTE 003,00 ,003,003,003,003,003,003,003,003,003,003,003,003,003,003 ********************************************************************* ** ** FNOISE TABLE: NONLINEAR FUNCTION FOR ESTIMATING NOISE LEVEL x* ********************************************************************* FNOISL: 0 1 2 3 4 5 6 7 ' 8 9 \ B C D E F BYTE 000,008,010,018,008,008,008,008,008,008,008,008,008,008,008,008 ;0 BYTE 008,008,008,008,008,008,008,008,008,008,008,008,008,008,008,008 ; 1 BYTE 008,008,008,008,008,008,008,008,008,008,008,008,008,008,008,008 ;2 BYTE 008,008,008,008,008,008,008,008,008,008,008,008,008,008,008,008 ;3 BYTE 008,008,008,008,008,008,008,008,008,008,008,008,008,008,008,008 ;4 BYTE 008,008,008,008,008,008,008,008,008,008,008,008,008,008,008,008 ;δ BYTE 008,008,008,008,008,008,008,008,008,008,008,008,008,008,008,008 ;6 BYTE 008,008,008,008,008,008,008,008,008,008,008,008,008,008,008,008 ; 7 BYTE 000,020,040,060,080,OAO,OCO,OEO,000,020,040,060,080,OAO,OCO,OEO ;8 BYTE 000,020,040,060,080,OAO,OCO,OEO,000,020,040,060,080,OAO,OCO,OEO ;9 BYTE 000,020,040,060,080,OAO,OCO,OEO,000,020,040,060,080,OAO,OCO,OEO ;A BYTE 000,020,0 0,060,080,OAO,OCO,OEO,000,020,040,060,080,OAO,OCO,OEO ;B BYTE 000,020,040,060,080,OAO,OCO,OEO,000,020,040,060,080,OAO,OCO,OEO ;C BYTE 000,020,040,060,080,OAO,OCO,OEO,000,020,0 0,060,080,OAO,OCO,OEO ;D BYTE 000,020,040,060,080,OAO,OCO,OEO, 00,020,040,060,080,OAO,OCO,OEO ;E BYTE 000,020,040,060,080,OAO,OCO,OEO,000,020,010,060,080,OAO,OCO,OEO ;F FNOTSH: BYTE 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 BYTE 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 BYTE 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 BYTE 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 BYTE 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 BYTE 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 BYTE 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 BYTE 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 BYTE 000,0F0,0F0,0F0,0F0,0F0,0F0,0F0,0F1 ,OFl ,0F1 ,0F1 ,OFl ,0F1 ,0F1 ,0F1 BYTE OF2,OF2,0F2,0F2,OF2,0F2,OF2,0F2,0F3,OF3,0F3,0F3,0F3,0F3,OF3,0F3 BY 0F4,OF4,OF4,OF4,OF4,0F4,0F4,OF4,OF5,0F5,0F5,OF5,0F5,OF5,0F5,OF5 BYTE OF6,0F6,0F6,OF6,OF6,OF6,OF6,OF6,OF7,OF7,OF7,OF7,OF7,0F7,OF7,OF7 BYTE 0F8,OF8,OF8,OF8,OF8,0F8,0F8,OF8,OF9,OF9,OF9,0F9,OF9,OF9,OF9,0F9 BYTE OFA,0FA,OFA,OFA,OFA,OFA,OFA,OFA,OFB,OFB,OFB,0FB,OFB,0FB,OFB,OFB BYTE OFC,OFC,OFC,OFC,OFC,OFC,OFC,OFC,OFD,OFD,OFD,OFD,OFD,OFD,OFD,OFD BYTE OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFE,OFF,OFF,OFF,O.FF,OFF,OFF,OFF,OFF KOP TABLES FOR TONES KGTO: 0 1 2 3 4 5 6 7 8 9 A B C D E F BYTE OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF BYTE OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF RYTE OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF 33 • BX £ OFb.oF0,0Ff>,OF|>,0'FD,OFC>.0FI ) .,0FD,OfJ>,0FC.0F0,0F&,0Fb,CFD,OF0,OFD ,6 XΛXZ t.rF,0FE,OFE,0FE,0FE,0Fi;,0Fl.,uFr,0F " .,Ul r F.,0rE,()FE,0FE,0FF.,0FE,0FF. ; 7 1 2 2 2 BYTE 002, 002 ,002, 002, 002, 002, 002, 002, 002, OO' , 002, 002, 002, 002, 002, 002 BYTE 003,003,003,003,003,003 , 003 , 003 , 003 , 03 , 003 , 0 , 003 , 003 , 003 , 003 BYTE 003, 003, 003, 003, 003, 003, 003, 003, 00 :., 00. <, 003, 003, 003, 003, 003 ,003 FARTK : 0 1 2 3 4 5 6 7 8 9 A R C D E F BYTE 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 BYTE 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 BYTE O00,OOO,00O,00O,OO0,00O,0OO,O03,0O3,0O6,009,00A,00B,00B,00B,00B BYTE OOB,OOC,O0D,0OE,OOF,0OF,00F,OOF,OOF, 0F,O0F,00F,O0F,OOF,OOF,00F BYTE OOF, OOF, OOF, OOF, OOF, OOF, OOF, OOF, OOF, OOF, OOF, OOF, OOF, OOF, OOF, OOF SFTHRD: ; (SOFT DOUBLE TALK THRESHOLD E>X-tRDB, 6T)B MTNF.RL SETTING) 0 1 2 3 4 5 6 7 8 9 A B C D E F BYTE on,Oil,Oil,Oil,Oil,on,on,on,on,on,on,on,Oil,Oil,Oil,Oil ;0 BYTE Oil,011,011,on,on,on,on,on,on,on,on,Oil,Oil,Oil,Oil,Oil ;1 BYTE 012,012,013,013,014,014,015,015,016,016,017,017,018,018,019,019 ;2 BYTE 01A,01A,01B,01B,01C,01D,01E,01F,020,021.022,023,024,025,026,027 ; BYTE 028,029,02A,02B,02C,02D,02E,02F,030,030,030,030,030,030,030,030 ; 1 BYTE 030,030,030,030,030,0 0,030,030,030,030,030,030,030,030,030,030 ;5 BYTE 030, 30,030,030,030,030,030,030,030,030, 30,030,030,030,030,030 ;6 BY'TE 030,030,030,030,030,030,030,030,030,030,030,030,030,030,030,030 ;7 HRTHRD: ; (HARD DOUBLE TALK THRESHOLD E>Y-12DR, 6DB MINERL SETTING) 0 1 2 3 4 5 6 7 8 9 A B C D E F BYTE on,on,on,on,on,on, n, n,on, n,on,on,on,on,on,on ;<> BYTE oi1,011,on,on,on,on,on,on,on,on,on,on,on,on,on,on ;i BYTE 012,013,014,015,016,017,018,019,0 \,01B,01C,01D,01E.OIF, 20, 21 ;2 BYTE 022,023,024,025,026,027,028,029,OVA,02R,02C,02D,02F.,02F,030,030 ;3 BYTE 030,030,030,030,030, 30,030,030,030,030,030,030,030,030,030,030 ; BYTE 030,030,030,030,030,030,030,030,030,030,030,030,030,030,030,030 ;5 BYTE 030,030,030,030,030,030.030, 30,030,030,030, 30,030,030,030,030 ;6 BYTE 030,030,030,030,030,030,030,030,030,030,030,030,030,030,030,030 ;7 HGTHRD: ; (HANG OVER TIME RS THRESHOLD E<X-24DR THEN SUPPRESSOR ON); BYTE Oil,011„Oil,Oil,Oil,011,011 ,Oil,Oil,Oil, il,Oil,Oil,O l,Oil,Oil ;0 BYTE Oil,Oil,Oil,Oil,Oil,Oil,Oil,Oil,Oil,Oil,Oil,Oil,011,011,Oil,Oil ;1 BYTE 011,011,011,011,Oil,Oil,Oil,Oil,012,012, 13,013,014,014,015,015 ;2 BYTE 016,016,017,017,018,018,019,019,01A,01A,01B,01B,01C,01D,01E,01F ;3 BYTE 020,021,022,023,024,025,026,027,028,028,028,028,028,028,028,028 ;4 BYTE 028,028,028,028,028,028,028,028,028,028,028,028,028,028,028,028 ;5 BYTE 028,028,028,028,028,028,028,028,028,028,028,028,028,028,028,028 ;5 BYTE 028,028,028,028,028,028,028,028,028,028,028,028,028,028,028,028 ;5 The following table "KSSDKM" is used during soft double talk to modify the value of the adaptation gain K by subtracting the tabular value which is basically the function of "SFDCTR", the soft-double-talk counter. Assume that SFDCTR <= 5F. SSDKM: 0 1 2 3 4 5 6 7 8 9 A B C D E F BYTE 001,001,001,001,001,001,001 ,001 ,002,002,002,002,002,002,002,002 ;0 BYTE 001 OOZ OOE- O02..OO2-O02. 002. Uft 02. OftE-OβZ. ζΛ2. 0t 002.-002, 00%. ■ ■ 94/10789 34 BY Ik. 003, U .< ,00.. ,ιM... ,00.1,00.. ,003 ,003 ,003 ,003 ,003 ,003 ,00.1 ,003 , Ou.i ,003 tHE FOLLOWING TABLE "LWRCCT" IS USED DURING SOFT- DOUBLE-TALK TO LOWER THE CENTER-CLIPPER-THRESHOLD LWRCCT : 0 1 2 3 4 5 6 7 8 9 A B D E F BYTE 000,001,001 ,001 ,001 ,001 ,001,001,001 ,001 ,001,001 ,001 ,001 ,001 ,001 BYTE 002,002,002,002,003,003,003,003,004,004,005,005,006,006,007,007 BYTE 008,009, 00A , 00B , 00C , 00D, OOE, OOF, 010,011 ,0.12, 013, 014 , 015, 016, 17 BYTE 018,019,01A,01B,01C,01D, 1E,01F,020,(.21 ,022,023,024,025,026,02 BYTE 028, 029, 02A,02B,02C,02D,02E,02F, 030, 031 , 032, 033, 034, 034, 034, 0.34 BYTE 034, 034,034, 034, 034, 034, 034, 034, 034, 034, 034, 034, 034, 034, 034, 034 END

Claims: WHAT IS CLAIMED IS: 1. A method for controlling an echo canceler having an adaptive filter, comprising the steps of: determining a transitional hangover time between double talk and single talk conditions; computing an adaptive filter gain for time instances during said transitional hangover time, said computed gain varying gradually from a first predetermined value to a second predetermined value; and providing said adaptive filter with said computed gain at each said time instance. 2. The method, as set forth in claim 1, wherein said echo controller further employing a residual echo suppressor controllable by a residual suppression threshold parameter, the method further comprising the steps of: computing said residual suppression threshold for time instances during said transitional hangover time, said computed threshold varying gradually from a first predetermined value to a second predetermined value; and providing said residual echo suppressor with said computed threshold at each said time instance. 3. The method, as set forth in claim 1, wherein said computing step computes said adaptive gain increasing from said first predetermined value less than said second predetermined value to said second predetermined value. 4. The method, as set forth in claim 2, wherein said computing step computes said residual suppression threshold increasing from said first predetermined value less than said second predetermined value to said second predetermined value. 5. The method, as set forth in claim 1, further comprising the step of storing said computed adaptive gains for said time instances in a look-up table. 6. The method, as set forth in claim 2, further comprising the step of storing said computed residual suppression thresholds for said time instances in a look¬ up table. 7. The method, as set forth in claim 1, further comprising the steps of: initializing and enabling a counter for timekeeping during said hangover time; and said adaptive gain computing step includes the steps of: formulating a look-up table having a plurality of adaptive gain modifying values; subtracting from a predetermined optimum adaptive gain value an adaptive gain modifying value accessed from said look-up table as indexed by the value of said counter. 8. The method, as set forth in claim 2, further comprising the steps of: initializing and enabling a counter for timekeeping during said hangover time; and said residual suppression threshold computing step includes the steps of: formulating a look-up table having a plurality of residual suppression threshold modifying values; subtracting from a predetermined optimum residual suppression threshold value a residual suppression threshold modifying value accessed from said look-up table as indexed by the value of said counter. 9. A method for controlling an echo canceler having an adaptive filter controllable by an adaptive gain, and a residual echo suppressor controllable by a residual suppression threshold, the method comprising the steps of: determining a transitional hangover time between double talk and single talk conditions; initializing and enabling a counter for timekeeping during said hangover time; formulating a first look-up table having a plurality of adaptive gain modifying values; formulating a second look-up table having a plurality of residual suppression threshold modifying values; subtracting from a predetermined optimum adaptive gain value an adaptive gain modifying value accessed from said first look-up table and indexed by said counter value for computing said adaptive gain, said computed adaptive gain varying gradually from a first predetermined value to a second predetermined value; subtracting from a predetermined optimum residual suppression threshold value a residual suppression threshold modifying value accessed from said second look¬ up table as indexed by the value of said counter for computing said residual suppression threshold, said computed residual suppression threshold varying gradually from a third predetermined value to a fourth predetermined value; providing said adaptive filter with said computed gain and said residual echo suppressor with said computed residual suppression threshold. 10. Apparatus for controlling an echo canceler having an adaptive filter controllable by an adaptive gain, and a residual echo suppressor controllable by a residual suppression threshold, the apparatus comprising: means for determining a transitional hangover time between double talk and single talk conditions; means for initializing and enabling a counter for timekeeping during said hangover time; means for formulating a first look-up table having a plurality of adaptive gain modifying values; means for formulating a second look-up table having a plurality of residual suppression threshold modifying values; means for subtracting from a predetermined optimum adaptive gain value an adaptive gain modifying value accessed from said first look-up table and indexed by said counter value for computing said adaptive gain, said computed adaptive gain varying gradually from a first predetermined value to a second predetermined value; means for subtracting from a predetermined optimum residual suppression threshold value a residual suppression threshold modifying value accessed from said second look-up table as indexed by the value of said counter for computing said residual suppression threshold, said computed residual suppression threshold varying gradually from a third predetermined value to a fourth predetermined value; and means for providing said adaptive filter with said computed gain and said residual echo suppressor with said computed residual suppression threshold.

Inventors: OSHIDARI THOMAS T, SHENOI KISHAN, OSHIDARI, THOMAS, T., SHENOI, KISHAN
Applicants: DSC COMMUNICATIONS, DSC COMMUNICATIONS CORPORATION
Application year: 1993
Main classification: H04M9
IPC codes: H03H21, H04B3, H04M1