Lost frame concealment.
Abstract
A receiver in a frame based radio communication system includes a speech decoder of the source-filter type which is controlled by means (20, 22, 24) including internal state variables updated on a frame by frame basis for modifying received filter defining parameters representing background sounds transmitted over a communication channel. The receiver includes means (14) for detecting frame loss and means (18) for concealing the effects of frame loss by restricting updating of at least one of the internal state variables.

Term
No projected expiry on record.
- Priority
- Filed
- Granted
- Today
15 claims: 3 independent, 12 dependent
- 1PATENTKRAV 1. Anordning i en mottagare i ett rambaserat kommunikationssystem, för döljande av effekterna av förlorade ramar i en talavkodare (24) vilken talavkodare är av källa-filtertyp och styrs av organ (20, 22, 24) innehållande interna tillståndsvariabler som uppdateras ram för ram, i och för modifiering av mottagna filterdefinierande parametrar representerande bakgrundsljud, vilken anordning kännetecknas av:(a) organ (14) för detektering av ramförlust;(b) organ (18) för döljande av effekterna av en förlorad ram genom begränsning av uppdateringen av åtminstone en av de interna tillståndsvariableroa.
- 2Anordning enligt krav 1, kännetecknad av att det filterparametermodifierande organet innehåller en röstaktivitetsdetektor (20) med åtminstone en tröskel för tal/bakgrundsljudbeslut, varvid det döljande organet (18) begränsar uppdateringen av tröskeln vid förlust av en ram.
- 3Anordning enligt krav 1, kännetecknad av att det filterparametermodifierande organet inkluderar en röstaktivitetsdetektor (20) för utförande av tal/bakgrundsljudbeslut ram för ram, varvid det döljande organet (18) inhiberar uppdatering av tal/bakgrundsljudbeslut som efhållits från den föregående ramen vid förlust av en ram.
- 4Anordning enligt krav 2 eller 3, kännetecknad av att det filterparametermodifierande organet vidare inkluderar en stationaritetsdetektor (22) ansluten till en utgång från röstaktivitetsdetektorn (20) för diskriminering mellan stationärt och icke stationärt bakgrundsljud, varvid stationaritetsdetektorn inkluderar åtminstone en buffert innehållande estimat av statistiska moment av nyligen förekommande ramar dominerade av bakgrundsljud, i och för utförande av stationaritetsbeslut, 503 547 varvid det döljande organet begränsar uppdateringen av bufferten vid förlust av en ram.
- 5Anordning enligt krav 2 eller 3, kännetecknad av att det filterparametermodifierande organet vidare inkluderar en stationaritetsdetektor (22) ansluten till en utgång från röstaktivitetsdetektorn (20) fÖr diskriminering mellan stationärt och icke stationärt bakgrundsljud, varvid det döljande organet (18) inhiberar uppdateringen av stationaritets/icke stationaritetsbeslutet som erhållits från föregående ram vid förlust av en ram.
- 6Anordning enligt krav 2, 3, 4 eller 5, kännetecknad av att det filterparametermodifierande organet inkluderar organ (24) för lågpassfiltrering av de filterdefinierande parametrarna, varvid det döljande organet (18) begränsar uppdateringen av filterkoefficienterna i lågpassfiltreringsprocessen vid förlust av en ram.
- 7Anordning enligt krav 2, 3, 4, 5 eller 6, känneteckna d av att det filterparametermodifierande organet innehåller organ (24) för bandbreddsexpansion av filtret som representeras av de filterdefinierande parametrarna, varvid det döljande organet (18) begränsar uppdateringen av filterkoefficienterna vid förlust av en ram.
- 8Anordning enligt krav 6 eller 7, kännetecknad av ett postfilter för modifiering av lutningen av spektrum för den avkodade signalen, varvid det döljande organet (18) begränsar uppdateringen av lutningsinformationen vid förlust av en ram.
- 9Förfarande i en mottagare i ett rambaserat radiokommunikationssystem, för döljande av effekterna av förlorade ramar i en talavkodare, vilken talavkodare är av källa-filtertyp och innefattar organ inkluderande interna tillståndsvariabler som uppdateras ram för ram, i och för modifiering av mottagna 503 547 filterdefinierande parametrar representerande bakgrundsljud, vilket förfarande kännetecknas av:(a) detektering av ramförlust;(b) döljande av effekterna av en förlorad ram genom begränsning av uppdateringen av åtminstone en av de interna tlllståndsvariablerna.
- 10Förfarande enligt krav 9, varvid det filterparametermodifierande organet inkluderar en röstaktivitetsdetektor (20) med åtminstone en tröskel för tal/bakgrundsljudbeslut, kännetecknat av att det döljande steget innefattar begränsning av uppdateringen av tröskeln vid förlust av en ram.
- 11Förfarande enligt krav 9, varvid det filterparametermodifierande organet inkluderar en röstaktivitetsdetektor (20) för utförande av tal/bakgrundsljudbeslut ram för ram, kännetecknat av att det döljande steget innefattar inhibering av uppdateringen av tal/bakgrundsljudbesluten som erhållits från den föregående ramen vid förlust av en ram.
- 12Förfarande enligt krav 10 eller 11, varvid det filterparametermodifierande organet vidare inkluderar en stationaritetsdetektor (22) ansluten till en utgång från röstaktivitetsdetektom (20) för diskriminering mellan stationärt och icke stationärt bakgrundsljud, ·varvid stationaritetsdetektorn inkluderar åtminstone en buffert innehållande estimat av statistiska moment för nyligen förekommande ramar dominerade av bakgrundsljud, i och för utförande av stationaritetsbeslut, kännetecknat av att det döljande steget innefattar begränsning av uppdateringen av bufferten vid förlust av en ram.
- 13Förfarande enligt krav 10 eller 11, varvid det filterparametermodi f ier ande organet vidare inkluderar en stationaritetsdetektor (22) ansluten till en utgång från röstaktivitetsdetektorn (20) för diskriminering mellan stationärt och icke 503 547 stationärt bakgrundsljud, kännetecknat av att det döljande steget innefattar inhibering av uppdateringen av stationaritet/icke stationaritets-beslutet som erhållits från den tidigare ramen vid förlust av en ram. 5
- 14Förfarande enligt krav 10, 11, 12 eller 13, varvid det filterparametermodifierande organet inkluderar organ (24) för lågpassfiltrering av filterparametrarna, kännetecknat av begränsning av uppdateringen av filterkoefficienterna i lågpassfiltreringsprocessen vid förlust av en ram. 10 15. Förfarande enligt krav 10, 11, 12, 13 eller 14, varvid det filterparametermodifierande organet inkluderar organ (24) för bandbreddsexpansion av filtret som representeras av dessa parametrar, kännetecknat av begränsning av uppdateringen av filterkoefficienterna vid förlust av en ram.
- 1515 16. Förfarande enligt krav 14 eller 15, varvid lutningen av spektrum för den avkodade signalen modifieras av ett postfilter, kännetecknat av begränsning av uppdateringen av lutningsinformationen vid förlust av en ram. 1/1 503 547 BESLUTS- KANAL- DÖLJANDE C*3 Sr o:o Q
Independent claims15
334 paragraphs in 79 sections, as filed
(54) (56) (57)
OMBUD Dr Ludwig Brann Patentbyrå AB
NAME Apparatus and procedure for concealing lost frames INSERT PUBLICATIONS: - - SUMMARY:
A receiver in a frame-based radio communication system contains a source filter type speech decoder which is controlled by means (20, 22, 24) containing internal state variables which are updated frame by frame, and for modifying received filter defining parameters representing background sound transmitted through a communication channel. . The receiver includes means (14) for detecting frame loss and means (18) for concealing the effects of frame loss by limiting the updating of at least one of the internal state variables.
<img file="SE503547C2_D0001.tif" />
The numbers in brackets indicate International Identification Code, INID code. Letters in clamps indicate international document code.
503 547
FIELD
The present invention relates to the concealment of lost frames in a communication system, e.g. a radio communication system, and in particular an apparatus and method for improving background decoding of such a system.
BACKGROUND OF THE INVENTION
Bodies for improving the encoding / decoding of background noise, primarily intended for digital cellular telephone systems, have been described in the Swedish patent applications 93 00290-5 and 93 01798-6. These means are primarily designed to handle a situation in which the connection between the speech encoder and the speech decoder is near enough ideal in the sense that no frames are lost. For example, in however, the US digital cellular standard IS-54 is established the Fast Associated Control CHannel (FACCH) channel by stealing voice frames from the traffic channel (a similar channel exists in the European GSM specification). In such a case, it may be necessary to modify the methods described in the above mentioned Swedish patent applications. A similar situation occurs in a packet switched network where packets (frames) are lost or arrive too late to be used for real-time speech generation (the packets can travel different routes between the transmitter and the receiver).
An object of the present invention is a device and method in which frame loss is hidden in the received signal to make speech decoding more robust or insensitive to lost frames.
503 547
SUMMARY OF THE INVENTION
In accordance with the invention, this object is solved by a device in a receiver in a frame-based communication system, which device is intended to hide the effects of lost frames in a speech decoder, which speech decoder is of the source filter type and is controlled by means containing internal state variables which are updated frame for frame, for modifying received filter-defining parameters representing background noise, which device is characterized by:
(a) frame loss detection means;
(b) means for concealing the effects of a lost frame by limiting the updating of at least one of the internal state variables.
According to the invention, the above objects are also solved by a method in a receiver of a frame-based radio communication system, which method is intended to hide the effects of lost frames in a speech decoder, which speech decoder is of source filter type and includes means including internal state variables which are updated frame by frame. in and for modification of received filter-defining parameters representing background noise, which method is characterized by:
(a) detecting frame loss;
(b) concealing the effects of a lost frame by limiting the update of at least one of the internal state variables.
Swedish patent application 93 02025-3 describes a similar approach for concealing transmission errors.
503 547
BRIEF DESCRIPTION OF THE DRAWING
The invention and further objects and advantages thereof are best understood by reference to the following description and the accompanying drawing, which shows a block diagram of the relevant parts of a receiver in a radio communication system containing a device in accordance with the present invention.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
To understand the function of the invention, it is convenient to briefly consider the function of a typical digital cellular radio connection, typical methods for concealing lost frames and also briefly describing the algorithms in the aforementioned Swedish patent applications.
In a communication link in a digital cellular telephone system, the acoustic signal is first digitized, and then a speech coding algorithm is applied (see, e.g., BS Atal, V. Cuperman and A, Gersho, ed., Advances in Speech Coding, Kluwer Academic Publishers, 1991) . This algorithm compresses the speech signal and converts it into a number of quantized parameters (usually in a frame-based way). The resulting bits are then protected by additional coding redundancy using channel coding methods (see, e.g., GC Clark and JB Cain, Error Correction Coding for Digital Communication, Plenum Press, 1981). The resulting bitstream is then modulated (see, for example, JG Proakis, Digital Communication, 2nd ed., McGrawHill, 1989) and transmitted, e.g. by using Time Division Multiple Access (TDMA) methods. At the receiver, the signal is demodulated. Possible time and multi-way dispersion can be counteracted by various equalization methods, e.g. Viterbi equalization or decision feedback equalization (see, for example, the reference by JG Proakis above). Channel decoding (see, for example, the reference by GC Clark and JB Cain above) is then used to decode the bits that form the quantized parameters that the speech decoder needs to reconstruct the transmitted speech signal. Of the above
503 547 discussion, it is obvious that lost frames can affect the reconstructed speech signal, which reduces the quality of this signal.
For example, in the US digital cellular system according to the IS-54 standard, a stolen frame for the FACCH channel would result in a lost speech frame at the speech decoder in the receiver. The speech decoder solves this problem by filling in the appropriate information. Usually. the corresponding information from the previous frame is used instead of the lost frame. In the event that the decoder provides so-called however, anti-swirling measures for background noise, which measures will be further described below, would however be unacceptable to the quality of the resulting audio signal if such a method were used.
With this background information in mind, the present invention will now be described with reference to the figure. The figure shows parts of a receiver in a mobile radio communication system necessary to describe the present invention. An antenna 10 receives the transmitted signal and directs it to a demodulator 12. The demodulator 12 demodulates the received signal and directs it to an equalizer 13, e.g. a Viterbi equalizer which converts the received and demodulated signal into one or more bit streams, which is fed to a decision means 14. The decision means 14 determines whether a received frame contains bits from a traffic channel or the fast associated control channel (FACCH). A suitable decision-making body is described in Swedish patent application 91 02611-2, which is hereby incorporated by reference. If the received frame contains bits from a traffic channel, the bit stream is directed to a channel decoder 16. The channel decoder 16 converts the bit stream into a filter parameter stream and an excitation parameter stream for speech decoding. On the other hand, if the received frame contains bits from the FACCH channel, the bit stream is not directed to the channel decoder 16. Instead, a concealer 18 is informed of the fact that the current frame does not contain speech data.
503 547
The receiver also contains a speech detector 20 (also called voice activity detector or VAD (VAD «Voice Activity Detector)). A suitable speech detector is described in WO 89/08910 in the name of British Telecom PLC. The speech detector 20 determines from the filter and excitation parameters whether the received frame primarily contains speech or background noise. The decision of the speech detector 20 can be passed to a possibly arranged signal discriminator 22, which uses some of the excitation parameters to determine whether. received signals representing background noise are stationary or not. If a frame is classified as containing stationary background noise, the output of the signal discriminator 22 controls a parameter modifier 24 for the purpose of modifying the received filter parameters. This modification is described in detail in Swedish patent application 93 00290-5, which is hereby incorporated by reference. Further, the stationarity detection in the signal discriminator 22 and the interaction between the speech detector 20, the signal discriminator 22 and the parameter identifier 24 are described in detail in Swedish patent applications 93 01798-6 and 93 03613-5, which are hereby incorporated by reference. The possibly modified filter parameters (if the received signal represents stationary background noise) and the excitation parameters are fed to a speech decoder 26 which outputs an audio signal on the output line 28.
In order to be able to describe the error-following methods of the present invention, it is necessary to briefly describe the effect of a lost frame (which occurs when FACCH frames replace speech frames) on the so-called anti-swirling algorithms described in the above-mentioned Swedish patent applications. These effects can be roughly divided as follows:
1st The voice activity or speech detector 20 used to control the anti-swirling algorithm is usually adaptive (Voice Activity Detection, GSM Reconciliation 06.32, ETSI / GSM, 1991; WO 89/08910 in the name of British Telecom PLC). This means that there are thresholds and corresponding states that are automatically updated internally in the voice activity detector, either through
503 547 using a measured speech signal or, when used in the receiver as assumed here, using decoded parameters from the channel decoder. In the event that frames are lost, the required parameters must be generated in the receiver. One way to handle this situation is to use the same parameters as in the previous frame. However, this leads to thresholds and internal state variables that are not updated properly, which can result in incorrect decisions. The result would be a reduced quality of the reconstructed audio signal.
2nd The voice activity or speech detector 20 makes its speech / background sound decisions using incoming filter and excitation parameters and internally updated states, i.e. old incoming parameters and additional a priori information. Therefore, lost frames can result in immediate wrong decisions in the receiver, resulting in reduced quality of the reconstructed audio signal. Because current decisions also depend on old incoming parameters, lost frames can also affect future decisions.
3rd The signal discriminator 22, which may form part of the system in a preferred embodiment of the present invention, examines incoming statistical moments, preferably energy values, which describe the average signal energy for each frame. It needs to store a large number of these energies, both for the current frame and for older frames, in one or more buffers (details are described in the above mentioned Swedish patent application 93 01798-6. If faults should occur in these incoming energies, these faults would also be stored in the buffers, which would cause erroneous decisions over a significant period of time. The result would be reduced quality of the reconstructed background light output signals.
4th The measures used to counter the swirling of a stationary background audio signal are adversely affected in several ways when an incorrect decision caused by lost frames occurs. One effect is that speech is destroyed when a stationary
503 547 background sounds are detected incorrectly and anti-swirling measures are started. The opposite wrong decision (speech when stationary background noise actually occurs) can also occur, and therefore the nature of the background sound changes momentarily, which can be quite annoying. Repeated switching between decision indicating speech / stationary background noise should also be avoided, as time constants occur during the transition between the two states. Should excessive switching occur this would be very disruptive.
5th The anti-swirling measures themselves in parameter modifier 24 (essentially spectral low-pass filtering in combination with bandwidth expansion, as explained in detail in the aforementioned Swedish patent application 93 00290-5) are adversely affected by lost frames. An effect arises from incorrect decisions from the speech or voice activity detector 20 or from the signal discriminator 22. In these cases, the updating of the low pass filter can be started or turned off, causing a deviation in relation to the case where no frames are lost. Another effect occurs because lost frames affect the spectral information that feeds the low-pass filters and bandwidth expansion. Both of these effects can cause quality reductions.
6th A mail filter in the speech decoder 26 (in the event of such a occurrence) has similar problems as described in paragraph 5 above. The so-called spectral slope is strongly experienced, and since this can be manipulated by the anti-swirling algorithms, lost frames can result in a substantial quality reduction of the reconstructed speech signal.
7th The effects described above can be combined with and interact. For example, a wrong decision in the speech detector 20 may result in stopped updating of the buffers in the signal tower 22, which in turn will affect the signal gate in the signal tower 22 for a considerable time, resulting in reduced quality of the anti-swirling measures.
503 547
From the above discussion, it is apparent that lost frames may result in incorrect updating of internal variables in the speech detector 20, the signal discriminator 22, the parameter modifier 24, or combinations thereof. In accordance with the following invention, these problems are reduced or eliminated by modifying the update process in case frame loss has been detected. This modified update will now be described in more detail.
Once a lost frame has been detected, the concealer 18 can control the operation of the update process in corresponding internal state variables in the speech detector 20, the signal discriminator 22, and the parameter modifier 24, as indicated by the control lines 30, 32 and 21, respectively. 34. These modifications include:
Stopped updating of internal state variables (e.g. thresholds) in speech detector 20 when frame loss is detected. This means that the internal variables in the speech detector 20 are locked to the same value as in the previous frame, or that the updating of these state variables is limited (the state variables can only be updated with smaller amounts than usual).
Another measure is to lock the decision in the speech detector 20 to the decision from the previous frame in case frame loss is detected.
If frame loss has been detected, the updating of the buffers in the signal discriminator 22 can be stopped or restricted.
Another possibility is to lock the decision from the signal discriminator 22 to the decision in the previous frame.
If frame loss has been detected, the updating of internal filter coefficients in the parameter modifier 24 controlling the low-pass filtering and / or bandwidth expansion can be stopped or limited.
503 547
The spectral slope of a possible mail filter can be locked to the slope in the previous frame.
Since different parameters affect different blocks in the drawing (speech detector 20, signal discriminator 22, parameter modifier 24 and a possible mail filter), it will be appreciated that one or more of these measures can be taken in case of frame loss.
It will also be appreciated in the above discussion that if frame loss persists for several consecutive frames, the internal state variables in the receiver will be locked to (or substantially locked in) values corresponding to the last received frame.
The invention has been described with reference to a frame-based radio communication system in which frames are sometimes stolen from the traffic channel for use for other purposes. However, the same principles can also be applied to situations in which frames are lost for other reasons, e.g. in a packet switched network, where packets (these can either be considered as whole frames or as parts of a frame) use different paths from the transmitter to the receiver and can be lost due to overdue arrival or actual loss of packets during transmission.
A preferred embodiment of the method in accordance with the present invention is illustrated in detail by the two PASCAL program modules in the appendix APPENDIX.
Those skilled in the art will recognize that various modifications and modifications may be made to the present invention without departing from its basic idea and scope as defined by the appended claims.
503 547 ίο
APPENDIX [INHERIT ('spd $ def')]
MODULE vad_dtx_rx (input, output);
CONST nr_sub_blocks = 4; nr_acf_lags_in = 10; Or_acf_lags_used = 8; burstconst = 3; hangconst = 5; frames_avO · = 4;
WHERE
<td>adapters count</td><td>: [STATIC] INTEGER;</td><td>{For threshold</td>
<td>thvad</td><td>: [STATIC] DOUBLE;</td><td>{For threshold</td>
<td>RVAD</td><td>: [STATIC] ARRAY [0. OF REAL;</td><td>nr_acf_lags_used]</td>
<td>burst count</td><td>: [STATIC] INTEGER;</td><td>{For overhang}</td>
<td>Hang count</td><td>: [STATIC] INTEGER;</td><td>{For overhang}</td>
<td>n</td><td>: [STATIC] ARRAY [-1. OF INTEGER</td><td>.nr_sub_blocks-1] • 9</td>
<td>last_dm</td><td>: [STATIC] REAL;</td><td>{For WHAT}</td>
<td>old_lag_count</td><td>[STATIC] INTEGER;</td>
<td>very_old_lag_count</td><td>[STATIC] INTEGER;</td>
<td>thresh</td><td>[STATIC] REAL;</td>
<td>1thresh</td><td>[STATIC] INTEGER;</td>
<td>Nthresh</td><td>[STATIC] INTEGER;</td>
<td>acf_old, av0</td><td>[STATIC] ARRAY [-framesavO..0</td>
<td></td><td>0..nr_acf_lags_used]</td>
<td></td><td>OF REAL;</td>
breeding, breeding, breeding: [STATIC] ARRAY [0..nracflagsused] OF REAL;
elapsed_frames: [STATIC] INTEGER;
503 547 sphangover: [STATIC] INTEGER;
speech_dtx: [STATIC] BOOLEAN;
sp_old; [STATIC] BOOLEAN;
PROCEDURE schur_pas (acf: ARRAY [Al., A2: INTEGER] OF REAL;
VAR rc: ARRAY [B1..B2: INTEGER] OF
REAL;
mdim: INTEGER); EXTERNAL;
PROCEDURE stepup_pas (rc: ARRAY [Al..A2: INTEGER] OF REAL; VAR a: ARRAY [Bl..B2: INTEGER] OF REAL;
mdim: INTEGER); EXTERNAL;
PROCEDURE Flstat_det_rx (pow: REAL; sp_l: BOOLEAN;
VAR sp in BOOLEAN); EXTERNAL;
PROCEDURE Flstatdetrxinite; EXTERNAL;
[GLOBAL]
PROCEDURE FLvad_init; {MUST be called from start}
VAR i, j: INTEGER;
BEGIN {threshold} adaptcount: = 0;
thvad: = 1000000;
rvad [0]: = 6;
rvad [l]: = -4;
rvad [2]: = 1;
503 547
FOR ί: = 3 TO nr_acf_lags_used DO BEGIN rvad [i]: = 0;
END;
{end threshold} {vad} old_lag_count: = 0;
very_old_lag_count: = 0;
n [3]: = 19;
hangcount: = -1;
burstcount: = 0;
last_dm: = 0;
thresh: = 0.05;
lthresh: = 2;
nthresh: 4;
FOR i: -frames_av0 TO -1 DO BEGIN FOR j: »0 TO nr_acf_lags_used DO BEGIN acf_old [i, j]: - 0;
avO [i, j]: - 0;
END;
END;
{end vad} elapsed_frames: - 24; sphangover: - 0; speech_dtx: - TRUE; sp_old: - TRUE; Flstat_det_rx_init;
END; {init_vad_dtx}
PROCEDURE vadthresh (acfO: REAL;
{Input}
503 547 ravl: ARRAY [A1..A2; Integer]
OF REAL;
{Input} state: BOOLEAN;
{Input} ptch: BOOLEAN; pvad: DOUBLE);
{Input} {Output} {Common variables used: (all output)
<td>adapters count</td><td>initially set</td><td>to</td><td> 0</td><td></td>
<td>thvad</td><td>initially set</td><td>to</td><td> 1000000</td><td></td>
<td>RVAD</td><td>initially set</td><td>to</td><td>rvad [0]:</td><td> 6</td>
<td></td><td></td><td></td><td>rvad [l]:</td><td> -4</td>
<td></td><td></td><td></td><td>rvad [2]:</td><td> 1</td>
rvad [3-8]: 0}
CONST
<td>PTH</td><td> = 300000;</td>
<td>plev</td><td> - 800000;</td>
<td>fac</td><td> - 3;</td>
<td>ADP</td><td> 8;</td>
<td>inc</td><td> « 16</td>
<td>Dec.</td><td> = 32</td>
<td>margin</td><td> - 80000000;</td>
BE IN: INTEGER;
BEGIN
IF acfO <pth THEN BEGIN thvad: plev;
THAN ANYBODY STARTS
503 547
IF NOT (stat AND NOT ptch) THEN BEGIN adaptcount: = 0;
END ELSE BEGIN adaptcount: = adaptcount +1;
IF adaptcount> adp THEN BEGIN thvad: = thvad - thvad / dec; IF thvad <pvad * fac THEN START THvad: MIN (thvad + thvad / inc, pvad * fac);
END;
IF thvad> pvad + margin THEN BEGIN thvad: pvad + margin;
END;
FOR i: = 0 TO nr_acf_lags_used DO
BEGIN rvad [i]: = ravl [i];
END;
adaptcount: = adp + 1;
END;
END;
END;
END; {Procedure}
PROCEDURE FLvadrxl (acf_in: realACFType; {Input} ltplags: integer subframe type; {Input}
WHAT WHAT: BOOLEAN); {Output} {Common variables used:
n [-l..3] oldlagcount veryoldlagcount ltp_lags Input / Output Input / Output Input / Output
503 547 thvad
VAR: threshold} ptch, wad,
<td>State</td><td>: BOOLEAN;</td>
lag_count, smallag,
<td>i, j, k acfO,</td><td>: INTEGER;</td>
<td>dm, difference</td><td>: REAL;</td>
<td>pWhat</td><td>: DOUBLE;</td>
<td>rc</td><td>: ARRAY [l..nr_acf lags used] OF REAL;</td>
BEGIN n [-l]: - n [3];
FOR i: - 0 TO 3 DO START n [l]: - ltp_lags [i];
END;
FOR i: - -framesavO TO -1 DO START
FOR k: - 0 TO nr_acf_lags_used DO BEGIN acf_old [i, k]: - acf_old [i + l, k]; avO [i, k]: - avO [i + l, k];
END;
END;
FOR k: - 0 TO nr_acf_lags_used DO BEGIN acf_old [0, k]: - acf_in [k];
END;
503 547 {Adaptive filtering and energy computation. } pvad: = rvad [0] * acf_old [0,0];
FOR k: = 1 TO nr_acf_lags_used DO BEGIN pvad: = pvad + 2.0 * rvad [k] * acf_old [0, k]; END;
{ACF averaging}
FOR k: = 0 TO nr_acf_lags_used DO BEGIN av0 [0, k]: = 0;
FOR j: = 0 TO frames_avO-l DO BEGIN av0 [0, k]: = av0 [0, k] + acf_old [-j, k];
END;
breeding [k]: «av0 [-frames_av0, k];
END;
{Solve the equations system} schur_pas (breeding, rc, nr_acf_lags_used); stepup_pas (rc, breeding, nr_acf_lags_used);
FOR i: »0 TO nr_acf_lags_used DO BEGIN ravl [l]:» 0;
FOR k: = 0 TO nr_acf_lags_used-i DO BEGIN ravlfi]: = ravl [i] + aavl [k] * aavl [k + i];
END;
END;
IF av0 [0,0] <- 0 THEN BEGIN dm: = 0;
END ELSE BEGIN dm: »ravl [0] * av0 [0,0];
FOR i: 1 TO nr_acf_lags_used DO BEGIN dm: «dm + 2 * ravl [i] * av0 [0, i];
END;
dm: dm / av0 [0.0];
END;
503 547 difference: = dm - last_dm;
state: - ABS (difference) <thresh; last_dm: - dm;
ptch: - ((old_lag_count + very_old_lag_count)> -nthresh); acfO: = acf_in [O];
what thresh (acf0, ravl, state, ptch, pvad);
wad: = (pvad> thvad);
IF wad THEN BEGIN burstcount: = burstcount + 1;
END ELSE BEGIN burstcount: = 0;
END;
IF burstcount> - burstconst THEN BEGIN hangcount: = hangconst; burstcount: - burstconst;
END;
what: - wad OR (hangcount> = 0);
IF hangcount> - 0 THEN BEGIN hangcount: = hangcount -1;
END;
lag_count: - 0;
FOR j: - 0 TO 3 DO START
IF n [j]> 19 THEN BEGIN smallag: = MAX (n [j], n [j-1]) MOD
MIN (n [j], n [jl]);
IF MIN (smallag, MIN (n [j], n [j-1]) - smallag) <lthresh THEN BEGIN lag_count: - lag_count + 1;
END;
END;
END;
503 547 very_old_lag_count: = old_lag_count;
old_lag_count: = lagcount;
END;
PROCEDURE FLdtx_hand_rx_l (what: BOOLEAN; {Input}
Var sp: BOOLEAN); {Output}
BEGIN
IF elapsedframes <24 THEN BEGIN elapsed_frames: = elapsedframes + 1;
END;
IF speech_dtx THEN BEGIN
IF what THEN BEGIN sp: - TRUE;
END ELSE BEGIN sp_hangover: - 1;
IF elapsed_frames = 23 THEN START elapsed_frames: = 22;
END;
sp: - (elapsed_frames> 23); speech_dtx: - FALSE;
END;
THAN ANYBODY STARTS
IF what THEN BEGIN sp: - TRUE;
speech_dtx: = TRUE;
THAN ANYBODY STARTS
IF sp_hangover <5 THEN BEGIN sp_hangover: = sp_hangover + 1; IF elapsed_frames - 23 THEN BEGIN
503 547 elapsed_frames: = 22;
END;
END;
IF sp_hangover> 4 THEN BEGIN elapsed_frames: = 0;
sp: = FALSE;
END ELSE BEGIN sp: = (elapsed_frames> 23);
END;
END;
END;
END;
[GLOBAL]
PROCEDURE FLvad_rx (acf_in: realACFType; ltp_lags: integers subframeltptype; FllostFrame: BOOLEAN;
Var sp: BOOLEAN);
{Input} {Input} {Input} {Output}
WHAT WHAT: BOOLEAN; spl: BOOLEAN;
BEGIN
IF NOT FllostFrame THBN BEGIN
FLvad_rx_l (acf_in, ltp_lags, what);
FLdtx_hand_rx_l (what, spl);
FLstat_det_rx (acf _in [0], spl, sp);
IF NOT USED THEN BEGIN sp: - spl;
END;
sp_old: = sp;
503 547
END ELSE BEGIN sp: = sp_old;
END;
END;
END.
[INHERIT ('spd $ def')] MODULE as_actions_rx (input, output);
{Global (for the module) variables}
WHERE
<td>FLfilter_filter_state</td><td> • •</td><td>[STATIC]</td><td>realArraylOType;</td>
<td>FLfilter_filter_coeff</td><td> • •</td><td>[STATIC]</td><td>REAL;</td>
<td>FLfilter_filter_gain</td><td> • •</td><td>[STATIC]</td><td>REAL;</td>
<td>FLfilter_post_state</td><td> •</td><td>[STATIC]</td><td>realArraylOType;</td>
<td>FLfilter_post_coeff</td><td> •</td><td>[STATIC]</td><td>REAL;</td>
<td>FLfilter_post_gain</td><td> •</td><td>[STATIC]</td><td>REAL;</td>
<td>FLf ilter_my_state</td><td> :</td><td>[STATIC]</td><td>REAL;</td>
<td>FLf ± 11er_my_coeff</td><td> •</td><td>[STATIC]</td><td>REAL;</td>
<td>FLf i1ter_my_gain</td><td> • •</td><td>[STATIC]</td><td>REAL;</td>
<td>FLexpand_factor</td><td> • •</td><td>[STATIC]</td><td>REAL;</td>
<td>first_sp</td><td> • •</td><td>[STATIC]</td><td>BOOLEAN;</td>
{External routines}
PROCEDURE stepdn_unstable_special_pas (
VAR rc: realArraylOType;
: RealArraylOType;
VAR unstable: BOOLEAN);
{Input} {Output} {Output}
EXTERNAL;
PROCEDURE stepdn_special_pas (: realArraylOType;
A
VAR rc: RealArraylOType);
{Input} {Output}
503 547
EXTERNAL;
PROCEDURE FLpostCoeffCalculation (
ZFLacfW: realACFType;
VAR ZFLetaCurr: realArraylOType);
EXTERNAL;
PROCEDURE FLcalculateACF (
FLalphaCurr: realArraylOType;
VAR FLacfW: realACFType);
EXTERNAL;
PROCEDURE FLcalculateautocorrfunction (FLalphaCurr: realArraylOType;
VAR FLacfW: realACFType);
EXTERNAL;
[GLOBAL]
PROCEDURE FLas_actions_rx_init;
{MUST be called first to initialize} {some things. }
WAS m: INTEGER;
{NOTE FLbw_exp is transferred as COMMON}
BEGIN
FOR m: - 1 TO nrCoeff DO BEGIN FLfilter_filter_state [m]: «0; FLfilter_post_state [m]: - 0;
END;
FLfilter_my_state: - 0; first_sp: - TRUE;
503 547 {The following could be placed in ROM}
FLfilter_filter_coeff: = EXP (-1.O / (4.0 * 50.0));
FLfilterjnycoeff: = EXP (-1.0 / (0.25 * 50.0)); FLfilter_post_coeff: = FLfilter_my_coeff;
FLfilter_filter_gain: = 1 - FLfilter_filter_coeff; FLfilter_post_gain: = 1 - FLfilter_post_coeff;
FLfilter_my_gain: = 1 - FLfilter_my_coeff;
IF FLbw_exp> = 0 THEN START
FLexpand_factor: = EXP (-FLpi * FLbw_exp / 8000.0);
THAN ANYBODY STARTS
FLexpand_factor: = 1;
END;
{FLexpand_factor: = EXP (-FLpi * 100.0 / 8000.0);} (FLexpand_factor: = EXP (-FLpi * 400.0 / 8000.0);} {###} {###}
Writeln ( 'FLfilter_filter_coeff', FLfilter_filter_coeff); WRITELN ('FLfilter_filter_gain:', FLfilter_filter_gain); WRITELN ('FLfilter_my_coeff:', FLfilter_my_coeff);
WRITELN ('FLfilter_my_gain:', FLfilter_my_gain); WRITELN ('FLfilter_post_coeff:', FLfilter_post_coeff);
WRITELN ('FLfilter_post_gain:', FLfilter_post_gain);
WRITELN ('FLbwexp:', FLbwexp);
WRITELN ('FLexpand_factor:', FLexpand_factor);
WRITELN ('FLv_post:', FLvpost);
{ ### }
END;
[GLOBAL]
PROCEDURE FLas_actions_rx {sp: BOOLEAN; (In}
503 547
<td></td><td>FLa_in FLrc_in FllostFrame</td><td>: realArray1OType; : realArraylOType; : BOOLEAN;</td><td colspan="2">{In <In <In</td><td> } } }</td>
<td>WHERE</td><td>FLa_pres</td><td>: realArraylOType;</td><td> {</td><td>out</td><td> }</td>
<td>WHERE</td><td>FLrc_pres</td><td>: realArraylOType;</td><td> (</td><td>out</td><td> }</td>
<td>WHERE</td><td>FLa_post_pres</td><td>: realArray1OType;</td><td> {</td><td>out</td><td> }</td>
<td>WHERE</td><td>FLetacurr</td><td>: realArraylOType;</td><td> {</td><td colspan="2">In / Out}</td>
<td>WHERE</td><td>FLmy_use</td><td>: REAL);</td><td> {</td><td>out</td><td> }</td>
WHERE
<td>m</td><td>: INTEGER;</td>
<td>FLdum</td><td>: REAL;</td>
<td>FLRC_temp</td><td>: realArraylOType;</td>
<td>unstable</td><td>: BOOLEAN;</td>
<td>FLacfw</td><td>: realACFType;</td>
<td>i_ab</td><td>: INTEGER; {###}</td>
<td>eta_temp</td><td>: realArraylOType; {###</td>
BEGIN
FOR m: - 1 TO nrCoeff DO START
FLa_post_pres [m]: »FLa_in [m] * FLnyweight [m]; END;
IF sp THEN BEGIN {FLfilter_my_state: - FLfilter_my_coeff * FLfilter_my_state + FLfilter_my_gain * FLmy;} {###}
FLmy_use: = FLmy;
FOR m: «1 TO nrCoeff DO START
FLa_pres [m]: = FLa_in [m];
503 547
FLrc_pres [m]: = FLrc_in [m];
END;
IF first_sp THEN BEGIN FLdum: = FLexpand_factor;
FOR m: = 1 TO nrCoeff DO START
Flfilter_filter_state [m]: = FLa_in [m] * FLdum;
FLfilter_post_state [m]: = FLa_post_pres [m] * FLdum;
FLdum: - FLdum * Flexpand_factor; END;
END;
THAN ANYBODY STARTS
IF NOT FllostFrame THEN BEGIN
FLfilter_my_state: = FLfilter_my_coeff * FLfilter_my_state + FLfilter_my_ga ± n * FLmy_off; END;
FLmy_use: - FLfilter_my_state;
FLdum: = FLexpand_factor;
FOR m: - 1 TO nrGoeff DO START
IF NOT FllostFrame THEN BEGIN
FLfilter_filter_state [m]: = FLfilter_filter_state [m] * FLfilter_filter_coeff + FLfilter_filter_gain * FLa_in [m] * FLdum;
FLfilter_post_state [m]: = FLfilter_post_state [m] * FLfilter_post_coeff +
503 547
FLfilter_post_gain *
FLa_post_pres [m] * FLdum;
END;
FLa_pres [m]: =
FLfilter_filter_state [m];
FLa_post_pres [m]: =
FLfilter_post_state [m];
FLdum: »FLdum * FLexpandfactor;
END;
{Check for stability} stepdn_unstable_special_pas (
<td>FLa_pres,</td><td> {</td><td>In</td>
<td>FLRC_pres,</td><td> <</td><td>out</td>
<td>unstable);</td><td> <</td><td>out</td>
IF unstable THEN BEGIN
WRITELN ('Unstable a-parameter (as_actions_rx)');
FOR m: = 1 to nrCoeff DO START
FLa_pres [m]: = FLa_in [m]; FLrc_pres [m]: «FLrc_in [m];
END;
END;
stepdn_unstable_special_pas (FLa_post_pres, {In} FLRC_temp, {Out} unstable); {Out}
IF unstable THEN BEGIN
WRITELN ('Unstable post_fliter (as_actions_rx)'); FLdum: - FLexpand_factor;
FOR m: - 1 TO nrCoeff DO START
503 547
FLa_post_pres [m]: · = FLa_in [m] *
FLnyweight [m] * Fldum;
FLdum: - FLdum * FLexpand_factor;
END;
END;
FLcalculateACF (FLa_post_pres, FLACFw);
{Flcalculateautocorrfunction (
FLa_pres, FLACFw);}
FLpostCoeffCalculation (
FLACFw, FLetaCurr);
END;
first_sp: - (sp AND first_sp);
END;
END.
503 547
Contents79
2 sheets
Sheet 1 Sheet 2
103 members in 21 offices
Priority claims6
| Document | Office | Kind | Date |
|---|---|---|---|
| 9302025 | Sweden | A | |
| 9302025 | Sweden | A | |
| 9304058 | Sweden | A | |
| 93020253 | – | – | – |
| SE19930002025 | – | – | – |
| SE19930004058 | – | – | – |
Members103
| Document | Office | Kind | |
|---|---|---|---|
| SE9302025D0 | Sweden | D0 | |
| SE9304058D0 | Sweden | D0 | |
| SE9401462D0 | Sweden | D0 | |
| SE9403386D0 | Sweden | D0 | |
| SE9302025L | Sweden | L | |
| SE9304058L | Sweden | L | |
| SE9401462L | Sweden | L | |
| CA2140363A1 | Canada | A1 | |
| CA2140364A1 | Canada | A1 | |
| CA2140365A1 | Canada | A1 | |
| WO9429849A1 | World Intellectual Property Organization (WIPO) | A1 | |
| WO9429850A1 | World Intellectual Property Organization (WIPO) | A1 | |
| WO9429851A1 | World Intellectual Property Organization (WIPO) | A1 | |
| AU7011494A | Australia | A | |
| AU7011594A | Australia | A | |
| AU7011694A | Australia | A | |
| SE501340C2 | Sweden | C2 | |
| MX9404250A | Mexico | A | |
| MX9404251A | Mexico | A | |
| MX9404252A | Mexico | A | |
| FI950590A | Finland | A | |
| FI950590L | Finland | L | |
| FI950591A | Finland | A | |
| FI950591A7 | Finland | A7 | |
| FI950592A | Finland | A | |
| FI950592A7 | Finland | A7 | |
| TW243570B | Taiwan Province of China | B | |
| EP0655159A1 | European Patent Office (EPO) | A1 | |
| EP0655160A1 | European Patent Office (EPO) | A1 | |
| EP0655161A1 | European Patent Office (EPO) | A1 | |
| KR950703192A | Republic of Korea | A | |
| KR950703193A | Republic of Korea | A | |
| SE502244C2 | Sweden | C2 | |
| CN1110486A | China | A | |
| CN1110883A | China | A | |
| CN1110884A | China | A | |
| SE9403386L | Sweden | L | |
| CA2188122A1 | Canada | A1 | |
| WO9530282A1 | World Intellectual Property Organization (WIPO) | A1 | |
| AU2422295A | Australia | A | |
| JPH08500233A | Japan | A | |
| JPH08500234A | Japan | A | |
| JPH08500235A | Japan | A | |
| TW268172B | Taiwan Province of China | B | |
| KR960700499A | Republic of Korea | A | |
| NZ267734A | New Zealand | A | |
| NZ267735A | New Zealand | A | |
| SE503547C2This record | Sweden | C2 | |
| AU670514B2 | Australia | B2 | |
| AU670698B2 | Australia | B2 | |
| AU670699B2 | Australia | B2 | |
| NZ267733A | New Zealand | A | |
| US5572622A | United States of America | A | |
| FI964309A | Finland | A | |
| FI964309L | Finland | L | |
| US5596678A | United States of America | A | |
| SE504396C2 | Sweden | C2 | |
| US5598506A | United States of America | A | |
| EP0758502A1 | European Patent Office (EPO) | A1 | |
| CN1147320A | China | A | |
| BR9507565A | Brazil | A | |
| SG43802A1 | Singapore | A1 | |
| JPH09512679A | Japan | A | |
| MX9605118A | Mexico | A | |
| SG45176A1 | Singapore | A1 | |
| SG46982A1 | Singapore | A1 | |
| AU689893B2 | Australia | B2 | |
| RU2120141C1 | Russian Federation | C1 | |
| RU2120667C1 | Russian Federation | C1 | |
| RU2120668C1 | Russian Federation | C1 | |
| TW350172B | Taiwan Province of China | B | |
| EP0655159B1 | European Patent Office (EPO) | B1 | |
| DE69416493D1 | Germany | D1 | |
| US5901186A | United States of America | A | |
| ES2129646T3 | Spain | T3 | |
| DE69416493T2 | Germany | T2 | |
| GR3029729T3 | Greece | T3 | |
| HK1012749A1 | Hong Kong, China | A1 | |
| HK1013880A1 | Hong Kong, China | A1 | |
| KR100220376B1 | Republic of Korea | B1 | |
| KR100220380B1 | Republic of Korea | B1 | |
| KR100220381B1 | Republic of Korea | B1 | |
| HK1014071A1 | Hong Kong, China | A1 | |
| DK0655159T3 | Denmark | T3 | |
| EP0655160B1 | European Patent Office (EPO) | B1 | |
| EP0655161B1 | European Patent Office (EPO) | B1 | |
| DE69421500D1 | Germany | D1 | |
| DE69421501D1 | Germany | D1 | |
| DK0655160T3 | Denmark | T3 | |
| DK0655161T3 | Denmark | T3 | |
| GR3031751T3 | Greece | T3 | |
| GR3031787T3 | Greece | T3 | |
| ES2141236T3 | Spain | T3 | |
| ES2141326T3 | Spain | T3 | |
| DE69421501T2 | Germany | T2 | |
| DE69421500T2 | Germany | T2 | |
| EP0758502B1 | European Patent Office (EPO) | B1 | |
| DE69518837D1 | Germany | D1 | |
| DE69518837T2 | Germany | T2 | |
| CN1064768C | China | C |
1 legal event, as the office reported them to INPADOC
Events
| Event | Code | |
|---|---|---|
| Patent has lapsedLapsedNUG | NUG |
Numbers
- Publication, DOCDB
- 503547
- Publication, EPODOC
- SE503547
- Application
- 9304058
- Application, DOCDB
- 9304058
- Application, EPODOC
- SE19930004058
Titles2
- Swedish
- Anordning och förfarande för döljande av förlorade ramar
- English
- Device and method for concealing lost frames
Classification
- CPC, 4
- G10L19/005
- G10L25/78
- H04L1/0045
- G10L21/02
- IPC, 5
- G10L13 00
- G10L19 005
- G10L25 78
- H04B1 10
- H04L1 00