Transmission error 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 parameters representing background sounds transmitted over a communication channel. The receiver includes means (12, 13, 14) for detecting frames containing transmission errors, means (16) for deciding whether a frame in which transmission errors have been detected is acceptable, and means (18) for concealing the detected transmission errors by restricting updating of at least one of the internal state variables if the detected frame is declared non-acceptable by the deciding means.

Term
No projected expiry on record.
- Priority and filed
- Granted
- Today
16 claims: 2 independent, 14 dependent
- 1PATENTKRAV 1. Anordning i en mottagare i ett rambaserat radiokommunikations- system för döljande av transmissionsfel i en talavkodare (24) förorsakade av kommunikationskanalen, 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 filterparametrar representerande bakgrundsljud sända över kommunikationskanalen, vilken anordning kännetecknas av:(a) organ (12, 13, 14) för detektering av ramar innehållande transmissionsfel;(b) organ (16) för bestämning av huruvida en ram i vilken transmissionsfel har detekterats är acceptabel;(c) organ (18) för döljande av de detekterade transmissionsfelen genom begränsning av uppdateringen av åtminstone en av de interna tillståndsvariablerna om den detekterade ramen deklarerats såsom varande icke acceptabel i bestämningsorganet.
- 2Anordning enligt krav 1, kännetecknad av att filterparametermodifieringsorganet inkluderar en röstaktivitetsdetektor (20) med åtminstone en tröskel för beslut avseende tal/bakgrundsljud, varvid det döljande organet (18) begränsar uppdateringen av tröskeln om den detekterade ramen deklarerats såsom varande icke acceptabel av bestämningsorganet (16).
- 3Anordning enligt krav 1, kännetecknad av att filterparametermodifieringsorganet inkluderar en röstaktivitetsdetektor (20) för utförande av beslut avseende tal/bakgrundsljud ram för ram, varvid det döljande organet (18) stoppar uppdateringen av tal/bakgrundsljud-beslutet som erhållits från föregående ram i det fall att den detekterade ramen deklarerats såsom varande icke acceptabel av bestämningsorganet (16). 501 340
- 4Anordning enligt krav 2 eller 3, kännetecknad av att filterparametermodifieringsorganet 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 för utförande av stationaritetsbeslut, varvid det döljande organet begränsar uppdateringen av bufferten om den detekterade ramen deklarerats såsom varande icke acceptabel av bestämningsorganet (16).
- 5Anordning enligt krav 2 eller 3, kännetecknad av att filterparametermodifieringsorganet vidare inkluderar en stationaritetsdetektor (22) ansluten till en utgång från röstaktivitetsdetektorn (20) för diskriminering mellan stationära och icke stationära bakgrundsljud, varvid det döljande organet (18) stoppar uppdateringen av beslutet avseende stationaritet/icke stationaritet från föregående ram i det fall att den detekterade ramen deklarerats såsom varande icke acceptabel av bestämningsorganet (16).
- 6Anordning enligt krav 2, 3, 4 eller 5,kännetecknad av att filterparametermodifieringsorganet inkluderar organ (24) för lågpassfiltrering av filterparametrarna, varvid det döljande organet (18) begränsar uppdateringen av filterkoefficienter i lågpassfiltreringsprocessen i det falla att den detekterade ramen deklarerats såsom varande icke acceptabel av bestämningsorganet (16).
- 7Anordning enligt krav 2, 3, 4, 5 eller 6, känneteckna d av att filterparametermodifieringsorganet inkluderar organ (24) för låg bandbreddsexpansion av filtret som representeras av filterparametrarna, varvid det döljande organet (18) begränsar uppdateringen av filterkoefficienterna i det fall att den detekterade ramen deklarerats såsom varande icke acceptabel av bestämningsorganet (16). 501 340
- 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 i det fall att den detekterade ramen deklarerats såsom varande icke acceptabel av bestämningsorganet (16).
- 9Förfarande i en mottagare i ett rambaserat radiokommunikationssystem för döljande av transmissionsfel i en talavkodare förorsakade av kommunikationskanalen, vilken talavkodare är av källa-filtertyp och innefattar organ inkluderande interna tillståndsvariabler som uppdateras ram för ram för modifiering av mottagna filterparametrar representerande bakgrundsljud som sänts över kommunikationskanalen, vilket förfarande kännetecknad av:(a) detektering av ramar innehållande transmissionsfel;(b) bestämning av huruvida en ram i vilken transmissionsfel detekterats är acceptabel;(c) döljande av de detekterade transmissionsfelen genom begränsning av uppdateringen av åtminstone en av de interna tillståndsvariablerna i det fall att den detekterade ramen deklarerats såsom varande icke acceptabel i bestämningssteget.
- 10Förfarande enligt krav 9, varvid filterparametermodifieringsorganet inkluderar en röstaktivitetsdetektor (20) med åtminstone en tröskel för tal/bakgrundsljud-beslut, kännetecknat av att det döljande steget innefattar begränsning av uppdateringen av tröskeln i det fall att den detekterade ramen deklarerats såsom varande icke acceptabel i bestämningssteget.
- 11Förfarande enligt krav 9, varvid filterparametermodifieringsorganet inkluderar en röstaktivitetsdetektor (20) för utförande av tal/bakgrundsljud-beslut ram för ram, kännetecknat av att det döljande steget innefattar stoppad uppdatering av tal/bakgrundsljudbeslutet som erhållits från 501 340 föregående ram i det fall att den detekterade ramen deklarerats såsom icke acceptabel i bestämningssteget.
- 12Förfarande enligt krav 10 eller 11, varvid filterparametermodifieringsorganet 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 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 i det fall att den detekterade ramen deklarerats såsom varande icke acceptabel i bestämningssteget.
- 13Förfarande enligt krav 10 eller 11, varvid filterparametermodi f ieringsorganet vidare inkluderar en stationarytetsdetektor (22) ansluten till en utgång från röstaktivitetsdetektorn (20) för diskriminering mellan stationärt och icke stationärt bakgrundsljud, kännetecknat av att det döljande steget innefattar stoppad uppdatering av beslutet avseende stationarytet/icke stationaritet som erhållits från föregående ram i det fall att den detekterade ramen deklarerats såsom varande icke acceptabel i bestämningssteget.
- 14Förfarande enligt krav 10, 11, 12 eller 13, varvid filterparametermodifieringsorganet inkluderar organ (24) för lågpassfiltrering av filterparametrarna, kännetecknat av begränsning av uppdateringen av filterkoefficienterna i lågpassfiltreringsprocessen om den detekterade ramen deklarerats såsom varande icke acceptabel i bestämningssteget.
- 15Förfarande enligt krav 10, 11, 12, 13 eller 14, varvid filterparametermodifieringsorganet inkluderar organ (24) för bandbreddsexpansion av filtret som representeras av dessa parametrar, kännetecknat av begränsning av uppdateringen av filterkoefficienterna i det fall att den detektera- 501 340 de ramen deklarerats såsom varande icke acceptabel i bestämningssteget.
- 16Förfarande enligt krav 14 eller 15, varvid lutningen av spektrum av den avkodade signalen modifieras av ett postfilter, 5 kännetecknat av begränsning av uppdateringen av lutningsinformationen i det fall att den detekterade ramen deklarerats såsom varande icke acceptabel i bestämningssteget. 501 340 BESLUTS- DÖLJANDE
Independent claims16
342 paragraphs in 80 sections, as filed
(54) (56) (57)
OMBUD Branns
NAME Hiding transmission errors in a speech decoder
CALLED PUBLICATIONS: - - SUMMARY:
A receiver in a frame-based radio communication system includes a source filter type speech detector, which is controlled by means (20, 22, 24) containing internal state variables which are updated frame by frame to modify received filter parameters representing background noise transmitted over a communication channel. The receiver includes means (12, 13, 14) for detecting frames containing transmission errors, means (16) for determining whether a frame in which transmission errors have been detected is acceptable and means (18) for concealing the detected transmission errors by limiting the update of at least one of the internal state variables in the case the detected frame is declared to be unacceptable by the determining means.
<img file="SE501340C2_D0001.tif" />
The numbers in brackets indicate international identification code, INID code. Letters in clamps indicate international document code.
501 340
TECHNICAL FIELD
The present invention relates to the concealment of transmission errors in a radio communication system, and in particular relates to a device and a method for improving the decoding of background noise in such a system.
BACKGROUND OF THE INVENTION
Means for improved encoding / decoding of background sounds, primarily intended for digital cellular telephone systems, have been described in Swedish patent applications 93 00290-5 and 93 01798-6. These means are primarily designed to handle a situation where the connection between the speech encoder and the speech decoder is near enough ideal in that only a small amount of bit or transmission error remains after channel decoding. However, since the connection is a radio channel, the received signal may contain some bit or transmission errors. In such a case, it may be necessary to modify the methods described in the above-mentioned Swedish patent applications.
An object of the present invention is a device and method in which errors are hidden in the received signal in order to make the speech decoding more robust or insensitive to transmission errors.
SUMMARY OF THE INVENTION
In accordance with the invention, this object is achieved by a device in a receiver of a frame-based radio communication system, which device is intended to hide transmission errors in a speech decoder caused by the communication channel, which speech decoders are of source filter type and controlled by means containing internal state variables which are up to date state variables. frame, for modifying received filter parameters representing background noise transmitted over the communication channel; which device is characterized by:
501 340
<td>(A)</td><td>means for detecting frames containing transmission errors;</td>
<td>(B)</td><td>means for determining whether a frame in which transmission errors have been detected is acceptable;</td>
<td>(C)</td><td>means for concealing the detected transmission errors by limiting the update of at least one of the internal state variables if the detected frame is declared unacceptable by the determining means.</td>
In accordance with 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 conceal transmission errors in a speech decoder caused by the communication channel, which speech encoder is a source filter type and includes means containing internal state variables which are updated for frame, in and for modification of received filter parameters representing background noise transmitted over the communication channel; which method is characterized by:
<td>(A)</td><td>detecting frames containing transmission errors;</td>
<td>(B)</td><td>determining whether a frame in which transmission errors were detected is acceptable;</td>
<td>(C)</td><td>hiding detected transmission errors by limiting the updating of at least one of the internal state variables if the detected frame is declared as unacceptable in the determination step. BRIEF DESCRIPTION OF THE DRAWINGS</td>
The invention and further objects and advantages thereof are best understood by reference to the following description and the accompanying drawing, which is a schematic block diagram of the relevant parts of a receiver in a radio communication system.
501 340 containing a device in accordance with the present invention.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
In order to understand the invention, it is expedient to briefly recapitulate the function of a typical digital cellular radio connection, typical error-following methods and also to recapitulate the algorithms according to the above 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, for example, BS Atal, V. Cuperman and A. Gersho, ed., Advances in Speech Coding, Kluwer Academic Publishers, 1991). This algorithm compresses the speech signal and transforms it into a number of quantized parameters (usually in a frame-based way). The resulting bits are then protected by additional redundant coding 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 multiple path dispersion can be compensated by different equalization methods, e.g. Viterbi equalization or decision feedback equalization (see for example the reference by JG Proakis above). The channel decoding (see, for example, the reference by GC Clark and JB Cain above) is then used to decode the bits that comprise the quantized parameters that the speech coder needs to reconstruct the transmitted speech signal. From the above discussion, it is obvious that interference on the transmission channel can affect the reconstructed speech signal, thereby reducing the quality of this signal.
Although channel coding / decoding methods can significantly reduce the sensitivity to interference, it is usually not enough to just apply channel coding to a digital cellular system. Instead, it is quite common to additionally
501 340 4 use so-called error-tracking methods to further mask the noticeable effects of bit errors remaining in the output of the speech decoder. These methods are all based on some type of information about the quality of the transmission channel, which information is available or estimated on the receiver side. If this information indicates that the quality of the transmission channel is poor, the error tracking methods initiate special measures in the speech decoder with the aim of reducing the negative effects of bit errors in the reconstructed speech signal. The degree of sophistication in the error tracking methods depends on the nature of the information about the quality of the transmission channel. Some ways to obtain such information will now be described.
Direct information on channel quality can be obtained by measuring the signal strength. A low value would indicate a low signal to noise ratio, which means channel quality can be expected to be poor. Channel coding methods offer an additional degree of sophistication. One method type is to use redundant channel coding, e.g. cyclic redundancy control (CRC) (see, for example, the reference by GC Clark and JB Cain above), especially if the code is used for error detection. Furthermore, soft (non-binary quantized) information can be obtained from the convolution decoder (in case a convolution code is used), the demodulator, the equalizer and / or the block code decoder (see for example the reference by JG Proakis above). One method that is often applied is to divide the bits of information from the speech encoder into different classes, each class using a different error correction / detection scheme, to indicate the significance of different bits (see, for example, TR-45 Full Rate Speech Codec Compatibility Standard PN-2972, Electronic Industries Association , 1990 (IS-54)). Parts of the information with error detection / correction codes applied can therefore be used as indicators of possible bit errors that occur in the speech frame.
Some methods for introducing concealment of errors in conventional speech decoders with the intention of masking frames that are considered to contain bit errors will now be briefly described. If a bad frame is detected, it is common to use the information from the previous accepted frame. Often this technique is combined with muting (reduction of the output level) in case the situation with
501 340 bad frames would remain under several frames (see eg TR-45 Full Rate Speech Codec Compatibility Standard PN-2972, Electronic Industries Association, 1990 (IS-54)). This situation is not unusual for mobile phone systems, where fading valleys can persist for fairly long periods of time if the mobile speed is low. The result of output level decreases is that interference is masked in the reconstructed signal. In particular, strong clicks are avoided. If more detailed information is available on the quality of each such received portion of the incoming bits, it becomes possible to follow up possible transmission errors to some of the speech encoder parameters. Since the parameters are a model of different phenomena in the speech, error-tracking methods can be developed which are optimized for the physical meaning of each particular parameter. A particular example of this is the so-called pitch gain parameter (see, for example, TB Minde et al, Techniques for low bit rate speech coding using long analysis frames, ICASSP, Minneapolis, USA, 1993). A value greater than one is sometimes required for this parameter during transient periods of speech. However, such a value corresponds to an unstable filter model, which means that it is somewhat risky to use such a value. In particular, it is appropriate to introduce error-tracking methods that limit the pitch gain parameter to values less than one if any bit error in this parameter is detected. Another example is the spectral filter model commonly used in modern speech coding algorithms (see, for example, the reference by TB Minde et al. Above). In this case, the error-tracking methods can be used to prevent the use of unstable filters if bit errors are indicated in the corresponding spectral information. The reverse is also relevant; if an unstable filter is detected, a poor frame may be indicated and error-tracking methods applied.
In view of this background information, the present invention will now be described with reference to Fig. 1. Fig. 1 shows the portions 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. and Viterbi
501 340 6 equalizer which converts the received and demodulated signal into one or more bit streams which are fed to a channel decoder 14. The demodulator 12 and the equalizer 13 also transmit soft information about the received bits or symbols to a decision means 16. The channel decoder 14 converts the bit stream into a filter parameter stream and an excitation parameter stream for speech decoding. Furthermore, the channel decoder 14 performs cyclic redundancy check decoding (CRC) on at least portions of each received frame. The result of these checks is led to the decision-making body 16.
The receiver also contains a speech detector 20 (also called voice activity detector or VAD (VAD = Voice Activity Detector)). The speech detector 20 determines from the filter and excitation parameters whether the received frame contains primarily background noise. The decision of the speech detector 20 is directed to a signal discriminator 22 which uses some of the excitation parameters to determine whether the received signals representing background noise are stationary or not. If a frame is declared as containing stationary background noise, the signal discriminator 22 controls a parameter modifier 24 for modifying the received filter parameters. This modification is described in detail in Swedish patent application 93 00290-5, which is hereby incorporated by reference. The stationarity detection in the signal discriminator 22 and the interaction between the speech detector 20, the signal discriminator 22 and the parameter modifier 24 are further described in detail in Swedish patent application 93 01798-6, which is 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 describe the error-following methods of the present invention, it is necessary to briefly describe the effect of bit errors on the so-called anti-swirling algorithms described in the two aforementioned 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
501 340
Activity Detection, Recommendation GSM 06.32, ETSI / GSM, 1991). This means that there are thresholds and corresponding states that are automatically updated internally in the voice activity detector, either by using a measured speech signal or, when used in the receiver as assumed here, decoded parameters from the channel decoder. If errors occur in the incoming parameters, this will cause the thresholds or internal state variables to not be updated properly, which may result in incorrect decisions. This would result in reduced quality of the reconstructed audio signal.
2nd The voice activity or speech detector 20 makes its decision regarding speech / background noise using incoming filter and excitation parameters as well as internally updated states, e.g. old incoming parameters and additional a priori information. Bit errors can therefore result in immediate wrong decisions in the receiver, resulting in reduced quality of the reconstructed audio signal. Since the current decision also depends on older incoming parameters, bit errors can also affect future decisions.
3rd The signal discriminator 22, which is part of the system in a preferred embodiment of the present invention, examines incoming statistical moments, preferably energy values describing 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 (the details are described in the above-mentioned Swedish patent application 93 01798-6). If there are faults in these incoming energies, these faults will also be stored in the buffers, causing incorrect decisions for a significant period of time. This would result in reduced quality of the reconstructed background audio signals.
4th Measures taken to counter the swirling of stationary background noise are affected in several ways if an incorrect decision caused by bit errors occurs. One effect is that speech is destroyed when a stationary background noise is incorrectly detected
501 340 and anti-swirling actions are started. The opposite wrong decision (speech when there is actually stationary background noise) can also occur, and therefore the nature of the background noise changes momentarily, which can be quite annoying. Repeated switching between decision indicating speech / stationary background sound is also undesirable, since time constants act during the transition between the two states. If excessive switching would occur due to bit errors, this would be very disruptive.
5th The actual anti-swirling measures in parameter modifier 24 (essentially spectral low-pass filtering in combination with bandwidth expansion, as explained in detail in the above-mentioned Swedish patent application 93 00290-5) suffer from bit errors. An effect occurs due to incorrect decisions made by the speech or voice activity detector 20 or from the signal discriminator 22. In these cases, the low-pass filter update can be started or turned off, causing a deviation from the perfect channel case. Another effect occurs when bit errors affect the spectral information that feeds the low-pass filters and the 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. Furthermore, the so-called spectral slope is very sensitive to how it is perceived, and since it can be manipulated by the anti-swirling algorithm, bit errors can give a significant quality reduction of the reconstructed speech signal.
7th The effects described above can be combined with each other and influence each other. E.g. For example, a wrong decision in the speech detector 20 may result in stopped updating of the buffers in the signal discriminator 22. This, in turn, will affect the signal discriminator 22 for a substantial period of time, resulting in reduced quality in the anti-swirling measures.
501 340
From the above discussion it can be seen that transmission errors can 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 present invention, these problems are reduced or eliminated by modifying the update process under frames in which transmission errors have been detected. This modified update will now be described in more detail.
Decision means 16 receives soft information regarding the reliability of bits from demodulator 12 and equalizer 13, and the results of CRC checks from channel decoder 14. Decision means 16 then determines whether bit errors have occurred or are probable (from that soft information). Furthermore, it is decided whether possible bit errors affect the filter or excitation parameters. If this is the case and if these bit errors occur in parameters that significantly affect the function of the speech detector 20, the signal discriminator 22 or the parameter modifier 24, a corresponding signal is fed to the concealer 18. be the case if the parameter corresponding to the frame energy contains one or more bit errors.
Depending on the parameter containing bit errors, the concealer 18 may control the operation of the update process of 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 if a bad frame is detected. This means that the internal detectors of the speech detector 20 are locked to the same values as in the previous frame, or that the updating of these state variables is limited (the state variables can only be updated in smaller steps than usual).
Another measure is to lock the decision in the speech detector 20 to the decision from the previous frame in case an unacceptable frame containing transmission errors is detected.
501 340
If an unacceptable frame containing transmission errors in excitation parameters relevant to stationarity decision has been detected, the updating of the buffers in the signal discriminator 22 may be stopped or restricted.
Another possibility is to lock the decision from the signal discriminator 22 to the decision from the previous frame.
If the received frame contains transmission errors in bits containing spectral information, 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.
The spectral slope of a possibly arranged mail filter can be locked to the slope in the previous frame.
Since different received parameters affect different blocks in Fig. 1 (speech detector 20, signal discriminator 22, parameter modifier 24 and any post filter) it will be appreciated that one or more of these measures can be taken, depending on where the bit error has been detected in the received frame.
It will also be appreciated in the above discussion that if transmission errors have occurred in a particular received parameter under consecutive frames, the corresponding internal state variable in the corresponding block of the receiver will be locked to (or substantially locked in) its value in the last received frame in which the corresponding parameter is received correctly.
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 appreciate that various modifications and changes can be made to the present invention without departing from its basic idea and framework, as defined by the appended claims.
501 340
APPENDIX [INHERIT ('spd $ def')]
MODULE vad_dtx_rx (input, output);
CONST
<td>nr_sub blocks =</td><td> 4;</td>
<td>nr_acf_lags_in</td><td> 10;</td>
<td>nr_acf_lags_used =</td><td> 8;</td>
<td>burstconst</td><td> 3;</td>
<td>hangconst =</td><td> 5;</td>
<td>frames avO</td><td> 4;</td>
WHERE
<td>adaptcount thvad</td><td>: [STATIC] INTEGER; {For threshold}: [STATIC] DOUBLE; {For threshold}</td>
<td>RVAD</td><td>: [STATIC] ARRAY [0..nracflagsused] OF REAL;</td>
<td>burst count</td><td>: [STATIC] INTEGER; {For overhang}</td>
<td>Hang count</td><td>: [STATIC] INTEGER; {For overhang}</td>
<td>n</td><td>: [STATIC] ARRAY [-1..nr sub blocks-1] OF INTEGER;</td>
<td>last dm:</td><td>: [STATIC] REAL; {For WHAT}</td>
<td>old_lag_count</td><td>: [STATIC] INTEGER;</td>
very_old_lag_count: [STATIC] INTEGER;
<td>thresh</td><td>: [STATIC] REAL;</td>
<td>L thresh</td><td>: [STATIC] INTEGER;</td>
<td>Nthresh</td><td>: [STATIC] INTEGER;</td>
<td>acf_old, AVO</td><td>: [STATIC] ARRAY [-framesavO..0, 0., nr_acf_lags_used] OF REAL;</td>
<td>aavl, RAVL, AVL</td><td>: [STATIC] ARRAY [0..nr_acf_lags_used] OF REAL;</td>
<td>elapsed frames sp_hangover</td><td>: [STATIC] INTEGER; : [STATIC] INTEGER;</td>
501 340 speechdtx: [STATIC] BOOLEAN;
coil: [STATIC] BOOLEAN;
PROCEDURE scurvy (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: BOOLEAN); EXTERNAL;
PROCEDURE Flstat_det_rx_init; 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;
FOR i: = 3 TO nr_acf_lags_used DO BEGIN rvad [i]: = 0;
END;
501 340 {end threshold}
{what} 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_avO TO -1 DO BEGIN FOR j: = 0 TO nr_acf_lags_used DO BEGIN acf_old [i, j]: = 0; av0 [i, j]: = 0;
END;
END;
{end vad} elapsed_frames: = 24;
sp_hangover: = 0; speech_dtx: = TRUE; sp_old: = TRUE; Flstatdetrxinit;
END; {init_vad_dtx}
PROCEDURE vad_thresh (
<td>acfO: REAL;</td><td></td><td>Input}</td>
<td>ravl: ARRAY [A1..A2:</td><td>Integer]</td><td></td>
<td>OF REAL;</td><td></td><td>Input}</td>
<td>State: BOOLEAN;</td><td> <</td><td>Input}</td>
<td>ptch: BOOLEAN;</td><td> <</td><td>Input}</td>
<td>pvad: DOUBLE</td><td></td><td>Output}</td>
);
501 340 {Common variables used: (all output) adaptcount initially set to thvad initially set to 1000000 rvad initially set to rvad [0]:
rvad [l]: -4 rvad [2]: 1 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
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 (
501 340 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 FLvad_rx_l (acfin: realACFType; {Input} ltp_lags: integer sub framework type; {Input} WHAT: BOOLEAN); {Output} {Common variables used:
n [-l..3] oldlagcount veryoldlagcount thvad ltp_lags Input / Output Input / Output Input / Output threshold}
Var ptch, wad, stat lag_count, smallag, i, j, k: BOOLEAN;
: INTEGER;
501 340 acfO,
<td>dm, difference</td><td>: REAL;</td>
<td>pWhat</td><td>: DOUBLE;</td>
<td>rc</td><td>: ARRAY [1..nr_acf_lags_used] OF REAL;</td>
BEGIN n [-l]: = n [3];
FOR i: = 0 TO 3 DO START n [i]: = ltp_lags [ij;
END;
FOR i: = -frames_avO 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 nracflagsused DO BEGIN acf_old [0, k]: = acfinfkj;
END;
{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_av0-l DO START
501 340 avO [O, k]: = avO [O, k] + acf_old [-j, k];
END;
breeding [k]: = avO [-frames_avO, k];
END;
{Solve the equations system} scurvy (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 [i]: = 0;
FOR k: = 0 TO nr_acf_lags_used-i DO BEGIN ravl [i]: = 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;
difference: = dm - last_dm;
stat: = ABS (difference) <thresh;
lastdm: = dm;
ptch: = ((old_lag_count + very_old_lag_count)> = nthresh); acfO: = acfinfOJ;
what thresh (acf0, ravl, state, ptch, pvad);
wad: = (pvad> thvad);
IF wad THEN BEGIN burstcount: = burstcount + 1;
END ELSE BEGIN burstcount: = 0;
END;
501 340
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 [j-1]);
IF MIN (smallag, MIN (n [j], n [jl]) - smallag) <lthresh THEN BEGIN lag_count: = lag_count + 1;
END;
END;
END;
very_old_lag_count: = old_lag_count; old_lag_count: = lag_count;
END;
PROCEDURE FLdtx_hand_rx_l (what: BOOLEAN; {Input}
Var sp: BOOLEAN); {Output}
BEGIN
IF elapsed_frames <24 THEN BEGIN elapsedframes: = elapsedframes + 1;
END;
501 340
IF speech_dtx THEN BEGIN
IF what THEN BEGIN sp: = TRUE;
END ELSE BEGIN sp_hangover: = 1;
IF elapsedframes = 23 THEN BEGIN 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 START 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 {acfin: realACFType;
ltplags: integer subframe type; FlbadQuality: BOOLEAN;
{Input} {Input} {Input}
501 340
Var sp: BOOLEAN);
{Output}
WHAT WHAT: BOOLEAN; spl: BOOLEAN;
BEGIN
IF NOT FLbadQuality THEN 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 use_stat_det THEN BEGIN sp: = spl;
END;
sp_old: = sp;
END ELSE BEGIN sp: = spold;
END;
END;
END.
[INHERIT ('spdSdef')]
MODULE as_actions_rx (input, output);
{Global (for the module) variables}
WHERE
FLfilter_filter_state FLfilter_filter_coeff FLfilter_filter_gain FLfi1ter_post_state FLfilter_post_coeff FLfilter_post_gain FLfilter_my_state [STATIC] realArraylOType;
<td>[STATIC]</td><td>REAL;</td>
<td>[STATIC]</td><td>REAL;</td>
<td>[STATIC]</td><td>realArray1OType;</td>
<td>[STATIC]</td><td>REAL;</td>
<td>[STATIC]</td><td>REAL;</td>
<td>[STATIC]</td><td>REAL;</td>
501 340
FLfi1terjnycoeff FL f i1ter_my_gain
FLexpand_f actor first_sp {External routines} [STATIC] [STATIC] [STATIC] [STATIC]
REAL;
REAL;
REAL; BOOLEAN;
PROCEDURE stepdn_unstable_special_pas (a: realArraylOType; VAR rc: RealArraylOType; VAR unstable: BOOLEAN);
Input}
Output}
Output}
EXTERNAL;
PROCEDURE stepdn_special_pas (a: realArraylOType;
: RealArraylOType);
VAR rc
Input}
Output}
EXTERNAL;
PROCEDURE FLpostCoeffCalculation (
ZFLacfW
VAR ZFLetaCurr
EXTERNAL;
: realACFType;
: realArraylOType
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. }
501 340
WAS m: INTEGER;
{NOTE FLbwexp is transferred as COMMON}
BEGIN
FOR m: = 1 TO nrCoeff DO START
FLfilter_filter_state [m]: = 0; FLfilter_post_state [m]: = 0;
END;
FLfilter_my_state: = 0; first_sp: = TRUE;
{The following could be placed in ROM}
FLfilter_filter_coeff: = EXP (-1.0 / (4.0 * 50.0)); FLfilter_my_coeff: = EXP (-1.0 / (0.25 * 50.0)); FLfilter_post_coeff: = FLfilter_my_coeff;
FLfilterfilter_gain: = 1 - FLfilter_filter_coeff; FLfilter_post_gain: = 1 - FLfilter_post_coeff;
FLfilter_my_gain: = 1 - FLfilter_my_coeff;
IF FLbwexp> = 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:', FLfilterfiltergain); WRITELN ('FLfilter_my_coeff:', FLfilter_my_coeff);
WRITELN ('FLfilter_my_gain:', FLfilter_my_gain); WRITELN ('FLfilter_post_coeff:', FLfilter_post_coeff);
<sup>501 340</sup>
WRITELN ('FLfilter_post_gain:', FLfilter_post_gain);
WRITELN ('FLbw_exp:', FLbwexp);
WRITELN ('FLexpand_factor:', FLexpandfactor);
WRITELN ('FLv_post:', FLv_post);
{ ### }
END;
[GLOBAL]
<td>PROCEDURE</td><td colspan="5">FLas_actions_rx (</td>
<td></td><td>sp</td><td>: BOOLEAN;</td><td> {</td><td>In</td><td> }</td>
<td></td><td>FLa in</td><td>: realArraylOType;</td><td> {</td><td>In</td><td> }</td>
<td></td><td>FLrc_in</td><td>: realArraylOType;</td><td></td><td>In</td><td> }</td>
<td></td><td>FLbadQuality</td><td>: BOOLEAN;</td><td></td><td>In</td><td> }</td>
<td>WHERE</td><td>FLapres</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>FLapostpres</td><td>: realArraylOType;</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>
WAS m: INTEGER;
<td>FLdum</td><td>: REAL;</td>
<td>FLRC_temp:</td><td>: realArraylOType;</td>
unstable: BOOLEAN;
<td>FLacfw</td><td>: realACFType;</td>
<td>i_ab</td><td>: INTEGER; {###}</td>
<td>etatemp:</td><td>realArraylOType; {###}</td>
BEGIN
FOR m: = 1 TO nrCoeff DO START
FLa_post_pres [m]: = FLa_in [m] * FLnyweight [m];
END;
501 340
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]; FLrc_pres [m]: = FLrc_in [m];
END;
IF firstsp THEN BEGIN FLdum: = FLexpandfactor;
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 FLbadQuality THEN BEGIN FLfiltermystate: = FLfilter_my_coeff * FLfilter_my_state + FLfilter_my_gain * FLmy_off;
END;
FLmy_use: = FLfilter_my_state;
FLdum: = FLexpandfactor;
FOR m: = 1 TO nrCoeff DO START
IF NOT FLbadQuality THEN BEGIN
FLfilter_filter_state [m]: =
501 340
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 +
FLfilter_post_gain * FLa_post_pres [m] * FLdum;
END;
FLa_pres [m]: = FLfilter_filter_state [m];
FLapostpres [m]: = FLfilter_post_state [m];
FLdum: = FLdum * FLexpandfactor;
END;
{Check for stability} stepdn_unstable_special_pas (
<td>FLapres,</td><td></td><td>In</td>
<td>FLRCpres,</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}
501 340 unstable); {Out}
IF unstable THEN BEGIN
WRITELN ('Unstable post_fliter (as_actions_rx)');
FLdum: = FLexpandfactor;
FOR m: = 1 TO nrCoeff DO START
FLa_post_pres [m]: = FLa_in [m] *
FLnyweight [m] * Fldum; FLdum: = FLdum * FLexpand_factor;
END;
END;
FLcalculateACF (
FLapostpress, FLACFw);
{Flcalculateautocorrfunction (
FLa_pres,
FLACFw);}
FLpostCoeffCalculation (
FLACFw,
FLetaCurr);
END;
first_sp: = (sp AND firstsp);
END;
END.
501 340
Contents80
2 sheets
Sheet 1 Sheet 2
103 members in 21 offices
Priority claims2
| Document | Office | Kind | Date |
|---|---|---|---|
| 9302025 | Sweden | A | |
| SE19930002025 | – | – | – |
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 | |
| SE501340C2This record | 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 | |
| SE503547C2 | 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
- 501340
- Publication, EPODOC
- SE501340
- Application
- 9302025
- Application, DOCDB
- 9302025
- Application, EPODOC
- SE19930002025
Titles2
- Swedish
- Döljande av transmissionsfel i en talavkodare
- English
- Hiding transmission errors in a speech decoder
Classification
- CPC, 3
- G10L19/005
- G10L25/78
- H04L1/0061
- IPC, 5
- G10L19 005
- G10L25 78
- G10L13 00
- H04B1 10
- H04L1 00