AN ADAPTIVE FILTER FOR SIGNAL PROCESSING AND METHOD THEREFOR

Abstract: This invention is a component of an adaptive filter signal processor whose purpose is to separate a mixture of signals received by each of a plurality of transducers. This invention estimates the relative propagation delays among the transducers for each source. First, it randomly generates a fixed number of sets of delay parameters (220), called a population (230). Each set is processed by an instananeous-performance calculator (240), to generate an instantaneous-performance value which is added to a cumulative performance value (360). The set with the greatest cumulative performance value is transferred to the adaptive filter signal processor. New parameter sets are generated at random. Whenever a parameter set is found whose instantaneous performance value exceeds that of the set in the population with the least instantaneous performance value, it is incorporated into the population. The set with the least cumulative performance value is deleted from the population.

Description: An Adaptive Filter for Signal Processing and Method Therefor This application is submitted with a microfiche appendix, containing copyrighted material, Copyright 1994, Interval Research Corporation The Appendix consists of one (1 ) microfiche with forty- six (46) frames The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever in the appendices Technical Field This invention relates to the field of adaptive filter signal processing, and more particularly to an adaptive filter signal processor for use in a two stage microphone-array signal processor for separating sounds acoustically mixed in the presence of echoes and reverberations More particularly, the present invention relates to an improved Direction of Arrival Estimator that estimates the optimal delay values for use in the direct signal separator, I e , the first stage in the two-stage signal processor Background of the invention It is well known that a human being can focus attention on a single source of sound even in an environment that contains many such sources This phenomenon is often called the "cocktail-party effect " Considerable effort has been devoted in the prior art to solve the cocktail -party effect, both in physical devices and in computational simulations of such devices In a co-pending application we have disclosed a two stage microphone-array signal processor in which a first stage partially accomplishes the intended aim using information about the physical directions from which signals are arriving However, that application discloses the use of a conventional direction of arrival estimator to estimate the various delays in the acoustic waves, used in the first stage to produce the signals This application discloses an improved direction-of-arrival estimator Estimation of signal parameters is pivotal in such a processor as well as a variety of signal- processing applications, such as source separation and source localization Examples of signal parameters are the differences in propagation delays from a given source to the various sensors, and the direction from which a given source signal is arriving One prior art solution to the problem of signal-parameter estimation is to use directional sensors either a collection of such sensors can be mounted so as to tessellate the set of directions of interest, or a single such sensor can be used to scan the possible directions In either case, the strategy is to identify directions from which maximum signal power is detected Another prior art is to scan with a directional sensor employing classical beamforming Signals from a collection of sensors at different spatial locations are averaged together, after being subjected to relative delays and subsequent addition such that waves arriving from a particular "look direction" are enhanced relative to waves arriving from other directions Thus, the beamformer behaves as a directional sensor whose direction of maximum sensitivity can be changed without physically reconfiguring the sensors Flanagan et al (1985) described a system in which speakers in an auditorium are located by a beamformer that continuously scans the auditorium floor There are at least two fundamental shortcomings of this approach First, the rate at which a new source can be located and tracked is limited by the rate at which the space of possible directions can be swept, that rate depends, in turn, on the length of time required to obtain a reasonably accurate estimate of the signal power being received from a particular direction Second, resolution is fundamentally limited since the signal averaging done by a classical beamformer cannot provide relative attenuation of frequency components whose wavelengths are larger than the array For example, a microphone array one foot wide cannot attenuate frequency components in a sound that are below approximately 1 kHz Other prior an to increase the speed of source localization is achieved by a strategy that involves, in essence, shifting signals from two or more sensors in time to achieve a best match A simple version of this principle is applied in a commercial device called the Direction Finding Blast Gauge (DFBG). developed by G Edwards of GD Associates ( 1994) Designed to determine the direction from which short explosive sounds arrive, the DFBG records the times at which a shock wave traverses four symmetrically placed pressure sensors Direction of arrival is calculated from these times in conventional manner The DFBG is designed for short explosive sounds that are relatively isolated The same principle used in the DFBG has been applied in a more refined way to other types of sound Coker and Fischell ( 1986) patented a system that localizes signals from speech, which consists approximately of a train of energy bursts Sugie et al ( 1988), aneda (1993), and Bhadkamkar and Fowler (1993) implemented systems that exploit the tendency of naturally occurring sounds to have fairly well-defined onsets associated with each microphone is a detector that produces a spike whenever an onset occurs All of the systems mentioned in this paragraph operate by finding inter-microphone time delays that maximize the rate at which coincident spikes are detected They compensate for noise in the individual time-delay estimates by generating joint estimates from multiple measurements When many sources of sound are present, these statistical estimates are derived by histogram methods Thus, the accuracy of the method depends on an assumption that over the time scale on which the individual time- delay estimates are made, the spike trains come predominantly from one source In a similar vein, noisy time-delay estimates can be obtained from narrowband signals by comparing their complex phases, provided that the magnitudes of the delays are known in advance not to exceed the period of the center frequency Joint estimates can be produced, as above, by histogram methods The front end of a system described by Moπta (1991 ) employs a scheme of this type The approaches to sound localization employed by Edwards ( 1994), by Coker and Fischell (1986), by Sugie et al (1988), by Kaneda (1993), by Bhadkamkar and Fowler ( 1993) and by Moπta (1991) accommodate multiple so w es by exploiting an assumption that in most time intervals over which individual time-delay estimates are made, signal from only one source is present The techniques to which we now turn our attention, like the present invention, differ from these in two ways First, they do not rely on the assumption that at most one source is present per measurement interval. Second, they are designed for a more general domain of signal-parameter estimation, in which time-delay estimation is only one example The so-called "signal-subspace" techniques, as exemplified by ESPRIT (Roy et al , 1988) and its predecessor, MUSIC (Schmidt, 1981 ), are specific for narrowband signals The collection of n sensor signals is treated as a 2n-dιmensιonal vector that varies in time From prior knowledge of the array configuration, it is known what dimensions of this 2n-dιmensιonal signal space would be accessible to the signal vector arising from a single source, as a function of the desired signal parameters Moreover, by diagonalizing the covariance matrix of the observed signal vector and by inspecting the resulting eigenvalues and eigenvectors, it is known what dimensions of the signal space are actually spanned by the signal vector Estimates for the desired signal parameters are extracted by comparing these two pieces of information This prior art requires the source signals not be fully correlated, otherwise, the observed covariance matrix contains insufficient information to extract the signal parameters The shortcomings of this prior art relative to the present invention are (a) that it is intensive, (b) that the sensor-array configuration must be partially known, and (c) that the number of sensors far exceed the number of sources (otherwise, the signal vector can span all available dimensions) Another prior art is based on an assumption that source signals are statistically independent The condition of statistical independence is much more stringent than that of decorrelation whereas two signals x(t) and y(t) are decorrelated if E{[x(t)y(t)]} = E{x(t)}E{y(t)}, they are statistically independent only if E{f[x(t)]g[y(t)]} = E{f[x(t)]}E{g[y(t)]} for any scalar functions f and g (The notation E{ « } denotes an estimate of the expected value of the enclosed expression, as computed by a time average ) In return for requiring the more stringent conditions on the nature of the source signals, statistical- independence techniques do not always require prior knowledge of the array configuration (For example, if the signal parameters to be estimated are the relative propagation delays from the sources to the sensors, nothing need be known about the array geometry, however, mter-sensor distances are obviously needed if the relative time delays are to be translated into physical directions of arrival ) Moreover these techniques accomplish the more difficult goal of source separation, i e , recovery of the original source signals from the observed mixtures, signal-parameter estimation is normally a by¬ product Like signal-subspace techniques, some statistical-independence techniques begin by diagonahzing the covariance matrix because doing so decorrelates the components of the signal vector However. the are distinct because they use the results of diagonalization in different ways Critical to understanding the distinction is that neither parameter estimation nor source separation can be achieved merely by diagonahzing the covariance matrix (Cardoso, 1989, Lacoume and Ruiz, 1992, Mouhnes and Cardoso, 1992) Whereas the signal-subspace techniques fill in the missing information by employing knowledge of the sensor-array configuration, the statistical-independence techniques do so by applying additional conditions based on the sensor-signal statistics alone Statistical-independence techniques can be summarized as follows The source signals are treated as a signal vector, as are the sensor signals The processes by which the source signals propagate to the sensors are modeled as a transformation H from the source signal vector to the sensor signal vector This transformation can consist of a combination of additions, multiplications, time delays, and convolutive filters If the transformation H were known, then its inverse (or pseudoin verse) could be computed, and applied to the sensor signal vector to recover the original sources However, since the source locations relative to the sensor array are not known, the inverse transformation must be estimated This is done by finding a transformation S that, when applied to the sensor signal vector, produces an output signal vector whose components are statistically independent Statistical-independence techniques are relevant in the present context inasmuch as signal parameters can often be estimated from S Most existing statistical-independence techniques that are adaptive, i e , able to alter S in response to changes in the mixing transformation H, operates by maintaining a single estimate of S As new data from the signal stream become available, they are incoφorated by updating the estimate of S These are referred to as "single-estimate" techniques because memory of past data is contained, at any given instant in a single estimate of S The chief goal of this invention is to remove a dilemma, common to single-estimate techniques that arises from the presence of two opposing factors in the selection of time constants for adaptation On one hand, the mixing transformation H can undergo large, abrupt, sporadic changes, the abruptness of these changes calls for short time constants so that the system can adapt quickly On the other hand, the source signals can be such that they are statistically independent only over relatively long time scales when averaging is performed over shorter time scales, statistical error and coincidental correlation imply deviations from true statistical independence To obtain accurate estimates of S from such data, it would seem necessary to employ long time scales Previous adaptive techniques for parameter estimation based on statistical independence are now reviewed In each case it is shown why the given technique can be considered a single-estimate procedure In one class of single-estimate techniques, the following steps are executed periodically Joint statistics of the signal vector are averaged over a set of times defined relative to the current time, with inverse time constant β A value of S. called S\ is chosen such that it enforces certain conditions of statistical independence exactly over the averaging time The estimate of S used to generate the separated outputs of the system may be S' itself, but more commonly it is a smoothed version of S\ with smoothing parameter μ A well-known technique in this class is Fourth Order Blind Identification (FOB1), in which S' is computed by simultaneously diagonahzing the covariance and quadπcovariance matrices, thus satisfying conditions of the form E{x(t)y(t)}=0 and E{x J (t)y(t)+x(t)y J (t)}=0 (Cardoso, 1989, Lacoume and Ruiz, 1992) Since x(t) and y(t) are assumed to have zero mean, the two equations are necessary conditions for statistical independence Another class of techniques, whose genesis is attributed to Herault and Jutten (1986), is closely related to the LMS algorithm (Widrow, 1970) S is taken to be a matrix of simple gains, thus, it is assumed that each source signal arrives at every microphone simultaneously The quantity ΔS is computed at every time step, based on the instantaneous value of the output vector y=Sλ ΔS = f[y,(t)] g[ yj (t)], where f and g are different odd nonlinear functions The estimate S is updated at every time step, according to the rule S(new) = S(old) + μ ΔS We will refer to the use of rules of this type as "weight-update" techniques This technique works because when the components of the output-signal vector x are statistically independent, the statistical relation uctuates a out a xe point an g were ot inear, t en t e erau t- utten tec nique decorrelate the outputs, and decorrelation is insufficient for statistical independence ) A host of other weight-update techniques have been derived from Herault and Jutten (1986) Some variants employ a different criterion for separation in which y (t) is decorrelated with y.(t-Tι ) and with y .(t-^), where T j and T^ are different time delays, determined in advance (Tong et al , 1991 , Abed- Meraim et al , 1994, Van Gerven and Van Compernolle, 1994, Molgedey and Schuster, 1994) Other variants of Herault-Jutten employ a transformation S whose elements are time delays (Platt and Faggin, 1992, Bar-Ness, 1993) or convolutive filters (Jutten et al , 1992, Van Compernolle and Van Gerven 1992) By going beyond the simple gains employed by Herault and Jutten, these techniques come closer to separating signals that have been mixed in the presence of propagation delay and echoes Certain difficulties in adaptation associated with the use of convolutive filters are addressed by a recent class of two-stage structures (Dm? and Bar-Ness, 1993, Naiar et al , 1994) in which a second weight-update stage is placed before or after the first, to improve the quality of separation attained after convergence Single-estimate techniques for adaptive source separation all suffer to some extent from the dilemma described above that the rate of adaptation cannot be increased without simultaneously increasing the size of fluctuations present even after convergence is reached In some practical applications, there exist settings of μ for which both the rate of adaptation and the size of the fluctuations are acceptable, in others, there is a pressing need for techniques in which adaptation and fluctuation are not intrinsically co-dependent To accomplish this end, the present invention is founded in a break from the tradition of maintaining a single estimate of S and incorporating new data by changing the value of S Rather, multiple estimates of S, called hypotheses, are maintained Associated with each hypothesis is a number called the cumulative performance value In contrast with single-estimate techniques, which incorporate new data by perturbing the estimate of S, the present technique incorporates new data by perturbing the cumulative performance values Thus, each hypothesis remains unchanged from the time it is created to the time that it is destroyed At any given instant, the hypothesis of greatest cumulative performance value is taken to be the correct one Optionally, smoothing may be employed to avoid discontinuous changes in S, however, this smoothing is not an intrinsic part of the adaptive process Until this point we have discussed related art for achieving sound separation, which is one particular application of adaptive filtering However, the present invention is contemplated to have potential uses in other applications of adaptive filtering We now therefore turn our attention to related art in the broader field of adaptive filtering Compared to any given variant of the standard techniques, the present invention is superior in at least one of the following ways • There is essentially no restriction on the form of the performance function, although from a practical standpoint certain performance functions can be computationally intensive to handle • Once convergence is achieved, it does not necessarily exhibit fluctuations in proportion to the rate of adaptation • It does not necessarily fail when the performance function is underdetermined These attractive properties of the present invention will be explained in the context of the standard techniques We first describe stochastic-gradient (SG) techniques and explain the shortcoming of SG techniques that the present invention is intended to avoid We describe how least squares (LS) techniques overcome this limitation, and state why LS techniques cannot always be used We identify a source of difficulty in adaptive filtering that we call instantaneous underdetermination, and explain why the present invention is superior to SG and LS with respect to its handling of instantaneous underdetermination We then turn discuss a less standard, but published technique based on the genetic algorithm (GA) We state why the GA might be considered prior art, then differentiate the present invention from it Problems in adaptive filtering can generally be described as follows One or more time-varying input signals x ( (t) are fed into a filter structure H with adjustable coefficients h^, I e , H=H(h, ,li2, ) Output signals y ( (t) emerge from the filter structure For example, an adaptive filter with one input x(t) and one output y(t) in which H is a linear, causal FIR might take the form N y(t) = Σ h k x(t-kΔt) k=0 K In general, H might be a much more complicated filter structure with feedback, cascades, parallel elements, nonlinear operations, and so forth The object is to adjust the unknowns h^ such that a performance function C(t) is maximized over time The performance function is usually a function of statistics computed over recent values of the outputs y^t), but in general, it may also depend on the input signals, the filter coefficients, or other quantities such as parameter settings supplied exogenously by a human user The most basic SG technique, Least Mean Square (LMS), can be used for instances of this problem in which the gradient of the performance function C(t) with respect to the filter coefficients h^t) can be expressed as a time average of some quantities G (t) The Herault-Jutten algorithm for sound separation described previously, may be regarded as an example of LMS For example, consider the transmission-line echo-cancellation problem typical in the design of full-duplex modems y(t) = x, (t) i ∑ h Y,. x-,(t-kΔt) C(t) E[y 2 ( ] Differentiating C with respect to the filter coefficients h we have (δ/Sh,) C = E[2 y(t) x 2 (t-ιΔt)] = E[G 1, where G,(t) = 2 y(t) x 2 (t-ιΔt) The LMS algorithm calls for updating the coefficients h as follows h,(new) = h,(old) + μ G,(t), where μ is a stepsize that is chosen in advance It may be seen that when the coefficients h are near a local maximum of C, l e , the gradient of C is zero and the Hessian matrix of C is negative definite, then E[G,] = 0 and the coefficients fluctuate about that maximum Thus, unlike the present invention, SG techniques require that the performance function be differentiate, and that the gradient be numerically easy to compute In addition, SG techniques suffer from a key problem for any nonzero stepsize μ, the coefficients fluctuate Stated more generally, two important performance criteria - the rate of adaptation and the steady-state error in the outputs - are at odds with each other in the setting of μ Numerous solutions to this dilemma have been proposed • In block-based variants of LMS, updates to the filter coefficients are accumulated over blocks of time and added to the coefficients at the end of each block, instead of being added at every time step • In adaptive-stepsize LMS, the quantity μ is adjusted according to a predefined schedule ("gearshiftmg") or is itself adapted as a parameter of the system using an algorithm similar to LMS ("gradient adaptive step size") These incremental modifications to the LMS algorithm mitigate, but do not eliminate the problem of fluctuation This problem cannot be eliminated fully without abandoning the principle of operation behind LMS and its variants that only the time-averaged fluctuation E[μG (not the individual update, μG j ) is zero when the filter is fully adapted The stochastic fluctuations just described are absent in the so-called Least Squares (LS) techniques of which Recursive Least Squares (RLS) is the archetype The operations performed by RLS are mathematically equivalent to maximize C(t) exactly at every time step thus, in RLS, the computed filter coefficients converge asymptotically to their correct values as fast as the statistics estimated in the computation of C(t) converge Maximizing C(t) exactly at every step would be computationally prohibitive if done by brute force at every time step, because C(t) is a functional that depends on integrals of the data from the beginning of time In RLS, a practical level of efficiency is achieved by a mathematical trick that permits the exact maximum of C(t) for the current time step to be computed from the exact maximum computed at a previous time step and the intervening data An LS technique is often the method of choice when a problem can be formulated appropriately However, because of reliance on "mathematical tricks" to maximize C(t) exactly and efficiently at every time step, LS techniques have been developed only for certain restricted classes of adaptive-filtering problems • H is a FIR filter and C(t)= Σ a(n)b[y(t-nΔt)-d(t-nΔt)] k=0 where d(t) is a desired signal, a(») is one of a handful of averaging functionals that can be computed recursively, and b[»] is typically •", • H is a lattice filter and C(t) is as above, • H is a filter with a systolic architecture and C(t) is as above, • H is an IIR filter and C(t) is in "equation-error" form In contrast, the present invention requires neither a closed-form solution for the maximum of C(t) nor an efficient update scheme for computing the current maximum of C(t) from a past maximum and the intervening data Thus, the present invention may be considered an alternative to LS and the SG methods for situations in which the latter do not work well enough and the former do not exist In addition to the comparisons made so far, differences between LS, SG, and this invention arise in the handling of instantaneous underdetermination For the present purposes, we use the term "instantaneously underdetermined" to describe a performance function for which global maximization at any particular instant does not necessarily produce the desired filter coefficients— the "correct" filter coefficients might not be the only ones that produce a maximal or numerically near-maximal value of the performance function Such degeneracy can occur when the locus of global maximal of the performance function is delocalized, or when the basin of attraction is of sufficiently low curvature in one or more dimensions that noise and numerical imprecision can cause the apparent maximum to move far from the ideal location When a performance function is instantaneously underdetermined, snapshots of the performance surface from many different instants in time may together contain enough information to determine a solution LS methods operate by attempting to find the maximum of C(t) at every instant in time, effectivel) by solving a system of linear equations Underdetermination is manifested as ill-conditioning or rank deficiency of the coefficient matrix The solution returned by such an ill-conditioned system of linear equations is very sensitive to noise The behavior of SG methods and of the present invention with respect to instantaneous underdetermination is more difficult to analyze since both systems involve the accumulation of small changes over time To simplify the comparison, note that the present invention can use a standard SG technique or any other method for adaptive filtering as a source of guesses at the correct filter coefficients Thus, such a combination can always find the correct (or nearly correct) filter coefficients if the SG technique alone can find them The two methods differ in what happens after such coefficients are found In the case of SG, fluctuations can eventually cause the coefficients h ( (t) to drive far from their correct values because with instantaneous underdetermination, the update vectors mu G ( (t) can point away from the correct values (Cohen, 1991) In the case combining SG with the present invention, if a set of correct filter coefficients ever appears in the population of candidate parameter sets, the invention as a whole will use those coefficients without fluctuation We turn our attention in the remainder of this section to published work in adaptive filtering based on the genetic algorithm (GA) R Nambiar, C K Tang, and P Mars, "Genetic and Learning Automata Algorithms for Adaptive Digital Filters," ICASSP '92, IV 41 -44 (1992) S J Flockton and M S White, "Pole-Zero System Identification Using Genetic Algorithms," Fifth International Conference on Genetic Algorithms, 531 -535 (1993) S C Ng, C Y Chung, S H Leung, and Andrew Luk, "Fast Convergent Search for Adaptive IIR Filtering," ICASSP '94, 1 1 1 1 05-108 (1994) These applications of the GA to adaptive filtering are similar in form to the present invention because the GA employs a population of candidate solutions The works of Calloway ( 1991 ), Etter and Dayton ( 1983), Etter et al ( 1982), Eisenham er et al (1993), Flockton and White (1993), Michielssen et al (1992), Suckley (1992), and Xu and Daley ( 1992) are the easiest to eliminate from consideration as prior art because the problems under consideration did not require adaptation the object was to adjust unknown filter coefficients such that the frozen performance function C(t) is maximized at a single instant in time Thus the design of these GAs does not take into account any of the difficulties associated with maximizing a time-varying performance function consistently over time The remaining known applications of the GA to signal processing are examples of adaptive filtering in the sense that they do accommodate time variation of the performance function These are Nambiar et al (1992), Nambiar and Mars ( 1992), Ng et al (1994), Patiakin ( 1993) and Stearns et al ( 1982) In even case, however, the only way that time variation is taken into account is via what might be called the "headstart" principle Rather than attempt to find the optimum of C(t) independently for every time t these methods use the population of solutions from a time in the recent past as an initial guess at the solution for the current time In some cases, rounds of gradient descent are interleaved with short runs of the GA, but the principle is the same All of these GAs operate with the goal of finding the global optimum of C(t) for every time t These GAs do not solve the fundamental problem that a snapshot of the performance function at any given time contains noise When the performance function fluctuates, so do the optimized filter parameters One way to make each snapshot more reliable, and therefore make the optimized filter parameters fluctuate less, is to lengthen the time windows of the averages used to compute the performance function Another way is to smooth the optimized filter parameters in time Both approaches make the system slow to react to changes Moreover, the fluctuations and sensitivity to noise mentioned in this paragraph are exacerbated if the performance function is underdetermined It is desirable to develop a method for adaptive filtering that applies even when the performance function cannot be maximized analytically or differentiated, that does not exhibit fluctuations in proportion to the rate of adaptation, and that copes well with noise and underdetermination Summary of The Invention The present invention is a method and an apparatus for determining a set of a plurality of parameter values for use in an adaptive filter signal processor to process a plurality of signals to generate a plurality of processed signals The method stores a plurality of the sets, called a population The population is initially generated at random Each set is evaluated according to an instantaneous performance value The instantaneous performance value of each set is added, at each clock cycle, to a cumulative performance value At any given time, the set with the greatest cumulative performance value is used in the adaptive filter signal processor Periodically, a new parameter set is generated at random for possible incoφoration into the population If the instantaneous performance value of the new parameter set exceeds the least instantaneous performance value in the population, it is incoφorated into the population The set with the least cumulative performance value is deleted from the population, and the new parameter set is assigned an initial cumulative performance value that falls short of the greatest cumulative performance value by a fixed amount Brief Description of The Drawings Figure 1 is a schematic block diagram of an embodiment of an acoustic signal processor, using two microphones, with which the adaptive filter signal processor of the present invention may be used Figure 2 is a schematic block diagram of an embodiment of the direct-signal separator portion, l e . the first stage of the processor shown in Figure 1 Figure 3 is a schematic block diagram of an embodiment of the crosstalk remover portion, I e , the second stage of the processor shown in Figure 1 Figure 4 is a schematic block diagram of an embodiment of a direct-signal separator suitable for use with an acoustic signal processor employing three microphones Figure 5 is a schematic block diagram of an embodiment of a crosstalk remover suitable for use with an acoustic signal processor employing three microphones Figure 6 is an overview of the delay in the acoustic waves arriving at the direct signal separator portion of the signal processor of Figure 1 , and showing the separation of the signals Figure 7 is an overview of a portion of the crosstalk remover of the signal processor of Figure 1 showing the removal of the crosstalk from one of the signal channels Figure 8 is a schematic block level diagram of an embodiment of the DOA estimator of the present invention for use in the acoustic signal processor of Figure 1 Detailed Description of The Invention The present invention is an embodiment of a direction of arrival estimator portion of an adaptive filter signal processor, and the adaptive filter signal processor, which may be used in a device that mimics the cocktail-party effect using a plurality of microphones with as many output audio channels, and a signal-processing module When situated in a complicated acoustic environment that contains multiple audio sources with arbitrary spectral characteristics, the processor as a whole supplies output audio signals, each of which contains sound from at most one of the original sources These separated audio signals can be used in a variety of applications, such as hearing aids or voice-activated devices Figure 1 is a schematic diagram of a signal separator processor of one embodiment of the present invention As previously discussed, the signal separator processor of the present invention can be used with any number of microphones In the embodiment shown in Figure 1 , the signal separator processor receives signals from a first microphone 10 and a second microphone 12, spaced apart by about two centimeters As used herein, the microphones 10 and 12 include transducers (not shown), their associated pre-amplifiers (not shown), and A/D converters 22 and 24 (shown in Figure 2) The microphones 10 and 12 in the preferred embodiment are omnidirectional microphones, each of which is capable of receiving acoustic wave signals from the environment and for generating a first and a second acoustic electrical signal 14 and 16 respectively The microphones 10 and 12 are either selected or calibrated to have matching sensitivity The use of matched omnidirectional microphones 10 and 12 instead of directional or other microphones leads to simplicity in the direct-signal separator 30, described below In the preferred embodiment, two Knowles EM-3046 omnidirectional microphones were used, with a separation of 2 centimeters The pair was mounted at least 25 centimeters from any large surface in order to preserve the omnidirectional nature of the microphones Matching was achieved by connecting the two microphone outputs to a stereo microphone preamplifier and adjusting the individual channel ga s so that the preamplifier outputs were closely matched The preamplifier outputs were each digitalh sampled at 22,050 samples per second, simultaneously These sampled electrical signals 14 and 16 are supplied to the direct signal separator 30 and to a Direction of Arrival (DOA) estimator 20 The direct-signal separator 30 employs information from a DOA estimator 20, which derives its estimate from the microphone signals In a different embodiment of the invention, DOA information could come from an source other than the microphone signals, such as direct input from a user via an input device The direct signal separator 30 generates a plurality of output signals 40 and 42 The direct signal separator 30 generates as many output signals 40 and 42 as there are microphones 10 and 12, generating as many input signals 14 and 16 as are supplied to the direct signal separator 30 Assuming that there are two sources, A and B, generating acoustic wave signals in the environment in which the signal processor 8 is located, then each of the microphones 10 and 12 would detect acoustic waves from both sources Hence, each of the electrical signals 14 and 16, generated by the microphones 10 and 12, respectively, contains components of sound from sources A and B The direct-signal separator 30 processes the signals 14 and 16 to generate the signals 40 and 42 respectively, such that in anechoic conditions (I e , the absence of echoes and reverberations), each of the signals 40 and 42 would be of an electrical signal representation of sound from only one source In the absence of echoes and reverberations, the electrical signal 40 would be of sound only from source A, with electrical signal 42 being of sound only from source B, or vice versa Thus, under anechoic conditions the direct-signal separator 30 can bring about full separation of the sounds represented in signals 14 and 16 However, when echoes and reverberation are present, the separation is only partial The output signals 40 and 42 of the direct signal separator 30 are supplied to the crosstalk remover 50 The crosstalk remover 50 removes the crosstalk between the signals 40 and 42 to bring about full} separated signals 60 and 62 respectively Thus, the direct-signal separator 30 and the crosstalk remover 50 play complementary roles in the system 8 The direct-signal separator 30 is able to bring about full separation of signals mixed in the absence of echoes and reverberation, but produces only partial separation when echoes and reverberation are present The crosstalk remover 50 when used alone is often able to bring about full separation of sources mixed in the presence of echoes and reverberation, but is most effective when given inputs 40 and 42 that are partially separated After some adaptation time, each output 60 and 62 of the crosstalk remover 50 contains the signal from only one sound source A or B Optionally, these outputs 60 and 62 can be connected to post filters 70 and 72, respectively, to remove known frequency coloration produced by the direct signal separator 30 or the crosstalk remover 50 Practitioners skilled in the art will recognize that there are many ways to remove this known frequency coloration, these vary in terms of their cost and effectiveness An inexpensive post filtering method, for example, consists of reducing the treble and boosting the base The filters 70 and 72 generate output signals 80 and 82, respectively, which can be used in a variety of applications For example, they may be connected to a switch box and then to a hearing aid Referring to Figure 2 there is shown one embodiment of the direct signal separator 30 portion of the signal processor 8 of the present invention The microphone transducers generate input signals 1 1 and 13, which are sampled and digitized, by clocked sample-and-hold circuits followed by analog-to- digital converters 22 and 24, respectively, to produce sampled digital signals 14 and 16 respectively The digital signal 14 is supplied to a first delay line 32 In the preferred embodiment, the delay line 32 delays the digitally sampled signal 14 by a non-integral multiple of the sampling interval T, which was 45 35 microseconds given the sampling rate of 22,050 samples per second The integral portion of the delay was implemented using a digital delay line, while the remaining subsample delay of less than one sample interval was implemented using a non-causal, truncated sine filter with 41 coefficients Specifically, to implement a subsample delay of t, given that t<T. the following filter is used y(n) = Σ w(k) x(n-k) k=-20 where x(n) is the signal to be delayed, y(n) is the delayed signal, and w(k) {k=-20,-19, 19,20} are the 41 filter coefficients The filter coefficients are determined from the subsample delay t as follows w(k) = (1/S) sιnc{ π [(t/T) - k] } where sιnc(a) = sιn(a) / a if a not equal to 0 = 1 otherwise, and S is a normalization factor given by S = Σ sincj π [(t/T) - k] } k=-20 The output of the first delay line 32 is supplied to the negative input of a second combiner 38 The first digital signal 14 is also supplied to the positive input of a first combiner 36 Similarly, for the other channel, the second digital signal 16 is supplied to a second delay line 34, which generates a signal which is supplied to the negative input of the first combiner 36 In the preferred embodiment, the sample-and-hold and A/D operations were implemented by the audio input circuits of a Silicon Graphics lndy workstation, and the delay lines and combiners were implemented in software running on the same machine However, other delay lines such as analog delay lines, surface acoustic wave delays, digital low- pass filters, or digital delay lines with higher sampling rates, may be used in place of the digital delay line 32, and 34 Similarly, other combiners, such as analog voltage subtractors using operational amplifiers, or special puφose digital hardware, may be used in place of the combiners 36 and 38 Schematically, the function of the direct signal separator 30 may be seen by referring to Figure 6 Assuming that there are no echoes or reverberations, the acoustic wave signal received by the microphone 12 is the sum of source B and a delayed copy of source A (For clarity in presentation here and in the forthcoming theory section, time relationship between the sources A and B and the microphones 10 and 12 are described as if the electrical signal 14 generated by the microphone 10 were simultaneous with source A and the electrical signal 16 generated by the microphone 12 were simultaneous with source B This determines the two-arbitrary additive time constants that one is free to choose in each channel ) Thus, the electrical signal 16 generated by the microphone 12 is an electrical representation of the sound source B plus a delayed copy of source A Similarly, the electrical signal 14 generated by the microphone 10 is an electrical representation of the sound source A and a delayed copy of sound source B Bv delaying the electrical signal 14 an appropriate amount, the electrical signal supplied to the negative input of the combiner 38 would represent a delayed copy of source A plus a further delayed copy of source B The subtraction of the signal from the delay line 32 and digital signal 16 would remove the signal component representing the delayed copy of sound source A, leaving only the pure sound B (along with the further delayed copy of B) The amount of delay to be set for each of the digital delay lines 32 and 34 can be supplied from the DOA estimator 20 Numerous methods for estimating the relative time delays have been described in the prior art (for example, Schmidt, 1981 , Roy et al , 1988, Monta, 1991 , Allen, 1991 ) Thus, the DOA estimator 20 is well known in the art In a different embodiment, omni-directional microphones 10 and 12 could be replaced by directional microphones placed very close together Then all delays would be replaced by multipliers, in particular, digital delay lines 32 and 34 would be replaced by multipliers Each multiplier would receive the signal from its respective A/D converter and generate a scaled signal, which can be either positive or negative, in response A preferred embodiment of the crosstalk remover 50 is shown in greater detail in Figure 3 The crosstalk remover 50 comprises a third combiner 56 for receiving the first output signal 40 from the direct signal separator 30 The third combiner 56 also receives, at its negative input, the output of a second adaptive filter 54 The output of the third combiner 56 is supplied to a first adaptive filter 52 The output of the first adaptive filter 52 is supplied to the negative input of the fourth combiner 58, to which the second output signal 42 from the direct signal separator 30 is also supplied The outputs of the third and fourth combiners 56 and 58 respectively, are the output signals 60 and 62, respectively of the crosstalk remover 50 Schematically, the function of the crosstalk remover 50 may be seen by referring to Figure 7 The inputs 40 and 42 to the crosstalk remover 50 are the outputs of the direct-signal separator 30 Let us assume that the direct-signal separator 30 has become fully adapted, l e , (a) that the electrical signal 40 represents the acoustic wave signals of source B and its echoes and reverberation, plus echoes and reverberation of source A, and similarly (b) that the electrical signal 42 represents the acoustic wave signals of source A and its echoes and reverberation, plus echoes and reverberation of source B Because the crosstalk remover 50 is a feedback network, it is easiest to analyze subject to the assumption that adaptive filters 52 and 54 are fully adapted, so that the electrical signals 62 and 60 already correspond to colored versions of B and A, respectively The processing of the electrical signal 60 by the adaptive filter 52 will generate an electrical signal equal to the echoes and reverberation of source B present in the electrical signal 42, hence subtraction of the output of adaptive filter 52 from the electrical signal 42 leaves output signal 62 with signal components only from source A Similarly, the processing of the electrical signal 62 by the adaptive filter 54 will generate an electrical signal equal to the echoes and reverberation of source A present in the electrical signal 40, hence subtraction of the output of adaptive filter 54 from the electrical signal 40 leaves output signal 60 with signal components only from source B Theory It is assumed, solely for the puφose of designing the direct-signal separator 30, that the microphones 10 and 12 are omnidirectional and matched in sensitivity Under anechoic conditions, the signals X ι (t) and x 7 (t), which correspond to the input signals, received by microphones 10 and 12, respectively, may be modeled as x 1 (t) = w 1 (t) + w 2 (t-τ 2 ) x 2 (t) = w 2 (t) + w ] (t-x ] ), where W j (t) and w-,(t) are the original source signals, as they reach microphones 10 and 12, respectivel} , and T ] and τ-, are unknown relative time delays, each of which may be positive or negative Practitioners experienced in the art will recognize that bounded "negative" time delays can be achieved by adding a net time delay to the entire system The relative time delays τ j and τ 2 are used to form outputs y, (t) and y 7 (t), which correspond to signals 40 and 42 y, (t) = x , (t) - x 2 (t-τ 2 ) = w , (t) - w,(t-(τ ] +τ 2 )) y 2 (t) = x 2 (t) - x. -τ, ) = w 2 (t) - w 2 (t-(τ ] +τ 2 )) As depicted in Figure 2, these operations are accomplished by time-delay units 32 and 34, and combiners 36 and 38 Under anechoic conditions, these outputs 40 and 42, would be fully separated, I e , each output 40 or 42 would contain contributions from one source alone However under echoic conditions these outputs 40 and 42 are not fully separated Under echoic and reverberant conditions, the microphone signals X ι (t) and x 2 (t), which correspond to input signals received by the microphones 10 and 12, respectively, may be modeled as x,(t) = w 1 (t)+w2(t-τ 2 )+k n , (t)*w ] (t)+k 12 -(t)*w 2 (t) x 2 (t) = w 2 (t)+w ] (t-τ,)+k 2 ,'(t)*w 1 (t)+k 22 , (t)*w 2 (t), where the symbol "*" denotes the operation of convolution, and the impulse responses k, ] '(t), k j2 '(t), k 2 ι'(t), and k 27 '(t) incoφorate the effects of echoes and reverberation Specifically, k j j '(t)*w,(t) represents the echoes and reverberations of source 1 (w j (t)) as received at input 1 (microphone 10), k j2 '(t)*w 2 (t) represents the echoes and reverberations of source 2 (w 2 (t)) as received at input 1 (microphone 10), k 2 ,'(t)*w,(t) represents the echoes and reverberations of source 1 (w,(t)) as received at input 2 (microphone 12), and k 22 '(t)*w 2 (t) represents the echoes and reverberations of source 2 (w 7 (t)) as received at input 2 (microphone 12) In consequence of the presence of echoes and reverberation, the outputs 40 and 42 from the direct- signal separator 30 are not fully separated but instead take the form y 2 (t) = x 2 (t)-x ] (t-τ ] ) = w 2 (t)-w 2 (t-(τ j +τ 2 ))+k 2 , (t) * w , (t)+k 22 (t) * w 2 (t) where the filters jj (t), k 12 (t), k 2] (t), and k 22 (t) are related to k j , '(t), k j2 '(t), k 2] '(t), and k 2 ' ) '( t ) b> time shifts and linear combinations Specifically 11 (t) = k 1 , , (t)- 2] '(t-τ 2 ) k 12 (t) = k 12'W - k 2 , ( t - τ 2)' k 2] (t) = k 2 ,'(t)-k 11 '(t-τ ] ), and k 22 (t) = k 22 '(t)-k 12 '(t-τ,) Note that y j (t) is contaminated by the term kp(f) * w 2 (t), and that y 2 (t) is contaminated by the term k 2] (t) * w,(t) Several possible forms of the crosstalk remover have been described as part of the background of this invention, under the heading of convolutive blind source separation In the present embodiment, the crosstalk remover forms discrete time sampled outputs 60 and 62 thus 1000 z,(n) = y,(n) - Σ I k)^ (n-k) k = 1 _ 1000 z,(n) = y ? (n) - Σ h,(k)z, (n-k) k= 1 where the discrete time filters h, and h 2 correspond to elements 52 and 54 in Figure 3 and are estimated adaptivel) The filters hi and h 2 are strictly causal, I e , they operate only on past samples of Z j and z-, This structure was described independently by Jutten et al (1992) and by Platt and Faggin (1992) The adaptation rule used for the filter coefficients in the preferred embodiment is a variant of the LMS rule ("Adaptive Signal Processing," Bernard Widrow and Samuel D Stearns, Prentice-Hall, Englewood Cliffs, N J , 1985, p 99) The filter coefficients are updated at every time-step n, after the new values of the outputs Z j (n) and z->(n) have been calculated Specifically using these new values of the outputs the filter coefficients are updated as follows h,(k) [new] = h,(k) [old] + m z,(n) Z j (n-k) k=l,2 ,1000 h 2 (k) [new] = h 2 (k) [old] + m z,(n) z^n-k) k=l,2, ,1000 where m is a constant that determines the rate of adaptation of the filter coefficients, eg 015 if the input signals 10 and 12 were normalized to lie in the range -1 < x(t) < +1 One skilled in the art will recognize that the filters hi and h 2 can be implemented in a variety of ways, including FIRs and lattice IlRs As described, the direct-signal separator 30 and crosstalk remover 50 adaptively bring about full separation of two sound sources mixed in an echoic, reverberant acoustic environment However, the output signals Zι (t) and Z2(t) may be unsatisfactory in practical applications because they are colored versions of the original sources Wι (t) and w->(t), i e , z^ ζ j ttV j O) z 7 = ζ 2 (t)*w 2 (t) where ζ j (t) and ζ 2 (t) represent the combined effects of the echoes and reverberations and of the various known signal transformations performed by the direct-signal separator 30 and crosstalk remover 50 As an optional cosmetic improvement for certain commercial applications, it may be desirable to append filters 70 and 72 to the network The puφose of these filters is to undo the effects of filters ζι (t) and ζ 7 (t) As those familiar with the art will realize, a large body of techniques for performing this inversion to varying and predictable degrees of accuracy currently exist The embodiment of the signal processor 8 has been described in Figures 1 -3 and 6-7 as being useful with two microphones 10 and 12 for separating two sound sources, A and B Clearly, the invention is not so limited The forthcoming section describes how more than two microphones and sound sources can be accomodated General case with M microphones and M sources The invention is able to separate an arbitrary number M of simultaneous sources, as long as they are statistically independent, if there are at least hi microphones Let w (t) be the j'th source signal and x (t) be the l'th microphone (mic) signal Let t be the time required for sound to propagate from source j to mic i, and let d(t ) be the impulse response of a filter that delays a signal by t Mathematically, d(t ) is the unit impulse delayed by t that is whe **> = δ <' > re δ(t) is the unit impulse function ("Circuits, Signals and Systems", by William McC Siebert The MIT Press. McGraw Hill Book Company, 1986, p 319) In the absence of echoes and reverberation, the l'th mic signal x (t) can be expressed as a sum of the appropriately delayed j source signals M Mat xff) = ditv) * Wj(t) πx =1 repr esentation allows a compact representation of this equation for all M mic signals , X(t) = D(t) * W(t) whe re X(t) is an M-element column vector whose l'th element is the l'th mic signal x (t), D(t) is an MxM element square matrix whose lj'th element (le , the element in the l'th row and j'th column) is d(t ), and W(t) is an M-element column vector whose j'th element is the j'th source signal w (t) Specifically, For each source w (t), if the delays t for ι=l ,2, M to the M mics are known (up to an arbitrary constant additive factor that can be different for each source), then M signals y (t), j=l,2, ,Λ , that each contain energy from a single but different source w (t), can be constructed from the mic signals x (t) as follows Y(t) = ad]D(t) * X(ή , where is the M-element column vector whose j'th element is the separated signal y.(t), and adjD(t) is the adjugate matrix of the matrix D(t) The adjugate matrix of a square matrix is the matrix obtained by replacing each element of the original matrix by its cofactor, and then transposing the result ("Linear Systems", by Thomas Kailath, Prentice Hall, lnc , 1980, p 649) The product of the adjugate matrix and the original matrix is a diagonal matrix, with each element along the diagonal being equal to the determinant of the original matrix Thus, • Wit) where 'D(t) is the determinant of D(t) Thus, y r) = \D(t) \ *w j (t) for ] = 1,2, ,M y (t) is a "colored" or filtered version of w (t) because of the convolution by the filter impulse response |D(t)] If desired, this coloration can be undone by post filtering the outputs by a filter that is the inverse of 'D(t)| Under certain circumstances determined by the highest frequency of interest in the source signals and the separation between the mics, the filter 'D(t) 1 may have zeroes at certain frequencies, these make it impossible to exactly realize the inverse of the filter |D(t) Under these circumstances any one of the numerous techniques available for approximating filter inverses (see, for example, "Digital Filters and Signal Processing", by Leland B Jackson, Kluwer Academic Publishers, 1986, p 146) may be used to derive an approximate filter with which to do the post filtering The delays t can be estimated from the statistical properties of the mic signals, up to a constant additive factor that can be different for each source Alternatively, if the position of each microphone and each source is known, then the delays t can be calculated exactly For any source that is distant, I e , many times farther than the greatest separation between the mics, only the direction of the source is needed to calculate its delays to each mic, up to an arbitrary additive constant The first stage of the processor 8, namely the direct signal separator 30, uses the estimated delays to construct the adjugate matrix adjD(t), which it applies to the microphone signals X(t) to obtain the outputs Y(t) of the first stage, given b Y(t) = adjD(t) * X(t) In the absence of echoes and reverberations, each output y (t) contains energy from a single but different source w (t) When echoes and reverberation are present, each mic receives the direct signals from the sources as well as echoes and reverberations from each source Thus M M x,(t) = ∑ /(r y )*w/f) + ∑ e y (t) * Wj (t) for i = 1,2,...,M j- i = ι where eYt) is the impulse response of the echo and reverberation path from the j'th source to the l'th mic All M of these equations can be represented in compact matrix notation by X(t) = D(t)*W(t)+E(t) *W(t) where E(t) is the MxM matrix whose ljth element is the filter e (t) If the mic signals are now convolved with the adjugate matrix of D(t). instead of obtaining separated signals we obtain partially separated signals Y(t)= adjD(t) *X t) = \D(t) I * W(t) +adjD(t) *E(t) * W[f) Notice that each y (t) contains a colored direct signal from a single source, as in the case with no echoes, and differently colored components from the echoes and reverberations of every source, including the direct one The echoes and reverberations of the other sources are removed by the second stage of the network, namely the crosstalk remover 50, which generates each output as follows M ψ ) = ,ω - Σ Λ , * ω *z_ω f° r = - . where the entities h ^(t) are causal adaptive filters (The term "causal" means that h: |< (t)=0 for t<0 ) In matrix form these equations are written as Z(t) = Y(t)-H(t)*Z(t) where Z(t) is the Λ/-element column vector whose j'th element is z (t), and H(t) is an MxM element matrix whose diagonal elements are zero and whose off diagonal elements are the causal, adaptive filters h ^(t) These filters are adapted according to a rule that is similar to the Least Mean Square update rule of adaptive filter theory ("Adaptive Signal Processing," Bernard Widrow and Samuel D Stearns, Prentice-Hall, Englewood Cliffs, NJ, 1985, p 99) This is most easily illustrated in the case of a discrete time system Illustrative weight update methodology for use with a discrete time representation First, we replace the time parameter t by a discrete time index n Second, we use the notation H(n)[new] to indicate the value of H(n) in effect just before computing new outputs at time n At each time step n, the outputs Z(n) are computed according to Z(n) = Y(n)-H(n)[new]*Z(n) Note that the convolution on the right hand side involves only past values of Z, le Z(n- l ),Z(n-2), , Z(n-N), because the filters that are the elements of H are causal (N is defined to be the order of the filters in H) Now new values are computed for the coefficients of the filters that are the elements of H These will be used at the next time step Specifically, for each j and each k, with j ≠ k, perform the following h )k (u)[old] = h ]k (M)[new u = \,2,...,M h jk (u)[new] = h jk (u)[old] + μ^(n)z t (« -") " = 1,2,... M The easiest way to understand the operation of the second stage is to observe that the off-diagonal elements of H(t) have zero net change per unit time when the products like z (t)Z | t-u) are zero on average Because the sources in W are taken to be statistically independent of each other, those products are zero on average when each output z (t) has become a colored version of a different source, say w (t) (The correspondence between sources and outputs might be permuted so that the numbering of the sources does not match the numbering of the outputs ) More specifically, let Z(t)=T(t)*W(t) From the preceding paragraph, equilibrium is achieved when Ψ(t) is diagonal In addition, it is required that W(t) so that This relation determines the coloration produced by the two stages of the system, taken together An optional third stage can use any one of numerous techniques available to reduce the amount of coloration on any individual output Example of general case with M = 3, i.e. with 3 mics and 3 sources ln the case where there are 3 mics and 3 sources, the general matrix equation λ = D*W becomes If the delays t- are known, then the adjugate matrix of D(t) is given by *22 + f 33' ' d ^li + f 3 2 ) *13 + '3.) " *12 + f 33> ^ 12 + '23) " *22 + f l 3 ) adjD = d(t Ω *t 3l ) -d(t 21 +t M ) d(t,, + r 33 ) -«/(r 13 ♦«„) -.(«., + f 13 ) -*,, + r 23 ) * 21 + r 32 ) -d(r 22 + t 3| ) d(t 12 + t 3I ) -d(r„ * t κ ) rf(r π ♦ *,.) -* 2 , + t 12 ) Note that adding a constant delay to the delays associated with any column of D(t) leaves the adjugate matrix unchanged This is why the delays from a source to the three mics need only be estimated up to an arbitrary additive constant The output of the first stage, namely the direct signal separator 30, is formed by convolving the mic signals with the adjugate matrix The network that accomplishes this is shown in Figure 4 In the absence of echoes and reverberations, the outputs of the first stage are the individual sources, each colored by the determinant of the delay matrix In the general case when echoes and reverberation are present, each output of the first stage also contains echoes and reverberations from each source The second stage, namely the cross talk remover 50, consisting of a feedback network of adaptive filters, removes the effects of these unwanted echoes and reverberations to produce outputs that each contain energy only one different source, respectively The matrix equation of the second stage Z = Y-H*Z becomes 2l (t) where each h is a causal adaptive filter The network that accomplishes this is shown in Figure 5 It should be noted that the number of microphones and associated channels of signal processing need not be as large as the total number of sources present, as long as the number of sources emitting a significant amount of sound at any given instant in time does not exceed the number of microphones For example, if during one interval of time only sources A and B emit sound, and in another interval of time only sources B and C emit sound, then during the first interval the output channels will correspond to A and B respectively, and during the second interval the output channels will correspond to B and C respectively Referring to Figure 8 there is shown a block level schematic diagram of a direction of arrival estimator 200 of the present invention The direction of arrival estimator 200 may be used with the direct signal separator 30 shown in Figure 1 to form an adaptive filter signal processor As previously described, the function of the direct signal processor 30 is to receive digital acoustic signals 26 and 28 (for the two microphone embodiment shown in Figure 1 ), represented as Xι (t), and x 2 (t), respectively, where they are x, (t) = w j (t) + 2 (t-τ 2 ) x 2 (t) = w 2 (t) + w,(t-τ ] ), and process them to obtain the processed signals of yι (t) and y 7 (t), which correspond to signals 40 and 42 y, (t) = χ , (t) - x 2 (t-τ 2 ) = w , (t) - W | (Hτ,+x 2 )) y 2 (t) = x 2 (t) - x, (t-τ, ) = w 2 (t) - 2 (t-(τ j +τ 2 )) Under anechoic conditions, l e , in the absence of echoes and reverberations of said acoustic waves from said plurality of sources, each of said first processed acoustic signals, y^ (t) and y 7 (t), represent acoustic waves from only one different source To achieve such result, the variables τ, and τ-,, must match the actual delay of the acoustic waves from the source reaching the microphones 10 and 12 as shown graphically in Figure 6 In the embodiment described heretofore, the variables t | and τ 7 are supplied from the DOA estimator 20 At best, however, this is only an estimation The aim of the present invention is to perform this estimation accurately and rapidly In Figure 8, the preferred embodiment of the Direction of Arrival estimator 200 of the present invention is shown as receiving two input sample signals 26 and 28 However, as is clearly described heretofore, the present invention is not so limited, and those skilled in the art will recognize that the present invention may be used to process any number of input signals As the number of input signals rises, the task of estimating directions of arrival becomes more computationally intensive Nonetheless, the number of input signals that the present invention can process is limited only by the available data and computational resources, not by a fundamental principle of operation The puφose of direction-of-arrival estimator 200 is to estimate a pair of delay values, namely i j and τ-,, that are consistent with the input signals X j (t) and x 7 (t) in the manner descπbed above For puφose of discussion, a pair of delay values is termed a set of parameter values A clock 210 is present in the preferred embodiment and runs at a "fast" rate of, e g a multiple times 100 cycles per second The fast clock rate is supplied to the block 202, which comprises the parameter generator 220, the parameter latch 230, the instantaneous-performance calculator 240, the instantaneous-performance latch 250, and the instantaneous-performance comparator 260, and the gate 270 The "fast" clock rate of multiple times 100 cycles per second is then divided by a divider 204, which yields a "slow" clock rate of, e g 100 cycles per second The "slow" clock rate is supplied to the components in block 206, each of which executes once per each "slow" clock cycle The order of their execution is obvious from Figure 8 Although the "fast" and "slow" clock rates are described here as running synchronously, one skilled in the art will recognize that their operation could be made asynchronous without departing from the spirit and scope of the invention Parameter sets originate at the parameter generator 220 Each time a parameter set is created, it is supplied to the parameter latch 230 for temporary storage The first N parameter sets that arrive at the parameter latch 230 are stored in the parameter population storage 230(1 -N), which holds N parameter sets, where N is 80 to 100 in the preferred embodiment Thereafter, a parameter set is transferred from the parameter latch 230 to the parameter population storage 230( 1 -N) (and a parameter set previously in the parameter population storage 230(1 -N) is discarded) only at times determined by the state of the gate 270, which in turn is determined by conditions described below Once per "slow" clock cycle, one parameter set is copied from the parameter population storage 230( 1 -N) to the best-parameter latch 300 Which parameter set is copied is determined by selector 290 using information from the cumulative-performance comparator 310, whose operation is described below The parameter set in the smoothed-parameter latch 320 is updated via a leaky integrator 330 from the value in the best-parameter latch 300 In the preferred embodiment, the leaky integrator 330 performs the operation of T,(new) = (l -ε)τ j (old) +(ε)τ,( best-parameter latch) where the constant ε is set as follows ε = ( 1/2) ( l/k) where k is about 10, so that the leaky integrator has a half-life of approximately 10 clock cycles At each "slow" clock cycle, the parameter set in the smoothed-parameter latch 320 is supplied to the direct-signal separator 30 It remains to describe (a) the conditions under which the gate 270 opens, (b) how a parameter set in the parameter population storage 230( 1 -N) is chosen to be discarded each time the gate 270 opens, and (c) how the selector 290 chooses a parameter set to copy from the parameter population storage 230(1 -N), based on information from the cumulative-performance comparator 310 Item (a) Each time a parameter set, generated by the parameter generator 220, arrives at the parameter latch 230, it is supplied to the instantaneous-performance calculator 240 for operation thereon Also, at each "slow" clock cycle, the N parameter sets in the parameter population storage 230(1-N) are supplied to the bank of N instantaneous-performance calculators 240( 1 -N) for operation thereon The performance value computed by the instantaneous-performance calculator 240 is supplied to the instantaneous-performance latch 250 At the same time, the plurality of performance values computed by the plurality of instantaneous performance calculators 240(1 -N) are supplied to a plurality of instantaneous-performance population storage 340(1 -N), respectively The values in the instantaneous-performance population storage 340(1 -N) may change even during a "slow" clock cycle in which the contents of the parameter-population storage 230(1 -N) do not change, since they depend on the input signals 26 and 28, X j (t) and x 2 (t), which do change Each of the instantaneous-performance calculators 240(1 -N) and 240, calculates an instantaneous-performance value for the given parameter set in accordance with instantaneous performance value = -protlog[ a 0 , E{ y, (t) * y 2 (t) } 2 ] The notation E{ » } denotes a time-windowed estimate of the expected value of the enclosed expression, as computed by a time average In the preferred embodiment, this time average is computed over 50 milliseconds The notation protlog[a ,a] denotes a protected logarithm protlog[ aø, a ] = log[a] if a > a Q = log[aø] otherwise As will be seen, the value of yι(t) * y (t) is related to the input signals 26 and 28, and also depends on the values of ii and τ 7 in a parameter set Parameter sets with higher instantaneous performance values are deemed more consistent with recent input data x, (t) and x 2 (t) than are parameter sets with lower instantaneous performance values The strategy of the remainder of the invention is to identify those parameter sets in the parameter population storage 230(1 -N) that exhibit the highest instantaneous performance values consistently over time The instantaneous-performance calculator 240 and the N instantaneous-performance calculators 240( 1 -N) employ values supplied by the instantaneous-performance precalculator 350 which performs operations on the input data 26 and 28 that would otherwise constitute effort duplicated across the N+l instantaneous-performance calculators 240 and 240( 1 -N) In particular, the quantity E{y j (t)*y 2 (t)} can be computed without explicitly computing y, (t) and y- f (x) (see theory section, below) Each time a value arrives at the instantaneous-performance latch 250, it is compared by the instantaneous-performance comparator 260 with the least value in the instantaneous-performance population storage 240(1 -N) If it is less, the gate 270 remains closed If it is greater, the gate 270 opens Item (b) At each "slow" clock cycle, each value in the instantaneous-performance population storage 340(1 -N) is added to the corresponding value in the cumulative-performance population storage 360( 1 -N) by one of the adders in the bank of adders 370(1 -N) Thus, each cell in the cumulative-performance population storage 360( 1 -N) maintains a cumulative sum of instantaneous-performance values Other embodiments could employ a weighted sum or other arithmetic operation for incoφorating new instantaneous-performance values into the cumulative performance Each time the gate 270 opens, the parameter set currently in the parameter latch 230 is copied to the parameter population storage 230(1 -N), replacing the parameter set with least cumulative performance Its cumulative performance is initialized to a value that falls short of the greatest value in the cumulative-performance population storage by a fixed amount determined in advance This fixed value is chosen so that the cumulative performance of the parameter set newly introduced into the parameter-population storage 230(K) cannot exceed the currently greatest cumulative performance in the cumulative-performance population storage 360(1 -N) until sufficient time has elapsed for the statistics to be reasonably reliable In the preferred embodiment, sufficient time is deemed to be 100 milliseconds Item (c) At each "slow" clock cycle, the cumulative-performance comparator 310 identifies the greatest value in the cumulative-performance population storage 360(1 -N) and supplies the index (1 through N) of that value to the selector 290 The selector 290 copies the corresponding parameter set from the parameter population storage 230(1 -N) to the best-parameter latch 300 for further processing as described above The generator 220 can generate t j and τ 2 in a number of different ways First the generator 220 can draw the delay values randomly from a predetermined distribution of τ , and τ-j values Secondly, the values of t | and τ 9 can be estimated from the incoming data streams using crude methods that exist m the prior art Alternatively they can be variants of existing values of t | and τ 2 The values of τ^ and τ 2 can also be based upon prior models of how the sources of the acoustic waves are expected to move in physical space Further, the values of t | and τ 2 can be determined by another adaptive filtering method including well known conventional methods such as a stochastic-gradient method Finally if the number and required resolution of the filter coefficients are low enough that the initial sets of delay values contain all the possible delay values, then clearly the generator 220 can even be omitted Theory Problems in adaptive filtering can generally be described as follows One or more time-varying input signals x (t) are fed into a filter structure H with adjustable coefficients hi , l e , H=H(h ] ,h- ) , ) Output signals y (t) emerge from the filter structure For example, an adaptive filter with one input x(t) and one output y(t) in which H is a linear causal FIR filter might take the form y(t) = A 2. h k x(t-kΔt) In general, H might HeΥmuch more complicated filter structure with feedback, cascades, parallel elements, nonlinear operations, and so forth The object is to adjust the unknowns hi such that a performance function C(t) is maximized consistently over time The performance function is usually a statistic computed over recent values of the outputs y (t), but in general it may also depend on the input signals, the filter coefficients, or other quantities such as parameter settings supplied exogenously by a human user For example, consider the 2x2 case of the preferred embodiment of the direct-signal separator 30 Each of the input signals, X ι(t) or x 7 (t), comes from one omnidirectional microphone Each omnidirectional microphone receives energy from two source signals S j (t) and s-,(t) The structure H is a feed-forward network, with time delays, that implements the following relations y ] (t) = x ] (t) - x 7 (t - τ 2 ) , and y 2 (t) = x 2 (t) - x, (t - τ j ) The adjustable coefficients are t i and τ 7 , i e , H=H(t j ,x- > ) Note that even when the signals are sampled, T, and τ need not be integral multiples of Δt The goal is to recover versions of s^(t) and s 2 (t), possibly after some frequency coloration, from X ι (t) and x 7 (t), I e to make > ] (t) be a filtered version of S ] (t) only, and y~)(t) a filtered version of s 2 (t) only or vice versa The pivotal assumption is that S j (t) and s 2 (t) are statistically independent For mathematical convenience, it is also assumed that both have (possibly different) probability distributions symmetric about zero (For example, speech signals have probability distributions that are sufficiently symmetric about zero, though not perfectly so ) These two assumptions imply that E[f(s, (t))g(s 2 (t))] = 0 holds for every possible choice of the two odd functions f and g (The notation E[ « ] denotes a time-windowed estimate of the expected value of the enclosed expression, as computed by a time average In the preferred embodiment, this time average is computed over 50 milliseconds Typical weighting functions are rectangular or exponential, but many others are also used ) In the absence of noise, echoes, reverberation, and certain mathematical degeneracies, the desired goal is accomplished when H is set such that the relation of statistical independence holds for y^ (t) and y 2 (t) as well, I e , E[f( y ] (t))g(y 2 (t))] = 0 for every possible choice of the two odd functions f and g To specify these conditions in a form appropriate for the present invention, it is necessary to define some performance function C(t) that is largest when the conditions of statistical independence are closest to being satisfied In practice, a number of choices must be made in the definition of C(t) First, although the number of equations that must be satisfied for true statistical independence is infinite, it is generally necessary to choose a small number of pairs of functions f and g for which the equations are to be satisfied Second, the time window over which the expectation operator E[ p ] performs averaging must be chosen Third, the averages used to compute the function C(t) can be defined in one of two ways direct or retrospective Each of these choices can affect the speed at which the system adapts to changes in the configuration of sources, and the computational demands that it places on the underlying hardware With some combinations of these choices, including those made in the preferred embodiment, the present invention provides advantages not found with competing methods such as LMS or RLS We now discuss the three choices, their effects on speed and efficiency, and the conditions under which the present invention provides unique advantages The first choice concerns which pairs of f and g functions to use in enforcing the statistical independence conditions One familiar with the art will recognize that a variety of ways to enforce the statistical-independence relations exist, and that any one of these could be used without departing from the spirit and scope of the invention In the preferred embodiment of the present invention, the relations are enforced by incoφorating them into a least-squares error function of the following form e(t) = Σ c k e k (t) , k K K where c is a weighting factor, e k (t) = { E[ f (y,(t)) g k (y 2 (t)) ] } 2 , and f and g k are odd functions Often they are defined to be odd polynomial terms, e g , fk(y) = Y The goal is to maximize e(t) The performance function C(t) is then defined thus C(t) = - protlog[ a Q , e(t) ] , and the goal is then to maximize C(t) The notation protlogf aø,a ] denotes a protected logarithm protlog[ a Q , a ] = log[a] if a > a Q = log[aø] otherwise In the preferred embodiment, the bound a Q is equal to l e-20 Given this definition of C(t), the first choice amounts to the selection of odd functions f and g k and weighting coefficients c Each function fi and g can be linear or nonlinear and any number of pairs of f and g functions can be used These choices have been debated extensively in the published literature because they involve a tradeoff between performance and mathematical sufficiency On one hand, raw performance issues call for the number of pairs of functions f and g to be small, and for the functions themselves to be simple otherwise C(t) becomes intensive to compute, difficult to optimize (because of multiple competing optima), and sensitive to noise On the other hand, if those guidelines are carried too far, the performance function C(t) becomes "instantaneously underdetermined " That is at any given time t, the relation e(t) = 0 does not uniquelv determine H, the value of H that causes y^ (t) and y 7 (t) to be filtered versions of S | (t) and s 7 (t) is only one of a family of values of H that satisfy e(t) = 0 The second choice pertains to the length of the window over which the expectation operator E[ « ] performs averaging This choice gives rise to a tradeoff between adaptation rate and fluctuation On one hand, if averaging times are too long, the system will adapt to changes slowly because the statistics that make up C(t) change slowly On the other hand, if the averaging times are too short, C(t) will be noisy Moreover, within short time windows it is possible for the pivotal assumption of statistical independence to be violated transiently The third choice pertains to precisely how the averaging done by the expectation operator £[•] is defined This choice has an impact on how quickly and accurately the invention can adapt to the incoming signals Consider the expression E[f k (y ] (t))« k (y->(t))] which involves averaging over the outputs of the invention The outputs depend, in turn, on the transfer function H, which varies in time as the invention adapts to the incoming signals One method is to perform the time average using the actual past values of y j (t) and y 7 (t) This is the conventional averaging procedure Although simpler to implement, this method creates a problem the averaging window may include past times during which the output signals y j (t) and y 2 (t) were computed with past values of H that were either much better or much worse than the current H at separating the sources Consequently with conventional averaging the performance function C(t) is not an accurate measure of how well the invention is currently separating the signals The alternative is to perform the averaging retrospectively compute the time average using the past values that y, (t) and y 2 (t) would have taken, had the current value of H been used to compute them This way, the performance function C(t) is a more accurate measure of the performance of the current value of H, and adaptation to movement of the sources can occur more quickly However, this method of computing the average calls for a somewhat more complicated technique for processing the input signals x , (t) and x ? (t) The technique used in the preferred embodiment is described below A key advantage of the present invention over existing adaptive filtering techniques is its relative imperviousness to the effects of mathematical insufficiency and fluctuation in C(t), relative to existing methods for performing adaptive filtering These properties permit the first two choices to be made in a manner that favors performance and adaptation rate In particular, consider the behavior of the performance function C(t) in the preferred embodiment Only one pair of functions f, g is used, and both functions are linear f(y) = y, g(y) = y, so that C(t) is maximized by driving the expression E[ y, (t) y 2 (t) ] as close as possible to zero This condition, known as decorrelation, is a much less stringent condition than statistical independence It has long been recognized in the literature (see, for example, Cardoso, 1989) that decorrelation over a single time window, even a long one, is an insufficient condition for source separation In the terms used here, the resulting performance function is instantaneously underdetermined Moreover, in the preferred embodiment, the expectation operator E[»] averages over a very short time window 50 milliseconds, this causes the performance function C(t) to be sensitive to noise and transient departures from statistical independence of the sources It is under conditions of instantaneous underdetermination and rapid fluctuation of C(t) that the greatest advantages of the present invention over prior art are realized The so-called Least Squares methods, of which Recursive Least Squares (RLS) is the archetype, cannot be used because they effectively compute, at each time step, a unique global optimum of the performance function (RLS performs this computation in an efficient manner by updating a past solution with data from the current time window, nonetheless, the resulting solution is the unique global optimum ) In the presence of instantaneous underdetermination, no unique global optimum exists Under conditions of instantaneous underdetermination, LMS and GA solutions exist but are expected to fail This is because both methods attempt to move toward the global optimum of the performance function at any given instant in time, using the gradient of the performance function Under the conditions of instantaneous underdetermination presently under discussion, the theoretical global optimum is not a single point on the performance surface, but an infinite collection of points spread over a large region of the parameter space At any given instant, LMS or GA techniques will attempt to move their parameter estimates toward one of these optimal points Subsequent linear smoothing will produce a weighted mean of these estimates, which in general may be very different from the ideal value Instead of producing a weighted mean of estimates, the present invention effectively calculates a weighted mode it chooses the single estimate that most consistently optimizes the performance surface over time The present invention copes well with instantaneous underdetermination only under certain conditions In particular, the preferred embodiment of the present invention exploits the fact that if the sources S (t) and s-,(t) vary in their relative power, as is true in conversational speech, the relation e(t) = 0 holds true consistently over time only for the correct value of H Other values of H can satisfy the relation only transiently The behavior of the present invention is to choose x, and x 0 such that C(t) is maximized consistently over time The strategy of maximizing C(t) consistently over time is an advantage of the present invention over existing LMS and GA based algorithms even when instantaneous undetermmation is absent and a weighted mean does converge to the ideal parameters Even under such favorable conditions, LMS and GA based algorithms may still produce a parameter set that fluctuates rapidly, albeit with values centered about the ideal For certain applications, these fluctuations would detract from the usefulness or attractiveness of the system They may be removed by the conventional technique of linear smoothing, but usually at the expense of adaptation speed the system will react slowly to true changes in the ideal parameters In contrast, the present invention can produce non-fluctuating parameters while retaining the ability to adapt quickly This is because noise fluctuations (and fluctuations in C(t) due to transient departures of the sources from statistical independence) are translated into fluctuations in the cumulative performance values, not in the parameters themselves An important advantage of the present invention over the so-called Least-Squares methods, of which Recursive Least Squares (RLS) is the archetype, is its generality Least-Squares methods can be used only when the form of C(t) permits its global maximum to be computed analytically The present invention has no such requirement In the present invention, the third choice (conventional vs retrospective averaging) is especially critical The invention relies on being able to obtain a rapid, accurate estimate of how well a given trial value of H would separate the signals, and therefore essentially requires that averaging be performed retrospectively In addition, unlike conventional averaging, retrospective averaging can permit the bulk of the processing effort to be performed in a precomputation step that is common to all population members In the preferred embodiment, this precomputation proceeds as follows As previously discussed, the puφose of the performance calculator is to calculate C(t) in accordance with C(t) = -protlogf a Q , e 2 (t) ] , where e(t) = E[ y , (t) * y 2 (t) ] The expectation operator E[*] is expensive to calculate, but the computation can be structured so that multiple calculations of C(t) for the same time but different X j and x 2 can share man> operations Since, as described above, the time delay j and τ-, are implemented b> convolution with a sine-shaped filter w , y 1 (t) = X ] (t) - Σ w 2 (x 2 ,k 2 ) x 2 ( t - k 2 Δt ) k-> y (t) = x 7 (t) - Σ i ^ , ) x , ( t - k, Δt ), " k, and since the expectation operator E[«] is linear, it follow s that the quantity in question can be expressed as follows E{ y,(t) y 2 (t) } = E{ x, (t) x 2 (t) } - Σ w 2 (x 2 ,k 2 ) e p (0,k ) k 2 + k ∑ k ∑ wi(τ 1 .h ) w 2 (τ 2 . 2 ) e 12 ( 1 ,k 2 ) , where j and w-, are coefficients that depend on the delays but not the input data, and e 12 (k ] ,k 2 ) = E{ x, ( t - k, Δt ) x 2 ( t - 2 Δt ) } The quantity e j 2 (k ι ,k ) can be precalculated once per clock cycle for each (kι ,k 7 ) pair, leaving the sums over k j and 2 to be calculated once for each τ, , x-> parameter set When the number of input channels exceeds two, the quantity e^^ j ) = E{ x,( t - k, Δt ) Xj ( t - k j Δt ) } must be precalculated for every (IJ) pair, and for each such pair, for every (k ]; k ) pair In the preferred embodiment of the present invention, the invention has been implemented in software, as set forth in the microfiche appendix The software code is written in the C++ language for execution on a workstation from Silicon Graphics However, as previously discussed, hardware implementation of the present invention is also contemplated to be within the scope of the present invention Thus, for example, the direct signal separator 30 and the crosstalk remover 50 can be a part of a digital signal processor, or can be a part of a general puφose computer "ADAPTIVE FILTERING SIGNAL PROCESSOR" INVENTORS: NEALA. BHADKAMKAR THOMAS NGO EXHIBIT A 33 Signal.h // Signal module - • -c++-*- // Handles aoπophonic sound signals I I Convolution // I* able to do arithmetic like superpose signals with scaling and // time delay; compute running correlation public void add_timedelay [ Signalt src double tau double desιred_sum =1 ) Idefine DEFAUXT_SAMPLING_F EQUENCY 44100 // void titnedelayt Signal* src double tau double desired_sum -1 ), private •include <audιo l» static double* convolutι<n static int nconvolution nconv2 class Signal ( // Trans ormed signals // Constructor and destructor public Signal* operator = I Signal* that ), p< - ; // void AGC( Signal* float elife ) ιal ( long sam les ^ =0 f loat sampling_f requeπcy_ = DEFAULT.SAMPLING.FREQUFJICY ) // Audio I/O -Signal { J ; public / / Sampl ing f requency void play( float speedup =1 0 ) void record! float duration ); private void play_async( float speedup ±1 0 ) float eampling_ re uency static long play_async_moie ( ) , // ret cur sample or 1 float dt, private publlci typedef short soundsairple void eet_sampling_frequency( float ) static A port alport; float get_sampling_freqυency( ) I return sa_nplιng_frequency I static βoundβaøιple # alport,buf, // 0 when buffet empty static void alport_buf_resize( long ); // Size and storage static long alport_buf_βizβ> static long alport_buf_curβor // 1 when port not in use public void truncate) long sainples_new ) // File I/O privatet long samples, public float* value; void writβf const char" filename ) void resize! long samples new ), void read( const char" filename )j void resizβ( float apρrox_εamples new ) void write_aifc( const char* filename ) void read_alfc( const char* ilename, int rightchannel 0 ) // Access void write_human( const char* filename ) void read_human ( const char* filename 1 public float* operator { ] { long l ) 1 return value(ι] I st long get_samplea() ( return samples ) // Read or create a signal public void create_zero( long samples =0 ) void create_randσm( long samples -0 ) void create_βine( float sinfreq long samples =0 ) // Arithmetic public void operator *= ( float ); void add! Signal* that, float scale = l 0 float delay = 0 0 ) void edd_productl Signal* a, Signal* b ) // void damp( float elife ), void windov_average( long lwindow ); frland Signalt. wiπdow.average( Signal* src long elife ) void exponentlal.avarage{ Signal* src long elife ( j void force.xero_mean() i void normallze_variance( float deβir«d_varlance =1 0 ) void πormallxe_to_"-iax( float desired_maκ ) j Signal.cc linclude "Signal.h" void Signal :: esize{ long samples_new ) ( •include 'mystream.h" if ( samples.new I = samples ) { linclude <βtdlib.h> lf( samples > 0 ) delete value; linclude <string.h> samples * samples_new; linclude <audiofile.h> value = (samples > 0} ? new float [samples = samples_new( 0; linclude <nath.h> ) Idefine T O_PI 2 ' M.PI extern "C* [ extern int sginapllong ticks) ; ) void Signal : :resize ( float apρrox_samples ) static double εinc( double x ) ( ( long samples_new = (long) floor (approx_samρles ♦ 0.5); * f( x =* 0 ) return 1; resize( βam les_new ) ; return sln(x) / x; I 1 / - - - // // Truncate // Static buffer //--- --- //--- void Signal :: runcate ( long samples_new 1 ALport Signal: jalport; ( Signal. taoundsample* Signal: :alport_b f = 0; iff εamples.new == samples ) return; void Signal : :alport_buf_resize( long newsize ) float* value_new * new float [βamples.newj ; for ( long 1 = 0; 1 < samplβs_new; i** J if( alport ^ buf.size == newsize ) return; value_new[i] = (i < samples) ? value[i| : 0; if( alport ^ buf ) delete alport.buf; delete value; alport_buf = new soundsample (alρort_buf_size = newsize) ; value * value_new; » samples = samples.πew; long Signal : :alport_buf ^ size = 0; long Signal t iβlport_buf_cursor = -li double* Signal : :convolution = 0; // Bead or create a signal int Signal: snconvolution = 0; // int Signal: :nconv2 = 0; void Signal : :create_sine( float sinfreq, long samples. ) // - I / / Constructor and destructor if[ samples. > 0 ) resizef samples_ ) ; for ( long i = 0; i < samples; i*+ ) ( float t = i • dt; 1: :Signal ( long samples_, valueti] = sin( TWO_PI * t * sinfreq ); float saβnpling_frequency_ ) : samples (0), value (0) sβt.sampliπg.frequency( s m ling_frequency. ) ; void Signal : ;create_random( long samples. I resize! samples, ); ( or( long i = 0; i < samples ; i ♦♦ I v lue[ i ] = 0.0; iff samples_ > 0 ) resize! samples. ) ; float mean = 0; if ( (convolution ) ( for( long i = 0; i < samples; i*+ ) nconv2 = 10; mean ** value(i) = 1 (rando U % 10000) / 5000.0) - 1.0; πconvolutlon = nconv2 • 2 ♦ 1; mean /= samples; convolution = new double (nconvolutionl ; for( i = 0; i < samples; i++ ) value|ij -= mean; ) ) ) void Signal : :create_zero{ long aamplea_ ) Signal: :-Signal () I ( if( samples. > 0 ) resize! aamples_ )j if( samples > 0 ) delete value; fort long 1 = 0; i < sample*; i*+ ) value[i) = 0.0; ) 1 voiJ Signal: βet_βampling_frβquency( float κ ) // - - t // λrithmetic //-- - ---- Signal.cc void Signal: tadd( Signal*, that float scale float delay ) return *dat 1 if{ this >β*mpling_frequency !» that sampling frequency ) cerr « "Warning Signal add() encountered unequal sampling freqs\n" ( // Compute delay in terns of number of t me samples long ldelay = lon (delay * sampling„ requency + 0 5) lf( ldelay > this >samples ) idelay - this >sam les // Copy signal long ithla * idelay ithat - 0 ) while) (ithiβ < this >samples) kk (ithat < that samples) ) this >value|ithis++] ♦- that value[ ithat**] • scale ) I ( value [ l ] J t force zero_mean() float sumsq ' 0 // Copy signal for( long i «= 0 i < εanpies i*+ ) sumsq * valued] * value(l) for( long 1 * 0 i < saπples i** ) value(ι) + a valuefij * b valued] float scale = (sumsq 0 0) ) ? 1 0 sqr (desired variance* (sample /sumsq) ) void Signal window average) long lwindow ) f r ( i - 0 i < samples i*« ■ ) valuβ(i) * scale I float iwin.inv 1 0 iwmdow float sum = 0 void Signal normal ize.to.max ( f loat desi red max ) float* value_new - new float (samples] ( fort long i - 0 i < samples !♦♦ ) ( £orce_ιero_mean ( ) sum + value[i] if( i >= lwindow ) sum = valued lwindow] float actual_max 0 value new|ι) - sum * iwιn_inv fort long i = 0 i < samples i+* ) ) if ( f bβ (value[i) ) > actual.max ) actual max fabs(value[ι] ) delete value float scale - (actual.max -- 0 0) alue value.new ? 1 0 desired max / actual.max for{ 1 - 0 i < samples) 1** ) valued] * scale Slgnali. window_average( Signali src long iwmdow ) ( long sampler src get.samples ( ) void Signal operator ( float scale ) Signal* dst i ew Signalt samples ) for ( long i s m les ) value(ι) float iwin.lnv 1 0 / iwindow float sum = 0 for( long 1 « 0 i < samples ι * * ) ( sum ♦ etc valued] // Time delay if( i >* iwindow ) sum * src valued iwindow) // dst >value(i] = sum ' iwin_inv ) return *dst // ( Signalt. exponential average! Signal4 src long elife ) { long samples arc gβt.βamplea( ) , Signal* dst * new Signal! samples ) Signal. cc // register float value.aba * fabsf (valυe( i ) ) ) // // Compute this by convolving src with convolution if ( value.abβ > valuβ.maxaba ) value.maxabβ = value.abs . // for( long t a 0; t < samples, +4. ] ( // value! ) = 0; float scale (value_maxabs == 0) 7 0 0 * (VOLUME / value_maκabs) // for( d * 0; d < nconvolution, d*+ ) ( // long ts *= t ♦ d - nconv2; // Copy to buffer // lf( ts z 0 44 ts < src.samples ) fort i = 0, 1 < alport_buf_βizβ, 1 + + ) // value[ t ) ♦= convolution(d) * src value! ts I alport.buf111 = (souπdsamplβl (value(il * scale + ■ 0 5), // // J // Set correct sampling rate // static long PVbuffer ]; // PVbufferlO] = AL.OUTPUT.RATE, *d Signal * -add_tιmedelay ( Signalt src, double tau PVbuf erII] * long( sampling.ftequency * speedup * 0 5 ) double desired.su ) ALcetparams(AL_DEFAULT DEVICE, PVbu er 2) / Tau should be number of time samples not necessarily integer // Set other parameters onophonic 16 bit values // set convolution ALconfig config = ALnewconfig() , double aurn = 0; ALsetchannelsIcon ig AL.MONO) ; for( int d * 0; d < nconvolution, d** ) ALsetwidth (config AL_SAMPLE_16) , sum ** (convolutionϊd] = sinc( M_PI • (d nconv2 tau) )) , double scale = desired.sum / sum; // Open the port, write the buffer, play t for( d = 0; d < nconvolution, d** ) coπvolu lon(d) • = scale alport = ALopenpoit ("sound* *w" ,config) ; alport ^ buf.cursor = 0; // Compute this by convolving src with convolution fort long t = 0 t < samples; t**- ) ( or ( d » 0; d < nconvolution; d*+ ) { long Signal play_aε>-nc_more( ) long ts a t ♦ nconv2 - d; t iff ts >*= 0 44 ts < src.samples ) // Return if not currently playing a sound value! t J += convolution(d) * src value! ts ], if( alport.buf.curβor < 0 ) return -1; ϊ ) // Decide how much to write long chunk = ALgetfillable(alport) ; if( chunk « 0 ) // port can't take anything return alport.buf.curβor - λlgetfillβ (alport) ; // Transformed signals lfl chunk > alport.buf.βize - alport_buf_curβor ) chunk = al ort_bu _βizβ - alpo .bu .cursor; Signal* Signal -operator = ( Signal* that ) // If there is more to be written, do it ( i t chunk > 0 ) 1 resizet that.samples ), ALwrltesamps(alport,alport.buf*alport_buf.cursor, chunk) sa pllng.frequency = that samplιng_fιequency, alport.buf.cursor ♦■ chunk; t * that.dt; return alport.buf.curβor - ALgetfille (alport) ; .or( long i = 0, i < samples, i+*- ) value(ι) = that valued] , ) return β this; ) // Must be done writing long stillplaylng * ALge filled(alport) ; •define DEFAULT.GAIH 1 0 ift stillplaying > 0 ) return alport.buf.cursor - stillplaymg, // // Done playing too // Audio I/O ALcloseport(alport) ; // -- return alport_buf_cursor = -1; •define VOLUME 20000 void Signal playt float speedup void Signal : :play_async t float speedup ) ( play_async( speedup ) ; // Close port if necessary whilet play_aβync_jnore ( ) >« 0 ) aginap(l) ; if[ alport_buf_curβor >= 0 ) ALclosepor (alport) , ) // Create buffer into which sound will be copied void Signal : *record( float duration ) alport_buf_rβsizβ( samples )j 1 resize(duration * sampllng.frequency); // Find maximum absolute value of signal, and from that, scaling alport_buf_realze( saβiplea )* e\n" n" ) ) Signal.cc AFgβtsampfmt( lnhandle, AF_DEFAULT TRACK, fcinβampfmt, kinεampwidth) ; In >> sajnples_new; resize (sa_mplea_new) ; long inβaatpbytewidth = (iπsavpwidth * 7) / 8; in >> βaflipllng_f requency; long inby ea = iπsampcnt * insampbytewidth; set_sampling_ frequenc ( sampl lng_f requency ) ; Int intate = int (AFgetrate ( lnhandle, AF_DEFAULT__TRACK / / Read in the s ignal if ( inchanπels f = 2 J rightchannel = 0,- f or ( long i = 0 ; i < samples ; i * * ) in >> value [ 1 ] ; // Read the data into a buffer / / Check that last l ine says " End" ■igned char* inbuf = new signed char (iπbytes] ; in . ignore ( l ) ; long framesread = AFreadframes ( lnhandle, AF_DEFAULTYTRACK. in.getline (buf, BUFLEN) ; inbuf, inframecnt ) ; if I βtrncmp(buf, "End * , 3) ) cerr << "Warning: End of file corrupt\π * iff framesread 1= i fra-mecnt ) ) cerr << "Warning: framesread = - << framesread lundef BUFLEN « • ; inframecnt = " << inframecnt NL; // - - -- // Copy the data to our own member variables // Test main resizet in ramecnt } ; //- - ■igned char *p = inbuf + rightchannel * insampbytewidth; for( long 1 = 0; i < inframecn ; i** ) { •ifdef TEST if( Inβampbytewidth <= 1 ) I value.i) = *p; int main) int argc, char" argv ) } θl*e ift insa pbytewidth < = 2 ) [ I short" q = (short *) p; cout.setf(ios: :unitbu£) ; value[i) = *q; Signal src; ) else if ( insampbytewidth <-= <• ) ( βrc read_ai c (argvt l ] ) ; long* q = (long * ) p; Signal mix (src .get_eamplee ( ) ) ; valued] = *q; / / mix . timedelay (src , 0 . 5 ) ; ) else • re play , ) J cerr << "Warning: insampbytewith > 4\n"; ix.playO ; p += insampbytewidth ' inchannels; // mixl.add.βrcl, 0.95) • J // mixl.add(src2J ; εet_sampling_frequency ( inrate ) ; // Signal εinl, sin2; // sinl,create_sinβ(10,440) ; // Free βtuff / sln2.creatβ_ainβ(B, 660) ; delete inbuf; // mix.crβate_zero(10) ; APcloeefilet lnhandle ); / miχ.add(sinl) ; AFfreβ ileeetupf insetup } ; // mix.addlβin2,0.7, 1) ; I // x.recordt20) ; // ixl.write(" ix-co en-in erval . εig" ) ; void Signal : :write_human( const char* filename } // sinl.playt) ; { // x.read("voice-123.sig" ) ; ■fstream out; // mix. lay() ; jut.open(filename) ; out « "Signal" NL; I I Test of AGC out << samples NL; Signal sinl; out « βampling_ requency NL; sinl.create_sine(l, 440) ; fort long 1 * 0; i < samples; i++ ) out << valueli] NL; sinl • • 100; out « "End" NL; Signal sin2; out << "End 2" NL; sin2.AGC(45inl.0.1) ; ) I I If sinl .write_human(*fool.sig*) ; Idefine BUFLEN 1000 I I sin2.wrlte_human I* oo2.βig*) ; void Signal : :read_human ( const char* filename ) ( // Test of read_aifc char buf[BUFLEN*.!) ; // Signal βig; // βlg.read.al c(argv(1) ) ; ifst eam in; // βig.playt (argc >» 31 7 atof (argvl21 ) in.open(filename) ; // slg.wrlte_aifc("foo.aifc") ; // Check that first line says "Signal' return 0; n.getlinβ(buf,BUFLEN) ; lf( βtrr.cβptbuf, "Signal" , 6) ) cerr << "Warning: Hot a Signal flle\n" ; •endif o υ .a O s TARTS ( ( _a test mainVn" SS2 // SS2Delayβ -*-c**-' SRevision 12 1 S SDate 1994/08/01 17 16 01 S // Class for accumulation of statistics for 2x2 sound separation based // on differential delays (separated omni mics) •include *SS2FIR h * class SS2Delayε public ΞS2FIB I // Constructor dπstructor public; ΞS2Delays( int T_head int T tail ) -SS2Deleya() ,- tual RepnSS* new_repn(), // Evaluate candidate separation parameters publici virtual double Eval2( double tau_a double tau b ) private- void compute delay convolution! double* double tau double desired sum 1 ) double *sinc_a *sιnc_b // Sin functions // Apply separation parameters public- virtual void Install I double double 1 RepnSS2.cc // RepnSS2 -*-c*κ>-*- SRevision: 12 1 S SDate; 1994/08/04 IB 47:36 S // a ♦= ra*ra*ra * arange; // b ♦* rb*rb*rb * brange; •include "RβpnSS2.h- // break ; #include *SS2.h* // case MU ATE_O»E_DIME SI0N linclude 'mystream h" // i ( raπdo_n_short (0 1) ) a = randotn_doLible (alo ahi), int RβpnSS : :force_upper_triangle = 0, else Idefin* FORCE_UPPER_TRXJUNGLE \ b = rando do ble (bio, bhi ) , if{ forcβ_upper_ riangle && a»b < 0 ) \ break b = swap, 1 / wrap once // f( a < alo ) a ->= arange; // f( a > ahi ) a -= arange; // f( b < bio ) b ♦= brange; f( b > bhi ) b -= brange; // int RepnSS2 : :routatlon_style = HUTATE_CUBIC; RepπSS2: -RepnSS2() I // // FORCE_UPPER_TPIΛII ,LE RepnSS2• :-RepnSS2 ( ) // void RepnSS2 SavelorUnilj ( I // ( // double*' RepπSS2. :scoef = 0, float RepnSS2: :fval(2] ,- // ) // void RepnSΞ2 :: Initializ ( SS" ss_, double lo_ double ι_ ( RepnSS: : Imtialιze( 2, ss_, lo_ acoeff * new double* [2): acoeff[0] = new double {21; acoeff(11 = new double (2J, // double RepnSS2 Evaluated // I // void RapnSSJ: :set_SS2( SS2* ss2_ ) I ss2 = ss2_; ) // return ss2 >E\aluate la . b) , // voId RepnSS2i :set_bounds( double alo_, double ahι_ // ) II double blo_, double bhl_ ) // alo = alo_, // ( ahi = ahi_, bio - blo_; // ) bhi = bhi_; arange - ahi - alo; brange * bhi - bio. // ( // scoefflOHl] = a: // void RepnSS2: :Randomize ( ) // acoeff(1](01 = b; // ( // return RepnSS- Evaluate coef ) // a - randov_double( alo, ahi ) ; // I // b ■ randonι_double( bio, bhi ) ,- // FORCE_UPPER_TRIA GLE; // ) // ( ( // perturb // ) •witch! auita ion-style ) ( caee HOTATH_C"B-Ci regleter double ra - random_double(-1, l( ; // ( Se // Searcher -*-<;•.♦-•- SRevision: 12.1 S SDate: 1994/10/25 17:05:37 S linclude "Searcher.h" Searcheri :Searcher() () Searcher; i-Searcher 0 () void Searcher: :Initialize( ) ( ) void Searcher: :Iterate( short ) {) Representation* Searcher: :get_best ( ) { return 0; ) double Searcher: :get_best_score( ) ( return 0; ) Src // SrchSS -*-c*--*- SRevision: 12.0 S SDate: 1994/06704 00:23:25 S linclude "SrchSS. " SrchSS::SrchSS(I () SrchSS::-SrchSSI) () h e: ic int ιnvrank_decreaβing( const void* const void* ) , ic βhort* qsort_invτan»ej ic double" qsort_valueι // _SrchSSp p_h SrchSSpop.cc qβort! qsort_invrank, npop, sizaof (short) , SrchSSpop •invrank_decreasing ) // double mβdian_aββets = assets[assets_invrank[ipop_median_assets] ] // for( int idb = 0; idb < npop idb** ) t l Update colorfrac // cout « idb TB for! ip = 0, ip < npop ip** ] « incomβ[income_invτank[idb] ] TB colorf rac [ ip] = (asβetβ Up] / HAJC ^ ASSETS) • 0 5 ♦ 0 5 // « assets[a»s*ts_lnvrank[idb] ] TB // << eval[aββets.invraπkfidb)] NL // for l ip - 0 ip < npop ip * * ) cout << colorfra [ ip] NL // cout NL, I t cout HL // // Compute mean assets // Follower // double mean_a«sets «= 0; Idefine FOLLOWER.LEAK 0 1 for! ip » 0, lp < npop; ip** ) mean_assets += assetstipj // cout << richest TB << aβsets_invτank[0) TB // mean_aβse s # s inv_npσp, / « poplriehest]->to_βtrin () NL; follower->Follo ( pop[richest] FOLLOWER_LEAK // Hake richest have MAX_ASSETS follower >Install{) richest = aββ*tβ_invrank[ 0 ]; double richest_aβsβta = assets! richest ], ) for! ip = 0; ip < npop; ip*>*> ) ( assets[ip] ♦= MAX_ASSETS - richest_assets, Representation* SrchSSpop gβt_best ( ] ϊ ! richββt__aββet« = HAX^ASSETS; return pop[richest] // // Make assets have zero median and apply limit, f nd richest and poorest // richeβt_assetβ = 0; Idefine GRAN 100000 / richest * -1; // fort ip ■ 0, ip < npop; ip*+ ) ( Representation* SrchSSpop gβt „ βomβone_good{ int maxrank, // aβaeta[ip) -•» median_asseta; double rank_factor ) ift assetsfip] > MAX.ASSETS ) asεetεlip] = HAX.ΛSSETS, I // ift assets[ip] < -MAX_ASSETS ) assβts[ip] a -MAX_A5SETS, l t I maxrank == 0 ) return pop[ income__invrank[0] ) , // if! richest < 0 || assetstip] > richest_assβts ) { richββt_assβts = assets[ip) double prob_unif = rank_factor / (1 * maxrank • (1 - rank_factor) ) // richest = ip; long rank = rando () % (maxrank + 1) // ) ιf( (rank > random() I maxrank) // ] kk (random!) % GRAN >- prob_unif * GRAN) ) rank = maxrank - rank, // Solicit suggestions double old_βug_βcorβ « 0, return popt income_lπvranklrank] ] for! i" is = 0, is < suggestιoπs_per_sample ιβ+* ] ( // Update suggester lundef GRAN auggester->Iterate( iterations_per_suggestion ] double βug__βcorβ ■ suggeβter->get_best_scorβ( ) . double SrchSSpop get_best_scorβ( ) I // If this suggestion is same as last ignore it return eval[richest) if! is > 0 it sug_score == old_sug„score ) continue old_βug_βcore = βug_score // If suggester not much better than best ignore it // Test main lf( βug_score - eval(richest] > replacement_threβhold ) continue // // Replace poorest lifdef TEST // int poorest = -1; // double poorest_amount = 0, linclude 'SS2Delays h" // for( ip ■ 0; ip < npop, ip++ ) ( linclude "SS2Caiπs h* // i f ( poorest < 0 | | assets ! ip] < ρoorest_amount ) ( / poorest_amount = assets [ ιp) linclude 'InventorSS2 h" // poorest * ip, linclude 'InvβntorWiπdow h" // I •include 'RepnSS h" // linclude 'SrchSShc h* int pooreet_rank = npop - 1 - is, linclude "SrchSStourπ h * if ( pooraat_rank < 0 ) poorβst_rank = 0 ; linclude 'Signal h * int poorest ■ aaa«ta_invτank[ pooreat.rank ) , rnrft onmRM - ot)vf suασ*flter->σet beβt f ) I t linclude ' yβtream h" βt_pop( ) , ALT. ( ) R_ALT * 0 SrchSStourn.ee // SrchSStoum -*-c+*-*- SRevision 12 0 S SDate 1994/08/04 00 23 30 S linclude "RepnSS2 h" linclude "Signal h" Iinclude •SrchSStoum h" linclude "RepnSS.h" scatic SrchSS oum" srch - 0 // Vincludβ "πiystreain h" // db void searcher! long ] SrchSStoum SrchSStoum( RepnSS* repn ) I srch >lterate ( ) best » repn. ) Initialized main ( int argc ch r"' argv ) ( SrchSStoum -SrchSStourrϊ( ) cout se ( ios un tbuf ) delete best ιf{ argc '= 3 ) ( cerr « "Usage << argv[01 << ' sigl sig2\n" return 1 void SrchSStoum Initialize!) 1 Iterated) Signal ya yb ya read_aifc( argvll] ) yb read_aifc{ argv[2J ) void SrchSStou IterateI βhort niter J // Do SS2-dependeπt stuff beβt->Randomize() , lif DELAYS bea .score * best->Evaluate( ) , SS2Delays ss2(10) double lo * -2 fort int iter = 1, iter < niter, ιter*> ) ( double hi = 2 •else bββt->SavφForϋndo( ) , SS2Gains ss2, beβt->R*ndomizβ() ; double lo ' C, double new_βcore ■ beβt->Evaluate{) , double hi = 1 if( ne _acore > bβst_βcore ) best->Undo() lendif else best_scorβ = new_score // Start up a new searcher Idefine WINDOW TIME 0 05 ss2 SetLea ya get_βaιrplιng_frequency( ) WINDO _TIHE ) ReρnSS2 βet_SS2 { fcss2 ) Representation* SrchSStoum get_best ( ) RepnSS2 set_bounds ( lo hi lo hi ) RepnSS2* best = new RepnSS} { ) t return best. srch - new SrchSStoum{ best ) // Start the graphics double SrchSStoum get_best_score( ) Idefine MARKER_DIM 0 01 Idefine MARKER_ALT 0 001 return best_score InventorSS2 invss21 tss2 lo hi 10 lo hi 20 ) ) invss2 allocate_squaresets( 1 ) ιnvss2 register_squareset { 0 1, // - - fcbeβt, // Test main MARKER_DIM, MARKER ^ ALT // -- 0 1, 1, 0 1 SoKβyboardEvent H ) Iifdef TEST // Run) Idefine DELAYS 0 lif DELAYS invss2 max_catchup = 100 li DELAYS lend linclude B SS2Delaya h" ιnvss2 Ru { fcya tyb else searcher 100 linclude "SS2Gains h" new InventorWindσw("SS2") ) •endif linclude "myatreaiπ h" return 0 linclude *InventorSS2 h"

Claims: What Is Claimed Is 1 A method of determining a set of a plurality of signal parameters for use in an adaptive filter signal processor to process a plurality of input signals to generate a plurality of processed signals, said method comprising a) generating a fixed plurality of sets, b) storing said fixed plurality of sets, c) generating a plurality of cumulative performance values, with a cumulative performance value corresponding to each of said fixed plurality of sets, d) comparing said plurality of cumulative performance values, e) choosing one of said plurality of cumulative performance values, based upon said comparison, f) processing said plurality of input signals for a duration of time using one set, corresponding to said chosen one cumulative performance value, from said stored fixed plurality of sets to generate the plurality of processed signals, g) generating a new set of a plurality of signal parameters, h) generating a plurality of cumulative performance values for said new set and for each of said stored fixed plurality of sets, 0 comparing said plurality of cumulative performance values generated in step ( ), j) choosing one of said plurality of cumulative performance values generated in step (h), based upon the comparing step of (l), ) based upon the comparing step of (l), either i) replacing one of said stored fixed plurality of sets, by said new set, or u) deleting said new set, I) processing said plurality of input signals for a duration of time using one set, corresponding to said chosen one cumulative performance value, from said stored fixed plurality of sets to generate the plurality of processed signals, and m) periodically reverting to steps (g)-(I) 2 The method of claim 1 , wherein said generating step (h) comprising arithmetically combining random values from a pseudorandom number generator, one set in said plurality of sets, and recent values in said plurality of input signals 3 The method of claim 1 wherein said comparing step (i) compares the cumulative performance value of said new set with the cumulative performance values of one of said stored fixed plurality of sets having a least performance value, and wherein said replacing step (k)(ι) replaces one of said stored fixed plurality of sets having said least performance value 4 The method of claim 1 wherein said generating step (h) further comprises generating an initial cumulative performance value for said new set by subtracting a fixed value from a cumulative performance value of one of said stored fixed plurality of sets having the greatest cumulative performance value, and wherein said choosing step (j) chooses one of said plurality of cumulative performance values generated in step (h) having the largest cumulative performance value 5 The method of claims 1-4 wherein said generating steps of (c) and (h) further comprises generating a plurality of instantaneous performance values, each at a different time, for each set, and combining said plurality of instantaneous performance values for each set to generate said plurality of cumulative performance values, and wherein said plurality of input signals is characterized as x*(t), x 7 (t), , x n (t), said plurality of processed signals is characterized as y j (t), y->(t), , y n (t), and each of said choosing steps (e) and (j) selects a set having associated instantaneous performance values that are highest for the sets that would generate processed signals y (t) and y (t), that are most statistically independent for different l and j 6 The method of claim 5 wherein said plurality of input signals and said plurality of processed signals are assumed to have zero mean and to fluctuate in power over a few clock cycles, and said choosing steps (e) and (j) selects a set for which the associated instantaneous performance values are highest for the sets that would generate processed sign for any i ferent indices i an j, where the operation E is a weig te average over a period of time of said value of x, (t), x 2 (t), , x n (t), y. (t),y 2 (t), , y n (t) 7 The method of claim 6 wherein said choosing step of (e) and (h) computes an instantaneous performance value in accordance with C(t) = -log( ∑ y {E[ yι (t) yj (t)]} 2 ), and wherein the logarithm computation is protected against numerical overflow 8 The method of claim 7 further comprising the step of generating said plurality of input signals b> a plurality of transducer means, based upon waves received by said plurality of transducer means from a plurality of sources 9 The method of claim 8 wherein said plurality of input signals is generated by a plurality of transducer means, based upon acoustic waves received by said plurality of transducer means from a plurality of sources 10 The method of claim 8 wherein said plurality of input signals is generated by a plurality of transducer means, based upon electromagnetic waves received by said plurality of transducer means from a plurality of sources 1 1 The method of claim 8 wherein said transducer means are directional and positioned to minimize relative propagation delays 12 The method of claim 1 1 wherein each set of said plurality of signal parameters represents values of relative gains in transduction of said waves from said waves by said plurality of transducer means 13 The method of claim 12 wherein said choosing steps (e) and (j) computes said instantaneous performance value in accordance with Y(t) = inv G * X(t), where X and Y are the vector representations of the signals x^t) and y^t), G is the matrix representation of said relative ga s, and inv G is its inverse matrix 14 The method of claim 13 wherein said choosing steps (e) and 0) comprises computing Y(t) explicitly from the currently available input signals X(t), and calculating said instantaneous performance value by operating on the values Y(t) for at least a duration of time equal to the averaging time of the expectation operator E[] 15 The method of claim 13 further comprising the step of storing said plurality of input signals X(t) for at least a duration of time equal to the averaging time of the expectation operator E[], and wherein said choosing steps (e) and 0) computes Y(t) explicitly from said storage of input signals X(t), and subsequently said instantaneous performance value 16 The method of claim 13 wherein said choosing steps (e) and (j) comprises the steps of precalculatmg, once per clock cycle, the quantity e υ = E{ x,(t) X j (t) } for every (IJ) pair, and computing said instantaneous performance value C(t) as required, from the quantities e 17 The method of claim 8 wherein said plurality of signal parameters represent the coefficients of filters that model the transfer function of propagation of said waves from said plurality of sources to said plurality of transducer means, and said choosing steps (e) and (j) computes said instantaneous performance value in accordance with Y(t) = inv H * X(t), where X and Y are the vector representations of the signals X j (t) and y,(t), H is the matrix representation of said filters, and inv H is its inverse matrix 18 The method of claim 17 wherein said choosing steps (e) and (j) comprises the steps of computing Y(t) explicitly from the currently available input signals X(t), and calculating said instantaneous performance value by operating on the values Y(t) for at least a duration of time equal to the averaging time of the expectation operator E[] plus the longest duration of said filters 19 The method of claim 17 further comprising the step of storing said plurality of input signals X(t) for at least a duration of time equal to the averaging time of the expectation operator E[] plus the longest duration of said filters, and wherein said choosing steps (e) and (j) computes Y(t) explicitly from said storage of input signals X(t). and subsequently said instantaneous performance value 20 The method of claim 17 wherein said choosing steps (e) and 0) comprises the steps of precalculat g, once per clock cycle, the quantity e 1J (k | ,k J )=E{x I (t-k ) Δt)x J (t-k J Δt)} for every (ι,j) pair, and for each such pair, for every (k,,k ) pair, and computing C(t) from the quantities e (k ,k.) every time the instantaneous performance value is required 21 The method of claim 8 wherein said transducer means are spaced apart and omnidirectional, and wherein said plurality of signal parameters represent values of relative delays in propagation of said waves from said plurality of sources to said plurality of transducer means, and wherein said choosing steps (e) and (j) computes said instantaneous performance value using the definition Y(t) = adj D* X(t), where X and Y are the vector representations of the signals x ( (t) and y (t), D is the matrix representation of said relative delays, and adj D is its adjugate matrix 22 The method of claim 21 wherein said choosing steps (e) and (j) comprises the steps of computing Y(t) explicitly from the currently available input signals X(t), and calculating said instantaneous performance value by operating on the values Y(t) for at least a duration of time equal to the averaging time of the expectation operator E[] plus the maximum value of said relative delays 23 The method of claim 21 further comprising the step of storing said plurality of input signals X(t) for at least a duration of time equal to the averaging time of the expectation operator E[] plus the maximum value of said relative delays, and wherein said choosing steps of (e) and (j) computes Y(t) explicitly from said storage of input signals X(t), and subsequently said instantaneous performance value 24 The method of claim 22 wherein said choosing steps (e) and (|) comprises the steps of precalculatmg, once per clock cycle, the quantity e (k ]; k )=E{x,(t-k ] Δt)x (t-k Δt)} for every (IJ) pair, and for each such pair, for every (k k ) pair, and computing C(t), as is required, from the quantities e (k,,k ) by implementing the necessary time delays using linear-phase, non-causal FIR filters with a truncated smc-shaped impulse response 25 A method of processing waves from a plurality of sources, comprising receiving said waves, including echoes and reverberations thereof, by a plurality of transducer means, converting said waves, including echoes and reverberations thereof from said plurality of sources, by each of said plurality of transducer means into a signal, thereby generating a plurality of signals, calculating a set of a plurality of signal parameters by generating a fixed plurality of sets of a plurality of signal parameters, storing said fixed plurality of sets, generating a plurality of instantaneous performance values for each set, with each instantaneous performance value generated at a different time, combining said plurality of instantaneous performance values for each set to produce a plurality of cumulative performance values, with a cumulative performance value produced for each set, storing said plurality of cumulative performance values, periodically generating a new set of a plurality of signal parameters, generating a new cumulative performance value, based upon said new set, comparing said new cumulative performance value to said plurality of stored cumulative performance values, based upon said comparing step, either I) replacing one of said stored plurality of cumulative performance values, by said new cumulative performance value, and the corresponding stored set by said new set, or II) deleting said new cumulative value and said new set, comparing said stored plurality of cumulative performance values, choosing one of said stored plurality of cumulative performance values, based upon said comparison, choosing one set, corresponding to said chosen one cumulative performance value, supplying said chosen one set to a first processing means for operation thereon, first processing said plurality of signals, using said chosen one set, corresponding to said chosen one cumulative performance value, to generate a plurality of first processed signals, wherein each of said first processed signals represents waves from one source, and a reduced amount of waves from other sources, and then secondly processing said plurality of first processed signals to generate a plurality of second processed signals, wherein in the presence of echoes and reverberations of said waves from said plurality of sources, each of said second processed signals represents waves from only one different source 26 The method of claim 25 wherein said transducer means are spaced apart omnidirectional microphones, and said chosen one set of plurality of signal parameters has a set of relative delay parameters associated therewith, said first processing step further comprises delaying said plurality of signals using said set of relative delay parameters and generating a plurality of delayed signals in response thereto, and combining each one of said plurality of signals with at least one of said plurality of delayed signals to produce one of said first processed signals 27 The method of claim 26 further comprising the step of filtering each of said second processed signals to generate a plurality of third processed signals 28 The method of claim 27 further comprising the step of σϋ sampling and converting each one of said plurality of signals and for supplying same to said plurality of delay means and to said plurality of combining means, as said signal 29 The method of claim 25 wherein said second processing step further comprising subtracting by a plurality of combining means one of said first processed signals received at said first input, and the sum of input signals received at a second input, to produce an output signal, said output signal being one of said plurality of second processed signals, generating a plurality of adaptive signals, with each of said adaptive signals being the output signal of one of said plurality of combining means, and supplying each of said plurality of adaptive signals to second input of said plurality of combining means other than the associated one combining means 30 The method of claim 25, wherein said step of generating a new set comprises arithmetically combining random values from a pseudorandom number generator, one set in said plurality of sets, and recent values of said plurality of input signals 31 The method of claim 30 wherein said comparing step compares the cumulative performance value of said new set with the cumulative performance value of one of said stored plurality of sets having a least cumulative performance value, and wherein said replacing step replaces one of said stored plurality of sets having said least cumulative performance value 32 The method of claim 31 wherein said replacing step further comprises generating an initial cumulative performance value for said new set by subtracting a fixed value from a cumulative performance value of one of said stored plurality of sets having the greatest cumulative performance value, and wherein said comparing step chooses one of said stored plurality of sets having the greatest cumulative performance value, for processing by said processing step 33 An adaptive filter for determining a set of a plurality of signal parameters for use in an adaptive filter signal processor to process a plurality of input signals to generate a plurality of processed signals, said filter comprising means for generating a fixed plurality of sets, means for storing said fixed plurality of sets, means for generating a plurality of cumulative performance values, based upon said fixed plurality of sets, with a cumulative performance value generated for each set, means for evaluating said plurality of cumulative performance values, and choosing one of said plurality of cumulative performance values, based upon said evaluation, and means for processing said plurality of input signals for a duration of time using one set, corresponding to said chosen one cumulative performance value, from said fixed plurality of stored sets to generate the plurality of processed signals 34 The filter of claim 33, further comprises means for periodically generating a new set of a plurality of signal parameters, means for generating a new cumulative performance value, for each set of signal parameters, including said new set generated, means for comparing said new cumulative performance value corresponding to said new set generated to said cumulative performance values for each set of signal parameters, and means for either i) replacing one of said fixed number of plurality of said sets, by said new set, or ii) deleting said new set, in response to said comparing means 35 The filter of claim 34 further comprises means for generating a plurality of instantaneous performance values for each set, with each instantaneous performance value generated at a different time, and means for combining said plurality of instantaneous performance values for each set to produce a plurality of cumulative performance values, with a cumulative performance value produced for each set 36 The filter of claim 35, wherein said means for generating a new cumulative performance value comprises means for arithmetically combining random values from a pseudorandom number generator, one set in said plurality of sets, and recent values in said plurality of input signals 37 The filter of claim 36 wherein said evaluating means compares instantaneous performance value of said new set with instantaneous performance value of one of said stored plurality of sets having a least instantaneous performance value, and wherein said replacing means replaces one of said stored plurality of sets having said least instantaneous performance value 38 The filter of claim 37 wherein said means for generating a new cumulative performance value further comprises means for generating an initial cumulative performance value for said new set and means for subtracting a fixed value from a cumulative performance value of one of said stored plurality of sets having the greatest cumulative performance value, and wherein said evaluating means comprises means for choosing one of said stored plurality of sets having the greatest cumulative performance value, for processing by said processing means 39 A signal processing system for processing waves from a plurality of sources, said system comprising a plurality of transducer means for receiving waves from said plurality of sources, including echoes and reverberations thereof and for generating a plurality of signals in response thereto, wherein each of said plurality of transducer means receives waves from said plurality of sources including echoes and reverberations thereof, and for generating one of said plurality of signals, means for calculating a set of a plurality of signal parameters, said calculating means comprising means for generating a fixed plurality of sets of signal parameters means for storing said fixed plurality of sets of signal parameters, means for generating a plurality of cumulative performance values, based upon said fixed plurality of sets of signal parameters, with a cumulative performance value generated for each set of signal parameters, means for evaluating said plurality of cumulative performance values, and choosing one of said plurality of cumulative performance values, based upon said evaluation, and one of said sets of signal parameters corresponding to said one of said plurality of cumulative performance values chosen, first processing means for receiving said plurality of signals, and said plurality of signal parameters of said set chosen for generating a plurality of first processed signals in response thereto, wherein each of said first processed signals represents waves from one source, and a reduced amount of waves from other sources, and second processing means for receiving said plurality of first processed signals and for generating a plurality of second processed signals in response thereto, wherein each of said second processed signals represents waves from only one source 40 The system of claim 39, further comprising means for generating a direction of arrival signal for said waves wherein said first processing means for generating said plurality of first processed signals, in response to said direction of arrival signal 41 The system of claim 39, wherein the number of transducer means is two, and the number of sources is two 42 The system of claim 39, wherein said transducer means are spaced apart omnidirectional microphones and wherein said chosen one set of plurality of signal parameters has a set of relative delay parameters, and said first processing means comprises a plurality of delay means, each for receiving one of said plurality of signals and using said set of relative delay parameters for generating a plurality of delayed signals in response thereto,, and a plurality of combining means, each for receiving at least one delayed signal and one of said plurality of signals and for combining said received delayed signal and said signal to produce one of said first processed signals 43 The system of claim 39 wherein said plurality of transducer means are co- located directional microphones and wherein said one of said set of signal parameters has a set of gain parameters associated therewith, and wherein first processing means comprises a plurality of multiplying means, each for receiving different ones of said plurality of signals and said set of gain parameters and for generating a scaled signal in response thereto, and a plurality of combining means, each for receiving at least one scaled signal and one of said plurality of signals and for combining said received scaled signal and said signal to produce one of said first processed signals 44 The system of claim 39, 40, 41, 42, and 43 wherein said second processing means comprises a plurality of combining means, each combining means having a first input, at least one other input, and an output, each of said combining means for receiving one of said first processed signals at said first input, an input signal at said other input, and for generating an output signal, at said output, said output signal being one of said plurality of second processed signals and is a difference between said first processed signal received at said first input and the sum of said input signal received at said other input, a plurality of adaptive filter means for generating a plurality of adaptive signals, each of said adaptive filter means for receiving said output signal from one of said plurality of combining means and for generating an adaptive signal in response thereto, and means for supplying each of said plurality of adaptive signals to one of said other input of said plurality of combining means other than the associated one combining means 45 The system of claim 44 further comprising means for filtering each of said second processed signals to generate a plurality of third processed signals 46 The system of claim 45 wherein said second processed signals are characterized by having a low frequency component and a high frequency component, and wherein said filtering means boosts the low frequency component relative to the high frequency component of said second processed signals 47 A signal processing system for processing waves from a plurality of sources said system comprising a plurality of transducer means for receiving waves from said plurality of sources, including echoes and reverberations thereof and for generating a plurality of signals in response thereto, wherein each of said plurality of transducer means receives waves from said plurality of sources including echoes and reverberations thereof, and for generating one of said plurality of signals, an adaptive filter for generating a plurality of signal parameters, said filter comprising means for generating a fixed plurality of sets of signal parameters, means for storing said fixed plurality of sets of signal parameters means for generating a plurality of cumulative performance values, based upon said fixed plurality of sets of signal parameters, with a cumulative performance value generated for each set, means for evaluating said plurality of performance values, and choosing one of said plurality of performance values and its corresponding set of plurality of signal parameters, based upon said evaluation, o4 first processing means for receiving said plurality of signals and said plurality of signal parameters and for generating a plurality of first processed signals in response thereto, wherein in the absence of echoes and reverberations of said waves from said plurality of sources, each of said first processed signals represents waves from only one different source, and second processing means for receiving said plurality of first processed signals and for generating a plurality of second processed signals in response thereto, wherein in the presence of echoes and reverberations of said waves from said plurality of sources, each of said second processed signals represents waves from only one source 48 The system of claim 47 wherein said waves are acoustic waves, and said transducer means are microphones 49 The system of claim 48 further comprising means for filtering each of said second processed signals to generate a plurality of third processed signals 50 The system of claim 49 wherein said second processed signals are characterized by having a low frequency component and a high frequency component and wherein said filtering means boosts the low frequency component relative to the high frequency component of said second processed signals 51 The system of claim 49 wherein said microphones are spaced apart omnidirectional microphones and wherein said corresponding set of signal parameters has a set of relative delay parameters associated therewith, and said first processing means comprises a plurality of delay means, each for receiving one of said plurality of signals and said set of relative delay parameters and for generating a delayed signal in response thereto, and a plurality of combining means, each for receiving at least one delayed signal and one of said plurality of signals and for combining said received delayed signal and said signal to produce one of said first processed signals 52 The system of claim 48 wherein said microphones are co-located directional microphones wherein said corresponding set of signal parameters has a set of gain parameters associated therewith, and said first processing means comprises a plurality of multiplying means, each for receiving different ones of said plurality of signals and said set of gain parameters and for generating a scaled signal in response thereto, and a plurality of combining means, each for receiving at least one scaled signal and one of said plurality of signals and for combining said received scaled signal and said signal to produce one of said first processed signals 53 The systems of claims 47, 48, 49, 50, 51 and 52, wherein said second processing means comprises a plurality of combining means, each combining means having a first input, at least one other input, and an output, each of said combining means for receiving one oo of said first processed signals at said first input, an input signal at said other input, and for generating an output signal, at said output, said output signal being one of said plurality of second processed signals and is a difference between said first processed signal received at said first input and the sum of said input signal received at said other input, a plurality of adaptive filter means for generating a plurality of adaptive signals, each of said adaptive filter means for receiving said output signal from one of said plurality of combining means and for generating an adaptive signal in response thereto, and means for supplying each of said plurality of adaptive signals to one of said other input of said plurality of combining means other than the associated one combining means 54 The system of claim 53 wherein each of said adaptive filter means comprises a tapped delay line 55 An adaptive filter signal processing system for processing waves from a plurality of sources, said system comprising a plurality of transducer means for receiving waves from said plurality of sources, including echoes and reverberation thereof and for generating a plurality of signals in response thereto, wherein each of said plurality of transducer means receives waves from said plurality of sources including echoes and reverberations thereof, and for generating one of said plurality of signals, an adaptive filter for generating a plurality of signal parameters, said filter comprising means for generating a fixed plurality of sets of signal parameters, means for storing said fixed plurality of sets signal parameters, means for generating a plurality of performance values, based upon said fixed plurality of sets of signal parameters, with a performance value generated for each set, means for evaluating said plurality of performance values, and choosing one of said plurality of performance values, and its corresponding set of signal parameters, based upon said evaluation, first processing means comprises a beamformer for receiving said plurality of signals and said plurality of signal parameters, and for generating a plurality of first processed signals in response thereto, wherein each of said first processed signals represents waves from one source, and a reduced amount of waves from other sources, and second processing means for receiving said plurality of first processed signals and for generating a plurality of second processed signals in response thereto, wherein each of said second processed signals represent waves from only one source 56 The system of claim 55, wherein said transducer means are spaced apart omnidirectional microphones and said corresponding set of signal parameters has a set of delay parameters associated therewith, and wherein said first processing means comprises a plurality of delay means, each for receiving one of said plurality of signals and said set of delay parameters, and for generating a delayed signal m response thereto, and a plurality of combining means, each for receiving at least one delayed signal and one of said plurality of signals and for combining said received delayed signal and said signal to produce one of said first processed signals 57 The system of claim 55 wherein said second processing means comprises a plurality of combining means, each combining means having a first input, at least one other input, and an output, each of said combining means for receiving one of said first processed signals at said first input, an input signal at said other input, and for generating an output signal, at said output, said output signal being one of said plurality of second processed signals and is a difference between said first processed signal received at said first input and the sum of said input signal received at said other input, a plurality of adaptive filter means for generating a plurality of adaptive signals, each of said adaptive filter means for receiving said output signal from one of said plurality of combining means and for generating an adaptive signal in response thereto, and means for supplying each of said plurality of adaptive signals to one of said other input of said plurality of combining means other than the associated one combining means 58 The system of claims 55, 56, and 57, wherein said first processing means comprises analog circuits 59 The system of claims 55, 56, and 57, wherein said second processing means comprises analog circuits 60 The system of claims 55, 56, and 57, wherein said first processing means are a part of a digital signal processor 61 The system of claims 55, 56, and 57, wherein said second processing means are a part of a digital signal processor 62 The system of claims 55, 56, and 57, wherein said first processing means are a part of a general purpose computer 63 The system of claims 55, 56, and 57, wherein said second processing means are a part of a general purpose computer 64 The system of claims 55, 56, and 57, wherein said first processing means are reconfigurable gate array circuits 65 The system of claims 55, 56, and 57, wherein said second processing means are reconfigurable gate array circuits 66 The system of claim 55, further comprising a plurality of third processing means for receiving said plurality of second processed signals and for removing frequency coloration therefrom 67 The system of claim 56 further comprising a plurality of sampling digital converting means, each for receiving a different one of said plurality of signals and for generating a digital signal, said digital signal supplied to said plurality of delay means and to said plurality of combining means, as said signal 68 The system of claims 55, 56, and 57 further comprises means for periodically generating a new set of a plurality of signal parameters, means for generating a new cumulative performance value, for each of said sets, including said new set, means for comparing said new cumulative performance values, and switch means for either 1) replacing one of said fixed number of plurality of said sets, by said new set, or n) deleting said new set, in response to said comparing means 69 The system of claim 68 further comprises means for generating a plurality of instantaneous performance values for each of said fixed plurality of sets, with each instantaneous performance value generated at a different time, means for combining said plurality of instantaneous performance values for each set to produce a plurality of cumulative performance values, with a cumulative performance value produced for each set 70 The system of claim 69, wherein said means for generating a new cumulative performance value for each of said sets, including said new set, comprises means for arithmetically combining random values from a pseudorandom number generator, one set in said plurality of sets, and recent values in said plurality of input signals 71 The system of claim 70 further comprises means for generating a plurality of instantaneous performance values for each of said sets, including said new set, with each instantaneous performance value generated at a different time, and wherein said comparing means compares instantaneous performance value of said new set with instantaneous performance value of one of said stored plurality of sets having a least instantaneous performance value, and wherein said replacing means replaces one of said stored plurality of sets having said least instantaneous performance value 72 The system of claim 68 further comprises means for generating an initial cumulative performance value for said new set and means for subtracting a fixed value from a cumulative performance value of one of said stored plurality of sets having the greatest cumulative performance value, and wherein said comparing means comprises means for choosing one of said stored plurality of sets having the greatest cumulative performance value, for processing by said processing means.

Applicants: BHADKAMKAR NEAL ASHOK, INTERVAL RESEARCH CORP, NGO JOHN THOMAS CALDERON, BHADKAMKAR, NEAL, ASHOK, INTERVAL RESEARCH CORPORATION, NGO, JOHN-THOMAS, CALDERON
Application year: 1996
Main classification: H04B15
IPC codes: G06K9, G10L21, H03H21, H04B1, H04B3, H04R3, H04R25, H04S7