# Patent

## Title
Forming beams with nulls directed at noise sources

## Abstract

A communication system (e.g., a speakerphone) includes an array of microphones, a speaker, memory and a processor. The processor may perform a virtual broadside scan on the microphone array and analyze the resulting amplitude envelope to identify acoustic source angles. Each of the source angles may be further investigated with a directed beam (e.g., a hybrid superdirective/delay-and-sum beam) to obtain a corresponding beam signal. Each source may be classified as either intelligence or noise based on an analysis of the corresponding beam signal. The processor may design a virtual beam pointed at an intelligence source and having nulls directed at one or more of the noise sources. Thus, the virtual beam may be highly sensitive to the intelligence source and insensitive to the noise sources.

## Background
CONTINUITY DATA
This application claims priority to U.S. Provisional Application No. 60/676,415, filed on Apr. 29, 2005, entitled “Speakerphone Functionality”, invented by William V. Oxford, Vijay Varadarajan and Ioannis S. Dedes, which is hereby incorporated by reference in its entirety.


BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention relates generally to the field of communication devices and, more specifically, to speakerphones.
2. Description of the Related Art
Speakerphones may be used to mediate conversations between local persons and remote persons. A speakerphone may have a microphone to pick up the voices of the local persons (in the environment of the speakerphone), and, a speaker to audibly present a replica of the voices of the remote persons. While speakerphones may allow a number of people to participate in a conference call, there are a number of problems associated with the use of speakerphones.
The microphone picks up not only the voices of the local persons but also the signal transmitted from the speaker and its reflections off of acoustically reflective structures in the environment). To make the received signal (from the microphone) more intelligible the speakerphone may attempt to perform acoustic echo cancellation. Any means for increasing the efficiency and effectiveness of acoustic echo cancellation is greatly to be desired.
Sometimes one or more of the local persons may be speaking at the same time. Thus, it would be desirable to have some means of extracting the voices of the one or more persons from ambient noise and sending to the remote speakerphone a signal representing these one or more extracted voices.
Sometimes a noise source such as a fan may interfere with the intelligibility of the voices of the local persons. Furthermore, a noise source may be positioned near one of the local persons (e.g., near in angular position as perceived by the speakerphone). Thus, it would desirable to have a means for suppressing noise sources that are situated close to talking persons.
It is difficult for administrators to maintain control on the use of communication devices when users may move the devices without informing the administrator. Thus, there exists a need for a system and mechanism capable of locating the communication devices and/or detecting if (and when) the devices are moved.
The well known proximity effect can make a talker who is close to a directional microphone have much more low-frequency boost than one that is farther away from the same directional microphone. There exist a need for a mechanism capable of compensating for the proximity effect in a speakerphone (or other communication device).
When a person talks, his/her voice echoes off of acoustically reflective structures in the room. The microphone picks up not only the direct path transmission from the talker to the microphone, but the echoes as well. Thus, there exists a need for mechanisms capable of canceling these echoes.
A speakerphone may send audio information to/from other devices using standard codecs. Thus, there exists a need for mechanisms of capable of increasing the performance of data transfers between the speakerphone and other devices, especially when using standard codecs.
SUMMARY
In one set of embodiments, a method for capturing a source of acoustic intelligence and excluding one or more noise sources may involve:

    
    
        (a) identifying angles of acoustic sources from peaks in an amplitude envelope, wherein the amplitude envelope corresponds to an output of a virtual broadside scan on blocks of input signal samples, one block from each microphone in an array of microphones;
        (b) for each of the source angles, operating on the input signal blocks with a directed beam pointed in the direction of the source angle to obtain a corresponding beam signal;
        (c) classifying each source as intelligence or noise based on analysis of spectral characteristics of the corresponding beam signal, wherein said classifying results in one or more of the sources being classified as intelligence and one or more of the sources being classified as noise;
        (d) generating parameters for a virtual beam, pointed at a first of the intelligence sources, and having one or more nulls pointed at least at a subset of the one or more noise sources;
        (e) operating on the input signal blocks with the virtual beam to obtain an output signal;
        (f) transmitting the output signal to one or more remote devices.
    
    


The actions (a) through (f) may be performed by one or more processors in a system such as speakerphone, a video conferencing system, a surveillance system, etc. For example, a speakerphone may perform actions (a) through (f) during the course of a conversation.
The one or more remote devices may include devices such as speakerphones, telephones, cell phones, videoconferencing systems, etc. A remote device may provide the output signal to a speaker so that one or more persons situated near the remote device may listen to the output signal. Because the output signal is obtained from a virtual beam pointed at the intelligence source and having one or more nulls pointed at noise sources, the output signal may be a quality representation of acoustic signals produced by the intelligence source (e.g., a talker).
The method may further involve selecting the subset of noise sources by identifying a number of the one or more noise sources whose corresponding beam signals have the highest energies.
In one embodiment, the method may further involve performing the virtual broadside scan on the blocks of input signal samples to generate the amplitude envelope. The virtual broadside scan may be performed using the Davies Transformation (e.g., repeated applications of the Davies Transformation).
The virtual broadside scan and actions (a) through (f) may be repeated on different sets of input signal sample blocks from the microphone array, e.g., in order to track a talker as he/she moves, or to adjust the nulls in the virtual beam in response to movement of noise sources.
The microphones of said array may be arranged in any of various configurations, e.g., on a circle, an ellipse, a square or rectangle, on a 2D grid such as rectangular grid or a hexagonal grid, in a 3D pattern such as on the surface of a hemisphere, etc.
The microphones of said array may be nominally omni-directional microphones. However, directional microphones may be employed as well.
In one embodiment, the action (a) may include:

    
    
        estimating an angular position of a first peak in the amplitude envelope;
        constructing a shifted and scaled version of a virtual broadside response pattern using the angular position and an amplitude of the first peak;
        subtracting the shifted and scaled version from the amplitude envelope to obtain an update to the amplitude envelope.
    
    


Furthermore, the method may also include repeating the actions of estimating, constructing, and subtracting on the updated amplitude envelope in order to identify additional peaks.
In another set of embodiments, a method for capturing a source of acoustic intelligence and excluding one or more noise sources may involve:

    
    
        (a) identifying angles of acoustic sources from peaks in an amplitude envelope, wherein the amplitude envelope corresponds to an output of a virtual broadside scan on blocks of input signal samples, one block from each microphone in an array of microphones;
        (b) for each of the source angles, operating on the input signal blocks with a directed beam pointed in the direction of the source angle to obtain a corresponding beam signal;
        (c) classifying each source as intelligence or noise based on analysis of spectral characteristics of the corresponding beam signal, wherein said classifying results in one or more of the sources being classified as intelligence and one or more of the sources being classified as noise;
        (d) generating parameters for one or more virtual beams so that each of the one or more virtual beams is pointed at a corresponding one of the intelligence sources and has one or more nulls pointed at least at a subset of the one or more noise sources;
        (e) operating on the input signal blocks with the one or more virtual beams to obtain corresponding output signals; and
        (f) generating a resultant signal from the one or more output signals.
    
    


The method may further involve performing the virtual broadside scan on the blocks of input signal samples to generate the amplitude envelope.
The virtual broadside scan and actions (a) through (f) may be repeated on different sets of input signal sample blocks from the microphone array, e.g., in order to track talkers as they move, to add virtual beams as persons start talking, to drop virtual beams as persons go silent, to adjust the nulls in virtual beams as noise sources move, to add nulls as noise sources appear, to remove nulls as noise sources go silent.
In some embodiments, the method may further involve selecting the subset of noise sources by identifying a number of the noise sources whose corresponding beam signals have the highest energies.
Any of the various method embodiments disclosed herein (or any combinations thereof or portions thereof) may be implemented in terms of program instructions. The program instructions may be stored in (or on) any of various memory media. A memory medium is a medium configured for the storage of information. Examples of memory media include various kinds of magnetic media (e.g., magnetic tape or magnetic disk); various kinds of optical media (e.g., CD-ROM); various kinds of semiconductor RAM and ROM; various media based on the storage of electrical charge or other physical quantities; etc.
Furthermore, various embodiments of a system including a memory and a processor (or set of processors) are contemplated, where the memory is configured to store program instructions and the processor is configured to read and execute the program instructions from the memory, where the program instructions are configured to implement any of the method embodiments described herein (or combinations thereof or portions thereof). For example, in one embodiment, the program instructions are configured to implement:

    
    
        (a) identifying angles of acoustic sources from peaks in an amplitude envelope, wherein the amplitude envelope corresponds to an output of a virtual broadside scan on blocks of input signal samples, one block from each microphone in an array of microphones;
        (b) for each of the source angles, operating on the input signal blocks with a directed beam pointed in the direction of the source angle to obtain a corresponding beam signal;
        (c) classifying each source as intelligence or noise based on analysis of spectral characteristics of the corresponding beam signal, wherein said classifying results in one or more of the sources being classified as intelligence and one or more of the sources being classified as noise;
        (d) generating parameters for a virtual beam, pointed at a first of the intelligence sources, and having one or more nulls pointed at least at a subset of the one or more noise sources;
        (e) operating on the input signal blocks with the virtual beam to obtain an output signal;
        (f) transmitting the output signal to one or more remote devices.
    
    


The microphones of said array may be arranged in any of various configurations, e.g., on a circle, an ellipse, a square or rectangle, on a 2D grid such as rectangular grid or a hexagonal grid, in a 3D pattern such as on the surface of a hemisphere, etc.
The microphones of the microphone array may be nominally omni-directional microphones. However, directional microphones may be employed as well.
In some embodiment, the system may also include the array of microphones. For example, an embodiment of the system targeted for realization as a speakerphone may include the microphone array.
Embodiments are contemplated where actions (a) through (g) are partitioned among a set of processors in order to increase computational throughput.



BRIEF DESCRIPTION OF THE DRAWINGS
The following detailed description makes reference to the accompanying drawings, which are now briefly described.
FIG. 1A illustrates communication system including two speakerphones coupled through a communication mechanism.
FIG. 1B illustrates one set of embodiments of a speakerphone system 200.
FIG. 2 illustrates a direct path transmission and three examples of reflected path transmissions between the speaker 255 and microphone 201.
FIG. 3 illustrates a diaphragm of an electret microphone.
FIG. 4A illustrates the change over time of a microphone transfer function.
FIG. 4B illustrates the change over time of the overall transfer function due to changes in the properties of the speaker over time under the assumption of an ideal microphone.
FIG. 5 illustrates a lowpass weighting function L(ω).
FIG. 6A illustrates one set of embodiments of a method for performing offline self calibration.
FIG. 6B illustrates one set of embodiments of a method for performing “live” self calibration.
FIG. 7 illustrates one embodiment of speakerphone having a circular array of microphones.
FIG. 8 illustrates an example of design parameters associated with the design of a beam B(i).
FIG. 9 illustrates two sets of three microphones aligned approximately in a target direction, each set being used to form a virtual beam.
FIG. 10 illustrates three sets of two microphones aligned in a target direction, each set being used to form a virtual beam.
FIG. 11 illustrates two sets of four microphones aligned in a target direction, each set being used to form a virtual beam.
FIG. 12A illustrates one set of embodiments of a method for forming a highly directed beam using at least an integer-order superdirective beam and a delay-and-sum beam.
FIG. 12B illustrates one set of embodiments of a method for forming a highly directed beam using at least a first virtual beam and a second virtual beam in different frequency ranges.
FIG. 12C illustrates one set of embodiments of a method for forming a highly directed beam using one or more virtual beams of a first type and one or more virtual beams of a second type.
FIG. 13 illustrates one set of embodiments of a method for configured a system having an array of microphones, a processor and a method.
FIG. 14 illustrates one embodiment of a method for enhancing the performance of acoustic echo cancellation.
FIG. 15A illustrates one embodiment of a method for tracking one or more talkers with highly directed beams.
FIG. 15B illustrates a virtual broadside array formed from a circular array of microphones.
FIG. 16A illustrates one embodiment of a method for generating a virtual beam that is sensitive in the direction of an intelligence source and insensitive in the directions of noise sources in the environment.
FIG. 16B illustrates another embodiment of a method for generating a virtual beam that is sensitive in the direction of an intelligence source and insensitive in the directions of noise sources in the environment.
FIG. 16C illustrates one embodiment of a method for generating one or more virtual beams sensitive to one or more intelligence sources and insensitive to one or more noise sources.
FIG. 16D illustrates one embodiment of a system having multiple input channels.
FIGS. 17A and 17B illustrates embodiments of methods for generating and exploiting 3D models of a room environment.
FIG. 18 illustrates one embodiment of a method for compensating for the proximity effect.
FIG. 19 illustrates one embodiment of a method for performing dereverberation.
FIGS. 20A and 20B illustrate embodiments of methods for send and receiving data using an audio codec.



While the invention is described herein by way of example for several embodiments and illustrative drawings, those skilled in the art will recognize that the invention is not limited to the embodiments or drawings described. It should be understood, that the drawings and detailed description thereto are not intended to limit the invention to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope of the present invention as defined by the appended claims. The headings used herein are for organizational purposes only and are not meant to be used to limit the scope of the description or the claims. As used throughout this application, the word “may” is used in a permissive sense (i.e., meaning having the potential to), rather than the mandatory sense (i.e., meaning must). Similarly, the words “include”, “including”, and “includes” mean including, but not limited to.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
Incorporations by Reference


    U.S. Provisional Application No. 60/676,415, filed on Apr. 29, 2005, entitled “Speakerphone Functionality”, invented by William V. Oxford, Vijay Varadarajan and Ioannis S. Dedes, is hereby incorporated by reference in its entirety.
    U.S. patent application Ser. No. 11/251,084, filed on Oct. 14, 2005, entitled “Speakerphone”, invented by William V. Oxford, is hereby incorporated by reference in its entirety.
    U.S. patent application Ser. No. 11/108,341, filed on Apr. 18, 2005, entitled “Speakerphone Self Calibration and Beam Forming”, invented by William V. Oxford and Vijay Varadarajan, is hereby incorporated by reference in its entirety.
    U.S. Provisional Patent Application titled “Video Conferencing Speakerphone”, Ser. No. 60/619,212, which was filed Oct. 15, 2004, whose inventors are Michael L. Kenoyer, Craig B. Malloy, and Wayne E. Mock is hereby incorporated by reference in its entirety.
    U.S. Provisional Patent Application titled “Video Conference Call System”, Ser. No. 60/619,210, which was filed Oct. 15, 2004, whose inventors are Michael J. Burkett, Ashish Goyal, Michael V. Jenkins, Michael L. Kenoyer, Craig B. Malloy, and Jonathan W. Tracey is hereby incorporated by reference in its entirety.
    U.S. Provisional Patent Application titled “High Definition Camera and Mount”, Ser. No. 60/619,227, which was filed Oct. 15, 2004, whose inventors are Michael L. Kenoyer, Patrick D. Vanderwilt, Paul D. Frey, Paul Leslie Howard, Jonathan I. Kaplan, and Branko Lukic, is hereby incorporated by reference in its entirety.
    U.S. patent application titled “Videoconferencing System Transcoder”, Ser. No. 11/252,238, which was filed Oct. 17, 2005, whose inventors are Michael L. Kenoyer and Michael V. Jenkins, is hereby incorporated by reference in its entirety as though fully and completely set forth herein.
    U.S. patent application titled “Speakerphone Supporting Video and Audio Features”, Ser. No. 11/251,086, which was filed Oct. 14, 2005, whose inventors are Michael L. Kenoyer, Craig B. Malloy and Wayne E. Mock is hereby incorporated by reference in its entirety as though fully and completely set forth herein.
    U.S. patent application titled “High Definition Camera Pan Tilt Mechanism”, Ser. No. 11/251,083, which was filed Oct. 14, 2005, whose inventors are Michael L. Kenoyer, William V. Oxford, Patrick D. Vanderwilt, Hans-Christoph Haenlein, Branko Lukic and Jonathan I. Kaplan, is hereby incorporated by reference in its entirety as though fully and completely set forth herein.

List of Acronyms Used Herein

    DDR SDRAM=Double-Data-Rate Synchronous Dynamic RAM
    DRAM=Dynamic RAM
    FIFO=First-In First-Out Buffer
    FIR=Finite Impulse Response
    FFT=Fast Fourier Transform
    Hz=Hertz
    IIR=Infinite Impulse Response
    ISDN=Integrated Services Digital Network
    kHz=kiloHertz
    PSTN=Public Switched Telephone Network
    RAM=Random Access Memory
    RDRAM=Rambus Dynamic RAM
    ROM=Read Only Memory
    SDRAM=Synchronous Dynamic Random Access Memory
    SRAM=Static RAM


A communication system may be configured to facilitate voice communication between participants (or groups of participants) who are physically separated as suggested by FIG. 1A. The communication system may include a first speakerphone SP1 and a second speakerphone SP2 coupled through a communication mechanism CM. The communication mechanism CM may be realized by any of a wide variety of well known communication technologies. For example, communication mechanism CM may be the PSTN (public switched telephone network) or a computer network such as the Internet.
Speakerphone Block Diagram
FIG. 1B illustrates a speakerphone 200 according to one set of embodiments. The speakerphone 200 may include a processor 207 (or a set of processors), memory 209, a set 211 of one or more communication interfaces, an input subsystem and an output subsystem.
The processor 207 is configured to read program instructions which have been stored in memory 209 and to execute the program instructions in order to enact any of the various methods described herein.
Memory 209 may include any of various kinds of semiconductor memory or combinations thereof. For example, in one embodiment, memory 209 may include a combination of Flash ROM and DDR SDRAM.
The input subsystem may include a microphone 201 (e.g., an electret microphone), a microphone preamplifier 203 and an analog-to-digital (AID) converter 205. The microphone 201 receives an acoustic signal A(t) from the environment and converts the acoustic signal into an electrical signal u(t). (The variable t denotes time.) The microphone preamplifier 203 amplifies the electrical signal u(t) to produce an amplified signal x(t). The A/D converter samples the amplified signal x(t) to generate digital input signal X(k). The digital input signal X(k) is provided to processor 207.
In some embodiments, the A/D converter may be configured to sample the amplified signal x(t) at least at the Nyquist rate for speech signals. In other embodiments, the A/D converter may be configured to sample the amplified signal x(t) at least at the Nyquist rate for audio signals.
Processor 207 may operate on the digital input signal X(k) to remove various sources of noise, and thus, generate a corrected microphone signal Z(k). The processor 207 may send the corrected microphone signal Z(k) to one or more remote devices (e.g., a remote speakerphone) through one or more of the set 211 of communication interfaces.
The set 211 of communication interfaces may include a number of interfaces for communicating with other devices (e.g., computers or other speakerphones) through well-known communication media. For example, in various embodiments, the set 211 includes a network interface (e.g., an Ethernet bridge), an ISDN interface, a PSTN interface, or, any combination of these interfaces.
The speakerphone 200 may be configured to communicate with other speakerphones over a network (e.g., an Internet Protocol based network) using the network interface. In one embodiment, the speakerphone 200 is configured so multiple speakerphones, including speakerphone 200, may be coupled together in a daisy chain configuration.
The output subsystem may include a digital-to-analog (D/A) converter 240, a power amplifier 250 and a speaker 225. The processor 207 may provide a digital output signal Y(k) to the D/A converter 240. The D/A converter 240 converts the digital output signal Y(k) to an analog signal y(t). The power amplifier 250 amplifies the analog signal y(t) to generate an amplified signal v(t). The amplified signal v(t) drives the speaker 225. The speaker 225 generates an acoustic output signal in response to the amplified signal v(t).
Processor 207 may receive a remote audio signal R(k) from a remote speakerphone through one of the communication interfaces and mix the remote audio signal R(k) with any locally generated signals (e.g., beeps or tones) in order to generate the digital output signal Y(k). Thus, the acoustic signal radiated by speaker 225 may be a replica of the acoustic signals (e.g., voice signals) produced by remote conference participants situated near the remote speakerphone.
In one alternative embodiment, the speakerphone may include circuitry external to the processor 207 to perform the mixing of the remote audio signal R(k) with any locally generated signals.
In general, the digital input signal X(k) represents a superposition of contributions due to:

    
    
        acoustic signals (e.g., voice signals) generated by one or more persons (e.g., conference participants) in the environment of the speakerphone 200, and reflections of these acoustic signals off of acoustically reflective surfaces in the environment;
        acoustic signals generated by one or more noise sources (such as fans and motors, automobile traffic and fluorescent light fixtures) and reflections of these acoustic signals off of acoustically reflective surfaces in the environment; and
        the acoustic signal generated by the speaker 225 and the reflections of this acoustic signal off of acoustically reflective surfaces in the environment.
    
    


Processor 207 may be configured to execute software including an acoustic echo cancellation (AEC) module. The AEC module attempts to estimate the sum C(k) of the contributions to the digital input signal X(k) due to the acoustic signal generated by the speaker and a number of its reflections, and, to subtract this sum C(k) from the digital input signal X(k) so that the corrected microphone signal Z(k) may be a higher quality representation of the acoustic signals generated by the local conference participants.
In one set of embodiments, the AEC module may be configured to perform many (or all) of its operations in the frequency domain instead of in the time domain. Thus, the AEC module may:

    
    
        estimate the Fourier spectrum C(ω) of the signal C(k) instead of the signal C(k) itself, and
        subtract the spectrum C(ω) from the spectrum X(ω) of the input signal X(k) in order to obtain a spectrum Z(ω).

An inverse Fourier transform may be performed on the spectrum Z(ω) to obtain the corrected microphone signal Z(k). As used herein, the “spectrum” of a signal is the Fourier transform (e.g., the FFT) of the signal.

    
    


In order to estimate the spectrum C(ω), the acoustic echo cancellation module may utilize:

    
    
        the spectrum Y(ω) of a set of samples of the output signal Y(k), and
        modeling information IM describing the input-output behavior of the system elements (or combinations of system elements) between the circuit nodes corresponding to signals Y(k) and X(k).
    
    


For example, in one set of embodiments, the modeling information IM may include:

    
    
        (a) a gain of the D/A converter 240;
        (b) a gain of the power amplifier 250;
        (c) an input-output model for the speaker 225;
        (d) parameters characterizing a transfer function for the direct path and reflected path transmissions between the output of speaker 225 and the input of microphone 201;
        (e) a transfer function of the microphone 201;
        (f) a gain of the preamplifier 203;
        (g) a gain of the A/D converter 205.

The parameters (d) may include attenuation coefficients and propagation delay times for the direct path transmission and a set of the reflected path transmissions between the output of speaker 225 and the input of microphone 201. FIG. 2 illustrates the direct path transmission and three reflected path transmission examples.

    
    


In some embodiments, the input-output model for the speaker may be (or may include) a nonlinear Volterra series model, e.g., a Volterra series model of the form:




  
    
      
        
          
            
              f
              S
            
            ⁡
            
              (
              k
              )
            
          
          =
          
            
              
                ∑
                
                  i
                  =
                  0
                
                
                  
                    N
                    a
                  
                  -
                  1
                
              
              ⁢
              
                
                  a
                  i
                
                ⁢
                
                  v
                  ⁡
                  
                    (
                    
                      k
                      -
                      i
                    
                    )
                  
                
              
            
            +
            
              
                ∑
                
                  i
                  =
                  0
                
                
                  
                    N
                    b
                  
                  -
                  1
                
              
              ⁢
              
                
                  ∑
                  
                    j
                    =
                    0
                  
                  
                    
                      M
                      b
                    
                    -
                    1
                  
                
                ⁢
                
                  
                    b
                    ij
                  
                  ⁢
                  
                    
                      v
                      ⁡
                      
                        (
                        
                          k
                          -
                          i
                        
                        )
                      
                    
                    ·
                    
                      v
                      ⁡
                      
                        (
                        
                          k
                          -
                          j
                        
                        )
                      
                    
                  
                
              
            
          
        
        ,
      
    
    
      
        (
        1
        )
      
    
  




where v(k) represents a discrete-time version of the speaker's input signal, where fS(k) represents a discrete-time version of the speaker's acoustic output signal, where Na, Nb and Mb are positive integers. For example, in one embodiment, Na=8, Nb=3 and Mb=2. Expression (1) has the form of a quadratic polynomial. Other embodiments using higher order polynomials are contemplated.

In alternative embodiments, the input-output model for the speaker is a transfer function (or equivalently, an impulse response).
In one embodiment, the AEC module may compute the compensation spectrum C(ω) using the output spectrum Y(ω) and the modeling information IM (including previously estimated values of the parameters (d)). Furthermore, the AEC module may compute an update for the parameters (d) using the output spectrum Y(ω), the input. spectrum X(ω), and at least a subset of the modeling information IM (possibly including the previously estimated values of the parameters (d)).
In another embodiment, the AEC module may update the parameters (d) before computing the compensation spectrum C(ω).
In those embodiments where the speaker input-output model is a nonlinear model (such as a Volterra series model), the AEC module may be able to converge more quickly and/or achieve greater accuracy in its estimation of the attenuation coefficients and delay times (of the direct path and reflected paths) because it will have access to a more accurate representation of the actual acoustic output of the speaker than in those embodiments where a linear model (e.g., a transfer function) is used to model the speaker.
In some embodiments, the AEC module may employ one or more computational algorithms that are well known in the field of echo cancellation.
The modeling information IM (or certain portions of the modeling information IM) may be initially determined by measurements performed at a testing facility prior to sale or distribution of the speakerphone 200. Furthermore, certain portions of the modeling information IM (e.g., those portions that are likely to change over time) may be repeatedly updated based on operations performed during the lifetime of the speakerphone 200.
In one embodiment, an update to the modeling information IM may be based on samples of the input signal X(k) and samples of the output signal Y(k) captured during periods of time when the speakerphone is not being used to conduct a conversation.
In another embodiment, an update to the modeling information IM may be based on samples of the input signal X(k) and samples of the output signal Y(k) captured while the speakerphone 200 is being used to conduct a conversation.
In yet another embodiment, both kinds of updates to the modeling information IM may be performed.
Updating Modeling Information based on Offline Calibration Experiments
In one set of embodiments, the processor 207 may be programmed to update the modeling information IM during a period of time when the speakerphone 200 is not being used to conduct a conversation.
The processor 207 may wait for a period of relative silence in the acoustic environment. For example, if the average power in the input signal X(k) stays below a certain threshold for a certain minimum amount of time, the processor 207 may reckon that the acoustic environment is sufficiently silent for a calibration experiment. The calibration experiment may be performed as follows.
The processor 207 may output a known noise signal as the digital output signal Y(k). In some embodiments, the noise signal may be a burst of maximum-length-sequence noise, followed by a period of silence. For example, in one embodiment, the noise signal burst may be approximately 2-2.5 seconds long and the following silence period may be approximately 5 seconds long. In some embodiments, the noise signal may be submitted to one or more notch filters (e.g., sharp notch filters), in order to null out one or more frequencies known to causes resonances of structures in the speakerphone, prior to transmission from the speaker.
The processor 207 may capture a block BX of samples of the digital input signal X(k) in response to the noise signal transmission. The block BX may be sufficiently large to capture the response to the noise signal and a sufficient number of its reflections for a maximum expected room size.
The block BX of samples may be stored into a temporary buffer, e.g., a buffer which has been allocated in memory 209.
The processor 207 computes a Fast Fourier Transform (FFT) of the captured block BX of input signal samples X(k) and an FFT of a corresponding block BY of samples of the known noise signal Y(k), and computes an overall transfer function H(ω) for the current experiment according to the relation

H(ω)=FFT(BX)/FFT(BY),   (2)

where ω denotes angular frequency. The processor may make special provisions to avoid division by zero.

The processor 207 may operate on the overall transfer function H(ω) to obtain a midrange sensitivity value s1 as follows.
The midrange sensitivity value si may be determined by computing an A-weighted average of the magnitude of the overall transfer function H(ω):

s1=SUM[|H(ω)|A(ω), ω ranging from zero to π].   (3)

In some embodiments, the weighting function A(ω) may be designed so as to have low amplitudes:

    
    
        at low frequencies where changes in the overall transfer function due to changes in the properties of the speaker are likely to be expressed, and
        at high frequencies where changes in the overall transfer function due to material accumulation on the microphone diaphragm are likely to be expressed.
    
    


The diaphragm of an electret microphone is made of a flexible and electrically non-conductive material such as plastic (e.g., Mylar) as suggested in FIG. 3. Charge (e.g., positive charge) is deposited on one side of the diaphragm at the time of manufacture. A layer of metal may be deposited on the other side of the diaphragm.
As the microphone ages, the deposited charge slowly dissipates, resulting in a gradual loss of sensitivity over all frequencies. Furthermore, as the microphone ages material such as dust and smoke accumulates on the diaphragm, making it gradually less sensitive at high frequencies. The summation of the two effects implies that the amplitude of the microphone transfer function |Hmic(ω)| decreases at all frequencies, but decreases faster at high frequencies as suggested by FIG. 4A. If the speaker were ideal (i.e., did not change its properties over time), the overall transfer function H(ω) would manifest the same kind of changes over time.
The speaker 225 includes a cone and a surround coupling the cone to a frame. The surround is made of a flexible material such as butyl rubber. As the surround ages it becomes more compliant, and thus, the speaker makes larger excursions from its quiescent position in response to the same current stimulus. This effect is more pronounced at lower frequencies and negligible at high frequencies. In addition, the longer excursions at low frequencies implies that the vibrational mechanism of the speaker is driven further into the nonlinear regime. Thus, if the microphone were ideal (i.e., did not change its properties over time), the amplitude of the overall transfer function H(ω) in expression (2) would increase at low frequencies and remain stable at high frequencies, as suggested by FIG. 4B.
The actual change to the overall transfer function H(ω) over time is due to a combination of affects including the speaker aging mechanism and the microphone aging mechanism just described.
In addition to the sensitivity value s1, the processor 207 may compute a lowpass sensitivity value s2 and a speaker related sensitivity s3 as follows. The lowpass sensitivity factor s2 may be determined by computing a lowpass weighted average of the magnitude of the overall transfer function H(ω):

s2=SUM[|H(ω)|L(ω), ω ranging from zero to π].   (4)

The lowpass weighting function L(ω) equals is equal (or approximately equal) to one at low frequencies and transitions towards zero in the neighborhood of a cutoff frequency. In one embodiment, the lowpass weighting function may smoothly transition to zero as suggested in FIG. 5.
The processor 207 may compute the speaker-related sensitivity value s3 according to the expression:

s3=s2−s1.

The processor 207 may maintain sensitivity averages s1, s2 and s3 corresponding to the sensitivity values s1, s2 and s3 respectively. The average Si, i=1, 2, 3, represents the average of the sensitivity value si from past performances of the calibration experiment.
Furthermore, processor 207 may maintain averages Ai and Bij corresponding respectively to the coefficients ai and bij in the Volterra series speaker model. After computing sensitivity value s3, the processor may compute current estimates for the coefficients bij by performing an iterative search. Any of a wide variety of known search algorithms may be used to perform this iterative search.
In each iteration of the search, the processor may select values for the coefficients bij and then compute an estimated input signal XEST(k) based on:

    
    
        the block BY of samples of the transmitted noise signal Y(k);
        the gain of the D/A converter 240 and the gain of the power amplifier 250;
        the modified Volterra series expression
    
    






  
    
      
        
          
            
              f
              S
            
            ⁡
            
              (
              k
              )
            
          
          =
          
            
              c
              ⁢
              
                
                  ∑
                  
                    i
                    =
                    0
                  
                  
                    
                      N
                      a
                    
                    -
                    1
                  
                
                ⁢
                
                  
                    A
                    i
                  
                  ⁢
                  
                    v
                    ⁡
                    
                      (
                      
                        k
                        -
                        i
                      
                      )
                    
                  
                
              
            
            +
            
              
                ∑
                
                  i
                  =
                  0
                
                
                  
                    N
                    b
                  
                  -
                  1
                
              
              ⁢
              
                
                  ∑
                  
                    j
                    =
                    0
                  
                  
                    
                      M
                      b
                    
                    -
                    1
                  
                
                ⁢
                
                  
                    b
                    ij
                  
                  ⁢
                  
                    
                      v
                      ⁡
                      
                        (
                        
                          k
                          -
                          i
                        
                        )
                      
                    
                    ·
                    
                      v
                      ⁡
                      
                        (
                        
                          k
                          -
                          j
                        
                        )
                      
                    
                  
                
              
            
          
        
        ,
      
    
    
      
        (
        5
        )
      
    
  




    
    
        where c is given by c=s3/S3;
        the parameters characterizing the transfer function for the direct path and reflected path transmissions between the output of speaker 225 and the input of microphone 201;
        the transfer function of the microphone 201;
        the gain of the preamplifier 203; and
        the gain of the A/D converter 205.
    
    


The processor may compute the energy of the difference between the estimated input signal XEST(k) and the block BX of actually received input samples X(k). If the energy value is sufficiently small, the iterative search may terminate. If the energy value is not sufficiently small, the processor may select a new set of values for the coefficients bij, e.g., using knowledge of the energy values computed in the current iteration and one or more previous iterations.
The scaling of the linear terms in the modified Volterra series expression (5) by factor c serves to increase the probability of successful convergence of the bij.
After having obtained final values for the coefficients bij, the processor 207 may update the average values Bij according to the relations:

Bij←kijBij+(1−kij)bij,   (6)

where the values kij are positive constants between zero and one.

In one embodiment, the processor 207 may update the averages Ai according to the relations:

Ai←giAi+(1−gi)(cAi),   (7)

where the values gi are positive constants between zero and one.

In an alternative embodiment, the processor may compute current estimates for the Volterra series coefficients as based on another iterative search, this time using the Volterra expression:




  
    
      
        
          
            f
            S
          
          ⁡
          
            (
            k
            )
          
        
        =
        
          
            
              ∑
              
                i
                =
                0
              
              
                
                  N
                  a
                
                -
                1
              
            
            ⁢
            
              
                a
                i
              
              ⁢
              
                v
                ⁡
                
                  (
                  
                    k
                    -
                    i
                  
                  )
                
              
            
          
          +
          
            
              ∑
              
                i
                =
                0
              
              
                
                  N
                  b
                
                -
                1
              
            
            ⁢
            
              
                ∑
                
                  j
                  =
                  0
                
                
                  
                    M
                    b
                  
                  -
                  1
                
              
              ⁢
              
                
                  B
                  ij
                
                ⁢
                
                  
                    v
                    ⁡
                    
                      (
                      
                        k
                        -
                        i
                      
                      )
                    
                  
                  ·
                  
                    
                      v
                      ⁡
                      
                        (
                        
                          k
                          -
                          j
                        
                        )
                      
                    
                    .
                  
                
              
            
          
        
      
    
    
      
        (
        
          8
          ⁢
          A
        
        )
      
    
  




After having obtained final values for the coefficients ai, the processor may update the averages Ai according the relations:

Ai←giAi+(1−gi)ai.   (8B)

The processor may then compute a current estimate Tmic of the microphone transfer function based on an iterative search, this time using the Volterra expression:




  
    
      
        
          
            f
            S
          
          ⁡
          
            (
            k
            )
          
        
        =
        
          
            
              ∑
              
                i
                =
                0
              
              
                
                  N
                  a
                
                -
                1
              
            
            ⁢
            
              
                A
                i
              
              ⁢
              
                v
                ⁡
                
                  (
                  
                    k
                    -
                    i
                  
                  )
                
              
            
          
          +
          
            
              ∑
              
                i
                =
                0
              
              
                
                  N
                  b
                
                -
                1
              
            
            ⁢
            
              
                ∑
                
                  j
                  =
                  0
                
                
                  
                    M
                    b
                  
                  -
                  1
                
              
              ⁢
              
                
                  B
                  ij
                
                ⁢
                
                  
                    v
                    ⁡
                    
                      (
                      
                        k
                        -
                        i
                      
                      )
                    
                  
                  ·
                  
                    
                      v
                      ⁡
                      
                        (
                        
                          k
                          -
                          j
                        
                        )
                      
                    
                    .
                  
                
              
            
          
        
      
    
    
      
        (
        9
        )
      
    
  




After having obtained a current estimate Tmic for the microphone transfer function, the processor may update an average microphone transfer function Hmic based on the relation:

Hmic(ω)←kmHmic(ω)+(1−km)Tmic(ω),   (10)

where km is a positive constant between zero and one.

Furthermore, the processor may update the average sensitivity values S1, S2 and S3 based respectively on the currently computed sensitivities s1, s2, s3, according to the relations:

S1←h1S1+(1−h1)s1,   (11)

S2←h2S2+(1−h2)s2,   (12)

S3←h3S3+(1−h3)s3,   (13)

where h1, h2, h3 are positive constants between zero and one.

In the discussion above, the average sensitivity values, the Volterra coefficient averages Ai and Bij and the average microphone transfer function Hmic are each updated according to an IIR filtering scheme. However, other filtering schemes are contemplated such as FIR filtering (at the expense of storing more past history data), various kinds of nonlinear filtering, etc.
In one set of embodiments, a system (e.g., a speakerphone or a videoconferencing system) may include a microphone, a speaker, memory and a processor, e.g., as illustrated in FIG. 1B. The memory may be configured to store program instructions and data. The processor is configured to read and execute the program instructions from the memory. The program instructions are executable by the processor to:

    
    
        (a) output a stimulus signal (e.g., a noise signal) for transmission from the speaker;
        (b) receive an input signal from the microphone, corresponding to the stimulus signal and its reverb tail;
        (c) compute a midrange sensitivity and a lowpass sensitivity for a spectrum of a transfer function H(ω) derived from a spectrum of the input signal and a spectrum of the stimulus signal;
        (d) subtract the midrange sensitivity from the lowpass sensitivity to obtain a speaker-related sensitivity;
        (e) perform an iterative search for current values of parameters of an input-output model for the speaker using the input signal spectrum, the stimulus signal spectrum, the speaker-related sensitivity; and
        (f) update averages of the parameters of the speaker input-output model using the current values obtained in (e).

The parameter averages of the speaker input-output model are usable to perform echo cancellation on other input signals.

    
    


The input-output model of the speaker may be a nonlinear model, e.g., a Volterra series model.
Furthermore, in some embodiments, the program instructions may be executable by the processor to:

    
    
        perform an iterative search for a current transfer function of the microphone using the input signal spectrum, the stimulus signal spectrum, and the current values; and
        update an average microphone transfer function using the current transfer function.

The average transfer function is also usable to perform said echo cancellation on said other input signals.

    
    


In another set of embodiments, as illustrated in FIG. 6A, a method for performing self calibration may involve the following steps:

    
    
        (a) outputting a stimulus signal (e.g., a noise signal) for transmission from a speaker (as indicated at step 610);
        (b) receiving an input signal from a microphone, corresponding to the stimulus signal and its reverb tail (as indicated at step 615);
        (c) computing a midrange sensitivity and a lowpass sensitivity for a transfer function H(ω) derived from a spectrum of the input signal and a spectrum of the stimulus signal (as indicated at step 620);
        (d) subtracting the midrange sensitivity from the lowpass sensitivity to obtain a speaker-related sensitivity (as indicated at step 625);
        (e) performing an iterative search for current values of parameters of an input-output model for the speaker using the input signal spectrum, the stimulus signal spectrum, the speaker-related sensitivity (as indicated at step 630); and
        (f) updating averages of the parameters of the speaker input-output model using the current parameter values (as indicated at step 635).

The parameter averages of the speaker input-output model are usable to perform echo cancellation on other input signals.

    
    


The input-output model of the speaker may be a nonlinear model, e.g., a Volterra series model.
Updating Modeling Information based on Online Data Gathering
In one set of embodiments, the processor 207 may be programmed to update the modeling information IM during periods of time when the speakerphone 200 is being used to conduct a conversation.
Suppose speakerphone 200 is being used to conduct a conversation between one or more persons situated near the speakerphone 200 and one or more other persons situated near a remote speakerphone (or videoconferencing system). In this case, the processor 207 sends out the remote audio signal R(k), provided by the remote speakerphone, as the digital output signal Y(k). It would probably be offensive to the local persons if the processor 207 interrupted the conversation to inject a noise transmission into the digital output stream Y(k) for the sake of self calibration. Thus, the processor 207 may perform its self calibration based on samples of the output signal Y(k) while it is “live”, i.e., carrying the audio information provided by the remote speakerphone. The self-calibration may be performed as follows.
The processor 207 may start storing samples of the output signal Y(k) into an first FIFO and storing samples of the input signal X(k) into a second FIFO, e.g., FIFOs allocated in memory 209. Furthermore, the processor may scan the samples of the output signal Y(k) to determine when the average power of the output signal Y(k) exceeds (or at least reaches) a certain power threshold. The processor 207 may terminate the storage of the output samples Y(k) into the first FIFO in response to this power condition being satisfied. However, the processor may delay the termination of storage of the input samples X(k) into the second FIFO to allow sufficient time for the capture of a full reverb tail corresponding to the output signal Y(k) for a maximum expected room size.
The processor 207 may then operate, as described above, on a block BY of output samples stored in the first FIFO and a block BX of input samples stored in the second FIFO to compute:
(1) current estimates for Volterra coefficients ai and bij;
(2) a current estimate Tmic for the microphone transfer function;
(3) updates for the average Volterra coefficients Ai and Bij; and
(4) updates for the average microphone transfer function Hmic.
Because the block BX of received input samples is captured while the speakerphone 200 is being used to conduct a live conversation, the block BX is very likely to contain interference (from the point of view of the self calibration) due to the voices of persons in the environment of the microphone 201. Thus, in updating the average values with the respective current estimates, the processor may strongly weight the past history contribution, i.e., more strongly than in those situations described above where the self-calibration is performed during periods of silence in the external environment.
In some embodiments, a system (e.g., a speakerphone or a videoconferencing system) may include a microphone, a speaker, memory and a processor, e.g., as illustrated in FIG. 1B. The memory may be configured to store program instructions and data. The processor is configured to read and execute the program instructions from the memory. The program instructions are executable by the processor to:

    
    
        (a) provide an output signal for transmission from the speaker, where the output signal carries live signal information from a remote source;
        (b) receive an input signal from the microphone, corresponding to the output signal and its reverb tail;
        (c) compute a midrange sensitivity and a lowpass sensitivity for a transfer function derived from a spectrum of the input signal and a spectrum of the output signal;
        (d) subtract the midrange sensitivity from the lowpass sensitivity to obtain a speaker-related sensitivity;
        (e) perform an iterative search for current values of parameters of an input-output model for the speaker using the input signal spectrum, the output signal spectrum, the speaker-related sensitivity; and
        (f) update averages of the parameters of the speaker input-output model using the current values obtained in (e).

The parameter averages of the speaker input-output model are usable to perform echo cancellation on other input signals (i.e., other blocks of samples of the digital input signal X(k)).

    
    


The input-output model of the speaker is a nonlinear model, e.g., a Volterra series model.
Furthermore, in some embodiments, the program instructions may be executable by the processor to:

    
    
        perform an iterative search for a current transfer function of the microphone using the input signal spectrum, the output signal spectrum, and the current values; and
        update an average microphone transfer function using the current transfer function.

The current transfer function is usable to perform said echo cancellation on said other input signals.

    
    


In one set of embodiments, as illustrated in FIG. 6B, a method for performing self calibration may involve:

    
    
        (a) providing an output signal for transmission from a speaker, where the output signal carries live signal information from a remote source (as indicated at step 660);
        (b) receiving an input signal from a microphone, corresponding to the output signal and its reverb tail (as indicated at step 665);
        (c) computing a midrange sensitivity and a lowpass sensitivity for a transfer function H(ω), where the transfer function H(ω) is derived from a spectrum of the input signal and a spectrum of the output signal (as indicated at step 670);
        (d) subtracting the midrange sensitivity from the lowpass sensitivity to obtain a speaker-related sensitivity (as indicated at step 675);
        (e) performing an iterative search for current values of parameters of an input-output model for the speaker using the input signal spectrum, the output signal spectrum and the speaker-related sensitivity (as indicated at step 680); and
        (f) updating averages of the parameters of the speaker input-output model using the current parameter values (as indicated at step 685).

The parameter averages of the speaker input-output model are usable to perform echo cancellation on other input signals.

    
    


Furthermore, the method may involve:

    
    
        performing an iterative search for a current transfer function of the microphone using the input signal spectrum, the spectrum of the output signal, and the current values; and
        updating an average microphone transfer function using the current transfer function.

The current transfer function is also usable to perform said echo cancellation on said other input signals.

Plurality of Microphones

    
    


In some embodiments, the speakerphone 200 may include NM input channels, where NM is two or greater. Each input channel ICj, j=1, 2, 3, . . . , NM may include a microphone Mj, a preamplifier PAj, and an A/D converter ADCj. The description given above of various embodiments in the context of one input channel naturally generalizes to NM input channels.
Let uj(t) denote the analog electrical signal captured by microphone Mj.
In one group of embodiments, the NM microphones may be arranged in a circular array with the speaker 225 situated at the center of the circle as suggested by the physical realization (viewed from above) illustrated in FIG. 7. Thus, the delay time τ0 of the direct path transmission between the speaker and each microphone is approximately the same for all microphones. In one embodiment of this group, the microphones may all be omni-directional microphones having approximately the same transfer function. In this embodiment, the speakerphone 200 may apply the same correction signal e(t) to each microphone signal uj(t): rj(t)=uj(t)−e(t) for j=1, 2, 3, . . . , NM. The use of omni-directional microphones makes it much easier to achieve (or approximate) the condition of approximately equal microphone transfer functions.
Preamplifier PAj amplifies the difference signal rj(t) to generate an amplified signal xj(t). ADCj samples the amplified signal xj(t) to obtain a digital input signal Xj(k).
Processor 207 may receive the digital input signals Xj(k), j=1, 2, . . . , NM.
In one embodiment, NM equals 16. However, a wide variety of other values are contemplated for NM.
There are various ways of orienting the microphones. In some embodiments, each of the microphones Mj, j=1, 2, 3, . . . , NM, may be configured with its axis in the oriented vertically so that its diaphragm moves principally up and down. The vertical orientation may enhance the sensitivity of the microphones. In other embodiments, each of the microphones Mj, j=1, 2, 3, . . . , NM, may be oriented with its axis in the horizontal plane so that its diaphragm moves principally sideways.
There are various ways of positioning the microphones. In some embodiments, the microphones Mj, j=1, 2, 3, . . . , NM, may be positioned in a circular array, e.g., as suggested in FIG. 7. In one embodiment, the microphones of the circular array may be positioned close to the outer perimeter of the speakerphone so as to be as far from the center as possible. (The speaker may be positioned at the center of the speakerphone.)
Various kinds of microphones may be used to realize microphones Mj, j=1, 2, 3, . . . , NM. In some embodiments , the microphones Mj, j=1, 2, 3, . . . , NM, may be omni-directional microphones. Various signal processing and/or beam forming computations may be simplified by the use of omni-directional microphones.
In other embodiments, the microphones Mj, j=1, 2, 3, . . . , NM, may be directional microphones, e.g., cardioid microphones.
Hybrid Beamforming
As noted above, speakerphone 300 (or speakerphone 200) may include a set of microphones, e.g., as suggested in FIG. 7. In one set of embodiments, processor 207 may operate on the set of digital input signals Xj(k), j=1, 2, . . . , NM, captured from the microphone input channels, to generate a resultant signal D(k) that represents the output of a highly directional virtual microphone pointed in a target direction. The virtual microphone is configured to be much more sensitive in an angular neighborhood of the target direction than outside this angular neighborhood. The virtual microphone allows the speakerphone to “tune in” on any acoustic sources in the angular neighborhood and to “tune out” (or suppress) acoustic sources outside the angular neighborhood.
According to one methodology, the processor 207 may generate the resultant signal D(k) by:

    
    
        operating on the digital input signals Xj(k), j=1, 2, . . . , NM with virtual beams B(1), B(2), . . . , B(NB) to obtain respective beam-formed signals, where NB is greater than or equal to two;
        adding (perhaps with weighting) the beam-formed signals to obtain a resultant signal D(k).

In one embodiment, this methodology may be implemented in the frequency domain by:

        computing a Fourier transform of the digital input signals Xj(k), j=1, 2, . . . , NM, to generate corresponding input spectra Xj(f), j=1, 2, . . . , NM, where f denotes frequency; and
        operating on the input spectra Xj(f), j=1, 2, . . . , NM with the virtual beams B(1), B(2), . . . , B(NB) to obtain respective beam formed spectra V(1), V(2), . . . , V(NB), where NB is greater than or equal to two;
        adding (perhaps with weighting) the spectra V(1), V(2), . . . , V(NB) to obtain a resultant spectrum D(f);
        inverse transforming the resultant spectrum D(f) to obtain the resultant signal D(k).

Each of the virtual beams B(i), i=1, 2, . . . , NB has an associated frequency range

R(i)=[ci, di]

and operates on a corresponding subset Si of the input spectra Xj(f), j=1, 2, . . . , NM. (To say that A is a subset of B does not exclude the possibility that subset A may equal set B.) The processor 207 may window each of the spectra of the subset Si with a window function Wi(f) corresponding to the frequency range R(i) to obtain windowed spectra, and, operate on the windowed spectra with the beam B(i) to obtain spectrum V(i). The window function Wi may equal one inside the range R(i) and the value zero outside the range R(i). Alternatively, the window function Wi may smoothly transition to zero in neighborhoods of boundary frequencies ci and di.

    
    


The union of the ranges R(1), R(2), . . . , R(NB) may cover the range of audio frequencies, or, at least the range of frequencies occurring in speech.
The ranges R(1), R(2), . . . , R(NB) include a first subset of ranges that are above a certain frequency fTR and a second subset of ranges that are below the frequency fTR. In one embodiment, the frequency fTR may be approximately 550 Hz.
Each of the virtual beams B(i) that corresponds to a frequency range R(i) below the frequency fTR may be a superdirective beam of order L(i) formed from L(i)+1 of the input spectra Xj(f), j=1, 2, . . . , NM, where L(i) is an integer greater than or equal to one. The L(i)+1 spectra may correspond to L(i)+1 microphones of the circular array that are aligned (or approximately aligned) in the target direction.
Furthermore, each of the virtual beams B(i) that corresponds to a frequency range R(i) above the frequency fTR may have the form of a delay-and-sum beam. The delay-and-sum parameters of the virtual beam B(i) may be designed by beam forming design software. The beam forming design software may be conventional software known to those skilled in the art of beam forming. For example, the beam forming design software may be software that is available as part of MATLAB®.
The beam forming design software may be directed to design an optimal delay-and-sum beam for beam B(i) at some frequency fi (e.g., the midpoint frequency) in the frequency range R(i) given the geometry of the circular array and beam constraints such as passband ripple δP, stopband ripple δS, passband edges θP1 and θP2, first stopband edge θS1 and second stopband edge θS2 as suggested by FIG. 8.
The beams corresponding to frequency ranges above the frequency fTR are referred to herein as “high-end beams”. The beams corresponding to frequency ranges below the frequency fTR are referred to herein as “low-end beams”. The virtual beams B(1), B(2), . . . , B(NB) may include one or more low-end beams and one or more high-end beams.
In some embodiments, the beam constraints may be the same for all high-end beams B(i). The passband edges θP1 and θP2 may be selected so as to define an angular sector of size 360/NM degrees (or approximately this size). The passband may be centered on the target direction θT.
The high end frequency ranges R(i) may be an ordered succession of ranges that cover the frequencies from fTR up to a certain maximum frequency (e.g., the upper limit of audio frequencies, or, the upper limit of voice frequencies).
The delay-and-sum parameters for each high-end beam and the parameters for each low-end beam may be designed at a design facility and stored into memory 209 prior to operation of the speakerphone.
Since the microphone array is symmetric with respect to rotation through any multiple of 360/NM degrees, in one set of embodiments, the set of parameters designed for one target direction may be used for any of the NM target directions given by

k(360/NM), k=0, 1, 2, . . . , NM−1,

by applying an appropriate circular shift when accessing the parameters from memory.

In one embodiment,
the frequency fTR is 550 Hz,
R(1)=R(2)=[0,550 Hz],
L(1)=L(2)=2, and

    
    
        low-end beam B(1) operates on three of the spectra Xj(f), j=1, 2, . . . , NM, and low-end beam B(2) operates on a different three of the spectra Xj(f), j=1, 2, . . . , NM;
        frequency ranges R(3), R(4), . . . , R(NB) are an ordered succession of ranges covering the frequencies from fTR up to a certain maximum frequency (e.g., the upper limit of audio frequencies, or, the upper limit of voice frequencies);
        beams B(3), B(4), . . . , B(NM) are high-end beams designed as described above.
    
    


FIG. 9 illustrates the three microphones (and thus, the three spectra) used by each of beams B(1) and B(2), relative to the target direction.
In another embodiment, the virtual beams B(1), B(2), . . . , B(NB) may include a set of low-end beams of first order. FIG. 10 illustrates an example of three low-end beams of first order. Each of the three low-end beams may be formed using a pair of the input spectra Xj(f), j=1, 2, . . . , NM. For example, beam B(1) may be formed from the input spectra corresponding to the two “A” microphones. Beam B(2) may be formed form the input spectra corresponding to the two “B” microphones. Beam B(3) may be formed form the input spectra corresponding to the two “C” microphones.
In yet another embodiment, the virtual beams B(1), B(2), . . . , B(NB) may include a set of low-end beams of third order. FIG. 11 illustrates an example of two low-end beams of third order. Each of the two low-end beams may be formed using a set of four input spectra corresponding to four consecutive microphone channels that are approximately aligned in the target direction.
In one embodiment, the low order beams may include: second order beams (e.g., a pair of second order beams as suggested in FIG. 9), each second order beam being associated with the range of frequencies less than f1, where f1 is less than fTR; and third order beams (e.g., a pair of third order beams as suggested in FIG. 11), each third order beam being associated with the range of frequencies from f1 to fTR. For example, f1 may equal approximately 250 Hz.
In one set of embodiments, a method for generating a highly directed beam may involve the following actions, as illustrated in FIG. 12A.
At 1205, input signals may be received from an array of microphones, one input signal from each of the microphones. The input signals may be digitized and stored in an input buffer.
At 1210, low pass versions of at least a first subset of the input signals may be generated. Transition frequency fTR may be the cutoff frequency for the low pass versions. The first subset of the input signals may correspond to a first subset of the microphones that are at least partially aligned in a target direction. (See FIGS. 9-11 for various examples in the case of a circular array.)
At 1215, the low pass versions of the first subset of input signals are operated on with a first set of parameters in order to compute a first output signal corresponding to a first virtual beam having an integer-order superdirective structure. The number of microphones in the first subset is one more than the integer order of the first virtual beam.
At 1220, high pass versions of the input signals are generated. Again, the transition frequency fTR may be the cutoff frequency for the high pass versions.
At 1225, the high pass versions are operated on with a second set of parameters in order to compute a second output signal corresponding to a second virtual beam having a delay-and-sum structure. The second set of parameters may be configured so as to direct the second virtual beam in the target direction.
The second set of parameters may be derived from a combination of parameter sets corresponding to a number of band-specific virtual beams. For example, in one embodiment, the second set of parameters is derived from a combination of the parameter sets corresponding to the high-end beams of delay-and-sum form discussed above. Let NH denote the number of high-end beams. As discussed above, beam design software may be employed to compute a set of parameters P(i) for a high-end delay-and-sum beam B(i) at some frequency fi in region R(i). The set P(i) may include NM complex coefficients denoted P(i,j), j=1, 2, . . . , NM, i.e., one for each microphone. The second set Q of parameters may be generated from the parameter sets P(i), i=1, 2, . . . , NH according to the relation:




  
    
      Q
      ⁡
      
        (
        j
        )
      
    
    =
    
      
        ∑
        
          i
          =
          1
        
        
          N
          H
        
      
      ⁢
      
        
          P
          ⁡
          
            (
            
              i
              ,
              j
            
            )
          
        
        ⁢
        
          U
          ⁡
          
            (
            
              i
              ,
              j
            
            )
          
        
      
    
  
  ,




j=1, 2, . . . , NM, where U(i,j) is a weighting function that weights the parameters of set P(i), corresponding to frequency fi, most heavily at microphone #i and successively less heavily at microphones away from microphone #i. Other schemes for combining the multiple parameter sets are also contemplated.

At 1230, a resultant signal is generated, where the resultant signal includes a combination of at least the first output signal and the second output signal. The combination may be a linear combination or other type of combination. In one embodiment, the combination is a straight sum (with no weighting).
At 1235, the resultant signal may be provided to a communication interface for transmission to one or more remote destinations.
The action of generating low pass versions of at least a first subset of the input signals may include generating low pass versions of one or more additional subsets of the input signals distinct from the first subset. Correspondingly, the method may further involve operating on the additional subsets (of low pass versions) with corresponding additional virtual beams of integer-order superdirective structure. (There is no requirement that all the superdirective beams must have the same integer order.) Thus, the combination (used to generate the resultant signal) also includes the output signals of the additional virtual beams.
The method may also involve accessing an array of parameters from a memory, and applying a circular shift to the array of parameters to obtain the second set of parameters, where an amount of the shift corresponds to the desired target direction.
It is noted that actions 1210 through 1230 may be performed in the time domain, in the frequency domain, or partly in the time domain and partly in the frequency domain. For example, 1210 may be implemented by time-domain filtering or by windowing in the spectral domain. As another example, 1225 may be performed by weighting, delaying and adding time-domain functions, or, by weighting, adjusting and adding spectra. In light of the teachings given herein, one skilled in the art will not fail to understand how to implement each individual action in the time domain or in the frequency domain.
In another set of embodiments, a method for generating a highly directed beam may involve the following actions, as illustrated in FIG. 12B.
At 1240, input signals are received from an array of microphones, one input signal from each of the microphones.
At 1241, first versions of at least a first subset of the input signals are generated, wherein the first versions are band limited to a first frequency range.
At 1242, the first versions of the first subset of input signals are operated on with a first set of parameters in order to compute a first output signal corresponding to a first virtual beam having an integer-order superdirective structure.
At 1243, second versions of at least a second subset of the input signals are generated, wherein the second versions are band limited to a second frequency range different from the first frequency range.
At 1244, the second versions of the second subset of input signals are operated on with a second set of parameters in order to compute a second output signal corresponding to a second virtual beam.
At 1245, a resultant signal is generated, wherein the resultant signal includes a combination of at least the first output signal and the second output signal.
The second virtual beam may be a beam having a delay-and-sum structure or an integer order superdirective structure, e.g., with integer order different from the integer order of the first virtual beam.
The first subset of the input signals may correspond to a first subset of the microphones which are at least partially aligned in a target direction. Furthermore, the second set of parameters may be configured so as to direct the second virtual beam in the target direction.
Additional integer-order superdirective beams and/or delay-and-sum beams may be applied to corresponding subsets of band-limited versions of the input signals, and the corresponding outputs (from the additional beams) may be combined into the resultant signal.
In another set of embodiments, a system may include a set of microphones, a memory and a processor, e.g., as suggested variously above in conjunction with FIGS. 1 and 7. The memory may be configured to store program instructions. The processor may be configured to read and execute the program instructions from the memory. The program instructions may be executable to implement:

    
    
        (a) receiving input signals, one input signal corresponding to each of the microphones;
        (b) generating first versions of at least a first subset of the input signals, wherein the first versions are band limited to a first frequency range;
        (c) operating on the first versions of the first subset of input signals with a first set of parameters in order to compute a first output signal corresponding to a first virtual beam having an integer-order superdirective structure;
        (d) generating second versions of at least a second subset of the input signals, wherein the second versions are band limited to a second frequency range different from the first frequency range;
        (e) operating on the second versions of the second subset of input signals with a second set of parameters in order to compute a second output signal corresponding to a second virtual beam;
        (f) generating a resultant signal, wherein the resultant signal includes a combination of at least the first output signal and the second output signal.

The second virtual beam may be a beam having a delay-and-sum structure or an integer order superdirective structure, e.g., with integer order different from the integer order of the first virtual beam.

    
    


The first subset of the input signals may correspond to a first subset of the microphones which are at least partially aligned in a target direction. Furthermore, the second set of parameters may be configured so as to direct the second virtual beam in the target direction.
Additional integer-order superdirective beams and/or delay-and-sum beams may be applied to corresponding subsets of band-limited versions of the input signals, and the corresponding outputs (from the additional beams) may be combined into the resultant signal.
The program instructions may be further configured to direct the processor to provide the resultant signal to a communication interface (e.g., one of communication interfaces 211) for transmission to one or more remote devices.
The set of microphones may be arranged on a circle. Other array topologies are contemplated. For example, the microphones may be arranged on an ellipse, a square, or a rectangle. In some embodiments, the microphones may be arranged on a grid, e.g., a rectangular grid, a hexagonal grid, etc.
In yet another set of embodiments, a method for generating a highly directed beam may include the following actions, as illustrated in FIG. 12C.
At 1250, input signals may be received from an array of microphones, one input signal from each of the microphones.
At 1255, the input signals may be operated on with a set of virtual beams to obtain respective beam-formed signals, where each of the virtual beams is associated with a corresponding frequency range and a corresponding subset of the input signals, where each of the virtual beams operates on versions of the input signals of the corresponding subset of input signals, where said versions are band limited to the corresponding frequency range, where the virtual beams include one or more virtual beams of a first type and one or more virtual beams of a second type.
The first type and the second type may correspond to: different mathematical expressions describing how the input signals are to be combined; different beam design methodologies; different theoretical approaches to beam forming, etc.
The one or more beams of the first type may be integer-order superdirective beams. Furthermore, the one or more beams of the second type may be delay-and-sum beams.
At 1260, a resultant signal may be generated, where the resultant signal includes a combination of the beam-formed signals.
The methods illustrated in FIGS. 12A-C may be implemented by one or more processors under the control of program instructions, by dedicated (analog and/or digital) circuitry, or, by a combination of one or more processors and dedicated circuitry. For example, any or all of these methods may be implemented by one or more processors in a speakerphone (e.g., speakerphone 200 or speakerphone 300).
In yet another set of embodiments, a method for configuring a target system (i.e., a system including a processor, a memory and one or more processors) may involve the following actions, as illustrated in FIG. 13. The method may be implemented by executing program instructions on a computer system which is coupled to the target system.
At 1310, a first set of parameters may be generated for a first virtual beam based on a first subset of the microphones, where the first virtual beam has an integer-order superdirective structure.
At 1315, a plurality of parameter sets may be computed for a corresponding plurality of delay-and-sum beams, where the parameter set for each delay-and-sum beam is computed for a corresponding frequency, where the parameter sets for the delay-and-sum beams are computed based on a common set of beam constraints. The frequencies for the delay-and-sum beams may be above a transition frequency.
At 1320, the plurality of parameter sets may be combined to obtain a second set of parameters, e.g., as described above.
At 1325, the first set of parameters and the second set of parameters may be stored in the memory of the target system.
The delay-and-sum beams may be designed using beam forming design software. Each of the delay-and-sum beams may be designed subject to the same (or similar) set of beam constraints. For example, each of the delay-and-sum beams may be constrained to have the same pass band width (i.e., main lobe width).
The target system being configured may be a device such as a speakerphone, a videoconferencing system, a surveillance device, a video camera, etc.
One measure of the quality of a virtual beam formed from a microphone array is directivity index (DI). Directivity index indicates the amount of rejection of signal off axis from the desired signal. Virtual beams formed from endfire microphone arrays (“endfire beams”) have an advantage over beams formed from broadside arrays (“broadside beams”) in that the endfire beams have constant DI over all frequencies as long as the wavelength is greater than the microphone array spacing. (Broadside beams have increasingly lower DI at lower frequencies.) For endfire arrays, however, as the frequency goes down the signal level goes down by (6 dB per octave)×(endfire beam order) and therefore the gain required to maintain a flat response goes up, requiring higher signal-to-noise ratio to obtain a usable result.
A high DI at low frequencies is important because room reverberations, which people hear as “that hollow sound”, are predominantly at low frequencies. The higher the “order” of an endfire microphone array the higher the potential DI value.
Calibration to Correct for Acoustic Shadowing
The performance of a speakerphone (such as speakerphone 200 or speakerphone 300) using an array of microphones may be constrained by:

    
    
        (1) the accuracy of knowledge of the 3 dimensional position of each microphone in the array;
        (2) the accuracy of knowledge of the magnitude and phase response of each microphone;
        (3) the signal-to-noise ratio (S/N) of the signal arriving at each microphone; and
        (4) the minimum acceptable signal-to-noise (S/N) ratio (as a function of frequency) determined by the human auditory system.
    
    


(1) Prior to use of the speakerphone (e.g., during the manufacturing process), the position of each microphone in the speakerphone may be measured by placing the speakerphone in a test chamber. The test chamber includes a set of speakers at known positions. The 3D position of each microphone in the speakerphone may be determined by:

    
    
        asserting a known signal from each speaker;
        capturing the response from the microphone;
        performing cross-correlations to determine the propagation time of the known signal from each speaker to the microphone;
        computing the propagation distance between each speaker and the microphone from the corresponding propagation times;
        computing the 3D position of the microphone from the propagation distances and the known positions of the speakers.

It is noted that the phase of the A/D clock and/or the phase of D/A clock may be adjusted as described above to obtain more accurate estimates of the propagation times. The microphone position data may be stored in non-volatile memory in each speakerphone.

    
    


(2) There are two parts to having an accurate knowledge of the response of the microphones in the array. The first part is an accurate measurement of the baseline response of each microphone in the array during manufacture (or prior to distribution to customer). The first part is discussed below. The second part is adjusting the response of each microphone for variations that may occur over time as the product is used. The second part is discussed in detail above.
Especially at higher frequencies each microphone will have a different transfer function due to asymmetries in the speakerphone structure or in the microphone pod. The response of each microphone in the speakerphone may be measured as follows. The speakerphone is placed in a test chamber at a base position with a predetermined orientation. The test chamber includes a movable speaker (or set of speakers at fixed positions). The speaker is placed at a first position in the test chamber. A calibration controller asserts a noise burst through the speaker. The calibration controller read and stores the signal Xj(k) captured by the microphone Mj, j=1, 2, . . . , NM, in the speakerphone in response to the noise burst. The speaker is moved to a new position, and the noise broadcast and data capture is repeated. The noise broadcast and data capture are repeated for a set of speaker positions. For example, in one embodiment, the set of speaker positions may explore the circle in space given by:

    
    
        radius equal to 5 feet relative to an origin at the center of the microphone array;
        azimuth angle in the range from zero to 360 degrees;
        elevation angle equal to 15 degrees above the plane of the microphone array.

In another embodiment, the set of speaker positions may explore a region in space given by:

        radius in the range form 1.5 feet to 20 feet.
        azimuth angle in the range from zero to 360 degrees;
        elevation angle in the range from zero to 90 degrees.

A wide variety of embodiments are contemplated for the region of space sampled by the set of speaker positions.

    
    


A second speakerphone, having the same physical structure as the first speakerphone, is placed in the test chamber at the base position with the predetermined orientation. The second speakerphone has ideal microphones Gj, j=1, 2, . . . , NM, mounted in the slots where the first speakerphone has less than ideal microphones Mj. The ideal microphones are “golden” microphones having flat frequency response. The same series of speaker positions are explored as with the first speakerphone. At each speaker position the same noise burst is asserted and the response XjG(k) from each of the golden microphones of the second speakerphone is captured and stored.
For each microphone channel j and each speaker position, the calibration controller may compute an estimate for the transfer function of the microphone Mj, j=1, 2, . . . , NM, according to the expression:

Hjmic(ω)=Xj(ω)/XjG(ω).

The division by spectrum XjG(ω) cancels the acoustic effects due to the test chamber and the speakerphone structure. These microphone transfer functions are stored into non-volatile memory of the first speakerphone, e.g., in memory 209.

In practice, it may be more efficient to gather the golden microphone data from the second speakerphone first, and then, gather data from the first speakerphone, so that the microphone transfer functions Hjmic(ω) for each microphone channel and each speaker position may be immediately loaded into the first speakerphone before detaching the first speakerphone from the calibration controller.
In one embodiment, the first speakerphone may itself include software to compute the microphone transfer functions Hjmic(ω) for each microphone and each speaker position. In this case, the calibration controller may download the golden response data to the first speakerphone so that the processor 207 of the speakerphone may compute the microphone transfer functions.
In some embodiments, the test chamber may include a platform that can be rotated in the horizontal plane. The speakerphone may be placed on the platform with the center of the microphone array coinciding with the axis of the rotation of the platform. The platform may be rotated instead of attempting to change the azimuth angle of the speaker. Thus, the speaker may only require freedom of motion within a single plane passing through the axis of rotation of the platform.
When the speakerphone is being used to conduct a live conversation, the processor 207 may capture signals Xj(k) from the microphone input channels, j=1, 2, . . . , NM, and operate on the signals Xj(k) with one or more virtual beams as described above. The virtual beams are pointed in a target direction (or at a target position in space), e.g., at an acoustic source such as a current talker. The beam design software may have designed the virtual beams under the assumption that the microphones are ideal omnidirectional microphones having flat spectral response. In order to compensate for the fact that the microphones Mj, j=1, 2, . . . , NM, are not ideal omnidirectional microphones, the processor 207 may access the microphone transfer functions Hjmic corresponding to the target direction (or the target position in space) and multiply the spectra Xj(w) of the received signals by the inverses 1/Hjmic(ω) of the microphone transfer functions respectively:

Xjadj(ω)=Xj(ω)/Hjmic(ω)

The adjusted spectra Xjadj(ω) may then be supplied to the virtual beam computations.

At high frequencies, effects such as acoustic shadowing begin to show up, in part due to the asymmetries in the speakerphone surface structure. For example, since the keypad is on one side of the speakerphone's top surface, microphones near the keypad will experience a different shadowing pattern than microphones more distant from the keypad. In order to allow for the compensation of such effects, the following calibration process may be performed. A golden microphone may be positioned in the test chamber at a position and orientation that would be occupied by the microphone M1 if the first speakerphone had been placed in the test chamber. The golden microphone is positioned and oriented without being part of a speakerphone (because the intent is to capture the acoustic response of just the test chamber.) The speaker of the test chamber is positioned at the first of the set of speaker positions (i.e., the same set of positions used above to calibrate the microphone transfer functions). The calibration controller asserts the noise burst, reads the signal X1C(k) captured from microphone M1 in response to the noise burst, and stores the signal X1C(k). The noise burst and data capture is repeated for the golden microphone in each of the positions that would have been occupied if the first speakerphone had been placed in the test chamber. Next, the speaker is moved to a second of the set of speaker positions and the sequence of noise-burst-and-data-gathering over all microphone positions is performed. The sequence of noise-burst-and-data-gathering over all microphone positions is performed for each of the speaker positions. After having explored all speaker positions, the calibration controller may compute a shadowing transfer function HjSH(c) for each microphone channel j=1, 2, . . . , NM, and for each speaker position, according to the expression:

HjSH(ω)=XjG(ω)/XjC(ω).

The shadowing transfer functions may be stored in the memory of speakerphones prior to the distribution of the speakerphones to customers.

When a speakerphone is being used to conduct a live conversation, the processor 207 may capture signals Xj(k) from the microphone input channels, j=1, 2, . . . , NM, and operate on the signals Xj(k) with one or more virtual beams pointed in a target direction (or at a target position) as described variously above. In order to compensate for the fact that the microphones Mj, j=1, 2, 3, . . . , NM, are acoustically shadowed (by being incorporated as part of a speakerphone), the processor 207 may access the shadow transfer functions HjSH(ω) corresponding to the target direction (or target position in space) and multiply the spectra XjSH(ω) of the received signals by the inverses 1/HjSH(ω) of the shadowing transfer functions respectively:

Xjadj(ω)=Xj(ω)/HjSH(ω).

The adjusted spectra Xjadj(ω) may then be supplied to the virtual beam computations for the one or more virtual beams.

In some embodiments, the processor 207 may compensate for both non-ideal microphones and acoustic shadowing by multiplying each received signal spectrum Xj(ω) by the inverse of the corresponding shadowing transfer function for the target direction (or position) and the inverse of the corresponding microphone transfer function for the target direction (or position):




  
    
      X
      j
      adj
    
    ⁡
    
      (
      ω
      )
    
  
  =
  
    
      
        
          X
          j
        
        ⁡
        
          (
          ω
          )
        
      
      
        
          
            H
            j
            SH
          
          ⁡
          
            (
            ω
            )
          
        
        ⁢
        
          
            H
            j
            mic
          
          ⁡
          
            (
            ω
            )
          
        
      
    
    .
  




The adjusted spectra Xjadj(ω) may then be supplied to the virtual beam computations for the one or more virtual beams.

In some embodiments, parameters for a number of ideal high-end beams as described above may be stored in a speakerphone. Each ideal high-end beam BId(i) has an associated frequency range Ri=[ci,di] and may have been designed (e.g., as described above, using beam design software) assuming that: (a) the microphones are ideal omnidirectional microphones and (b) there is no acoustic shadowing. The ideal beam BId(i) may be given by the expression:




  
    
      
        IdealBeamOutput
        i
      
      ⁡
      
        (
        ω
        )
      
    
    =
    
      
        ∑
        
          j
          =
          1
        
        
          N
          B
        
      
      ⁢
      
        
          C
          j
        
        ⁢
        
          
            W
            i
          
          ⁡
          
            (
            ω
            )
          
        
        ⁢
        
          
            X
            j
          
          ⁡
          
            (
            ω
            )
          
        
        ⁢
        
          
        
        ⁢
        
          exp
          ⁡
          
            (
            
              
                -
                i
              
              ⁢
              
                
              
              ⁢
              ω
              ⁢
              
                
              
              ⁢
              
                d
                j
              
            
            )
          
        
      
    
  
  ,




where the attenuation coefficients Cj and the time delay values dj are values given by the beam design software, and Wi is the spectral window function corresponding to frequency range Ri. The failure of assumption (a) may be compensated for by the speakerphone in real time operation as described above by multiplying by the inverses of the microphone transfer functions corresponding to the target direction (or target position). The failure of the assumption (b) may be compensated for by the speakerphone in real time operation as described above by applying the inverses of the shadowing transfer functions corresponding to the target direction (or target position). Thus, the corrected beam B(i) corresponding to ideal beam BId(i) may conform to the expression:





  
    
      CorrectedBeamOutput
      i
    
    ⁡
    
      (
      ω
      )
    
  
  =
  
    
      ∑
      
        j
        =
        1
      
      
        N
        B
      
    
    ⁢
    
      
        C
        j
      
      ⁢
      
        
          W
          i
        
        ⁡
        
          (
          ω
          )
        
      
      ⁢
      
        
          
            X
            j
          
          ⁡
          
            (
            ω
            )
          
        
        
          
            
              H
              j
              SH
            
            ⁡
            
              (
              ω
              )
            
          
          ⁢
          
            
              H
              j
              mic
            
            ⁡
            
              (
              ω
              )
            
          
        
      
      ⁢
      
        
          exp
          ⁡
          
            (
            
              
                -
                i
              
              ⁢
              
                
              
              ⁢
              ω
              ⁢
              
                
              
              ⁢
              
                d
                j
              
            
            )
          
        
        .
      
    
  




In one embodiment, the complex value zi,j of the shadowing transfer function HjSH(ω) at the center frequency (or some other frequency) of the range Ri may be used to simplify the above expression to:





  
    
      CorrectedBeamOutput
      i
    
    ⁡
    
      (
      ω
      )
    
  
  =
  
    
      ∑
      
        j
        =
        1
      
      
        N
        B
      
    
    ⁢
    
      
        C
        j
      
      ⁢
      
        
          W
          i
        
        ⁡
        
          (
          ω
          )
        
      
      ⁢
      
        
          
            X
            j
          
          ⁡
          
            (
            ω
            )
          
        
        
          
            H
            j
            mic
          
          ⁡
          
            (
            ω
            )
          
        
      
      ⁢
      
        
          exp
          ⁡
          
            (
            
              
                -
                i
              
              ⁢
              
                
              
              ⁢
              ω
              ⁢
              
                
              
              ⁢
              
                d
                j
              
            
            )
          
        
        /
        
          
            z
            
              i
              ,
              j
            
          
          .
        
      
    
  




A similar simplification may be achieved by replacing the microphone transfer function Hjmic(ω) with its complex value at some frequency in the range Ri.

In one set of embodiments, a speakerphone may declare the failure of a microphone in response to detecting a discontinuity in the microphone transfer function as determined by a microphone calibration (e.g., an offline self calibration or live self calibration as described above) and a comparison to past history information for the microphone. Similarly, the failure of a speaker may be declared in response to detecting a discontinuity in one or more parameters of the speaker input-output model as determined by a speaker calibration (e.g., an offline self calibration or live self calibration as described above) and a comparison to past history information for the speaker. Similarly, a failure in any of the circuitry interfacing to the microphone or speaker may be detected.
At design time an analysis may be performed in order to predict the highest order end-fire array achievable independent of S/N issues based on the tolerances of the measured positions and microphone responses. As the order of an end-fire array is increased, its actual performance requires higher and higher precision of microphone position and microphone response. By having very high precision measurements of these factors it is possible to use higher order arrays with higher DI than previously achievable.
With a given maximum order array determined by tolerances, the required S/N of the system is considered, as that may also limit the maximum order and therefore maximum usable DI at each frequency.
The S/N requirements at each frequency may be optimized relative to the human auditory system.
An optimized beam forming solution that gives maximum DI at each frequency subject to the S/N requirements and array tolerance of the system may be implemented. For example, consider an nht array with the following formula:

X=g1*mic1(t−d1)−g2*mic2(t−d2)− . . . gn*micn(t−dn).

Various mathematical solving techniques such an iterative solution or a Kalman filter may be used to determine the required delays and gains needed to produce a solution optimized for S/N, response, tolerance, DI and the application.
For example, an array used to measure direction of arrival may need much less S/N allowing higher DI than an application used in voice communications. There may be different S/N requirements depending on the type of communication channel or compression algorithm applied to the data.
Cross Correlation Analysis to Fine Tune AEC Echo Analysis.
In one set of embodiments, the processor 207 may be programmed, e.g., as illustrated in FIG. 14, to perform a cross correlation to determine the maximum delay time for significant echoes in the current environment, and, to direct the automatic echo cancellation (AEC) module to concentrate its efforts on significant early echoes, instead of wasting its effort trying to detect weak echoes buried in the noise.
The processor 207 may wait until some time when the environment is likely to be relatively quiet (e.g., in the middle of the night, or, early morning). If the environment is sufficiently quiet, the processor 207 may execute a tuning procedure as follows.
The processor 207 may wait for a sufficiently long period of silence, then transmit a noise signal.
The noise signal may be a maximum length sequence (in order to allow the longest calibration signal with the least possibility of auto-correlation). However, effectively the same result can be obtained by repeating the measurement with different (non-maximum length sequence) noise bursts and then averaging the results. The noise bursts can further be optimized by first determining the spectral characteristics of the background noise in the room and then designing a noise burst that is optimally shaped (e.g., in the frequency domain) to be discernable above that particular ambient noise environment.
The processor 207 may capture a block of input samples from an input channel in response to the noise signal transmission.
The processor may perform a cross correlation between the transmitted noise signal and the block of input samples.
The processor may analyze the amplitude of the cross correlation function to determine a time delay τ0 associated with the direct path signal from the speaker to microphone.
The processor may analyze the amplitude of the cross correlation function to determine the time delay (Ts) at which the amplitude dips below a threshold ATH and stays below that threshold. For example, the threshold ATH may be the RT-60 threshold relative to the peak corresponding to the direct path signal.
In one embodiment, Ts may be determined by searching the cross correlation amplitude function in the direction of decreasing time delay, starting from the maximum value of time delay computed.
The time delay Ts may be provided to the AEC module so that the AEC module can concentrate its effort on analyzing echoes (i.e., reflections) at time delays less than or equal to Ts. Thus, the AEC module doesn't waste its computational effort trying to detect the weak echoes at time delays greater than Ts.
It is of particular interest to note that Ts attains its maximum value Tsmax for any given room when the room is empty. Thus, we can know that any particular measurement of Ts will be less than or equal to Tsmax. If this condition is violated by moving the unit from one room to another, then we will know that up front, because the speakerphone will typically have to be powered down while it is being moved.
Tracking Talkers with Directed Beams
In one set of embodiments, the speakerphone may be programmed to implement the method embodiment illustrated in FIG. 15A. This method embodiment may serve to capture the voice signals of one or more talkers (e.g., simultaneous talkers) using a virtual broadside scan and one or more directed beams.
This set of embodiments assumes an array of microphones, e.g., a circular array of microphones as illustrated in FIG. 15B.
At 1505, processor 207 receives a block of input samples from each of the input channels. (Each input channel corresponds to one of the microphones.)
At 1510, the processor 207 operates on the received blocks to scan a virtual broadside array through a set of angles spanning the circle to obtain an amplitude envelope describing amplitude versus angle. For example, in FIG. 15B, imagine the angle θ of the virtual linear array VA sweeping through 360 degrees (or 180 degrees). In some embodiments, the virtual linear arrays at the various angles may be generated by application of the Davies Transformation.
At 1515, the processor 207 analyzes the amplitude envelope to detect angular positions of sources of acoustic power.
As indicated at 1520, for each source angle, the processor 207 operates on the received blocks using a directed beam (e.g., a highly directed beam) pointed in the direction defined by the source angle to obtain a corresponding beam signal. The beam signal is a high quality representation of the signal emitted by the source at that source angle.
Any of various known techniques (or combinations thereof) may be used to construct the directed beam (or beams).
In one embodiment, the directed beam may be a hybrid beam as described above.
Alternatively, the directed beam may be adaptively constructed, based on the environmental conditions (e.g., the ambient noise level) and the kind of signal source being tracked (e.g., if it is determined from the spectrum of the signal that it is most likely a fan, then a different set of beam-forming coefficients may be used in order to more effectively isolate that particular audio source from the rest of the environmental background noise).
As indicated at 1525, for each source angle, the processor 207 may examine the spectrum of the corresponding beam signal for consistency with speech, and, classify the source angle as either:

    
    
        “corresponding to speech (or, at least, corresponding to intelligence)”, or
        “corresponding to noise”.
    
    


As indicated at 1530, of those sources that have been classified as intelligence, the processor may identify one or more sources whose corresponding beam signals have the highest energies (or average amplitudes). The angles corresponding to these intelligence sources having highest energies are referred to below as “loudest talker angles”.
At 1535, the processor may generate an output signal from the one or more beam signals captured by the one or more directed beams corresponding to the one or more loudest talker angles. In the case where only one loudest talker angle is identified, the processor may simply provide the corresponding beam signal as the output signal. In the case where a plurality of loudest talker angles are identified, the processor may combine (e.g., add, or, form a linear combination of) the beam signals corresponding to the loudest talker angles to obtain the output signal.
At 1540, the output signal may be transmitted to one or more remote devices, e.g., to one or more remote speakerphones through one or more of the communication interfaces 211.
A remote speakerphone may receive the output signal and provide the output signal to a speaker. Because the output signal is generated from the one or more beam signals corresponding to the one or more loudest talker angles, the remote participants are able to hear a quality representation of the speech (or other sounds) generated by the local participants, even in the situation where more than one local participant is talking at the same time, and even when there are interfering noise sources present in the local environment.
The processor may repeat operations 1505 through 1540 (or some subset of these operations) in order to track talkers as they move, to add new directed beams for persons that start talking, and to drop the directed beams for persons that have gone silent. The next round of input and analysis may be accelerated by using the loudest talker angles determined in the current round of input and analysis.
The result of the broadside scan is an amplitude envelope. The amplitude envelope may be interpreted as a sum of angularly shifted and scaled versions of the response pattern of the virtual broadside array. If the angular separation between two sources equals the angular position of a sibelobe in the response pattern, the two shifted and scaled versions of the response may have sidelobes that superimpose. To avoid detecting such superimposed sidelobes as source peaks, the processor may analyze the amplitude envelope as follows.

    
    
        (a) Estimate the angular position θP of a peak P (e.g., the peak of highest amplitude) in the amplitude envelope.
        (b) Construct a shifted and scaled version VP of the virtual broadside response pattern, corresponding to the peak P, using the angular position θP and the amplitude of the peak P.
        (c) Subtract the version VP from the amplitude envelope to obtain an update to the amplitude envelope.
    
    


The subtraction may eliminate one or more false peaks in the amplitude envelope.
Steps (a), (b) and (c) may be repeated a number of times. For example, each cycle of steps (a), (b) and (c) may eliminate the peak of highest amplitude remaining in the amplitude envelope. The procedure may terminate when the peak of highest amplitude is below a threshold value (e.g., a noise floor value).
Any of the various method embodiments disclosed herein (or any combinations thereof or portions thereof) may be implemented in terms of program instructions. The program instructions may be stored in (or on) any of various memory media. For example, in one embodiment, a memory medium may be configured to store program instructions, where the program instructions are executable to implement the method embodiment of FIG. 15A.
Furthermore, various embodiments of a system including a memory and a processor are contemplated, where the memory is configured to store program instructions and the processor is configured to read and execute the program instructions from the memory. In various embodiments, the program instructions encode corresponding ones of the method embodiments described herein (or combinations thereof or portions thereof). For example, in one embodiment, the program instructions are configured to implement the method of FIG. 15A. The system may also include the array of microphones (e.g., a circular array of microphones). For example, an embodiment of the system targeted for realization as a speakerphone may include the array of microphones. See for example FIGS. 1 and 7 and the corresponding descriptive passages herein.
Forming Beams with Nulls Directed at Noise Sources
In one set of embodiments, a method for capturing a source of acoustic intelligence and excluding one or more noise sources may involve the actions illustrated in FIG. 16A.
At 1610, angles of acoustic sources may be identified from peaks in an amplitude envelope. The amplitude envelope corresponds to an output of a virtual broadside scan on blocks of input signal samples, one block from each microphone in an array of microphones. The amplitude envelope describes the amplitude response of a virtual broadside array versus angle. As described above, the angles of the acoustic sources may be identified by repeatedly subtracting out shifted and scaled versions of the virtual broadside response pattern from the amplitude envelope;
At 1612, for each of the source angles, the input signal blocks may be operated on with a directed beam pointed in the direction of the source angle to obtain a corresponding beam signal. In one embodiment, the directed beam may a hybrid beam (e.g., hybrid superdirective/delay-and-sum beam as described above).
At 1614, each source may be classified as intelligence (e.g., speech) or noise based on analysis of spectral characteristics of the corresponding beam signal, wherein said classifying results in one or more of the sources being classified as intelligence and one or more of the sources being classified as noise. Any of various known algorithms (or combinations thereof) may be employed to perform this classification.
At 1616, parameters may be generated for a virtual beam, pointed at a first of the intelligence sources, and having one or more nulls pointed at least at a subset of the one or more noise sources. The parameters may be generated using beam design software. Such software may be included in a device such as a speakerphone so that 1616 may be performed in the speakerphone, e.g., during a conversation.
At 1618, the input signal blocks may be operated on, with the virtual beam, to obtain an output signal.
At 1620, the output signal may be transmitted to one or more remote devices.
The actions 1610 through 1620 may be performed by one or more processors in a system such as speakerphone, a video conferencing system, a surveillance system, etc. For example, a speakerphone may perform actions 1610 through 1620 during a conversation, e.g., in response to the initial detection of signal energy in the environment.
The one or more remote devices may include devices such as speakerphones, telephones, cell phones, videoconferencing systems, etc. A remote device may provide the output signal to a speaker so that one or more persons situated near the remote device may be able to hear the output signal. Because the output signal is obtained from a virtual beam pointed at the intelligence source and having one or more nulls pointed at noise sources, the output signal may be a quality representation of acoustic signals produced by the intelligence source (e.g., a talker).
The method may further involve selecting the subset of noise sources by identifying a number of the one or more noise sources whose corresponding beam signals have the highest energies. Thus, sufficiently weak noise sources may be ignored.
In some embodiments, the method may include performing the virtual broadside scan, as indicated at 1605 of FIG. 16B. The virtual broadside scan involves scanning a virtual broadside array through a set of angles spanning the circle. For example, in FIG. 15B, imagine the angle θ of the virtual broadside array VA sweeping through 360 degrees (or 180 degrees). In one embodiment, the virtual broadside scan may be performed using the Davies Transformation (e.g., repeated applications of the Davies Transformation).
The actions 1605 through 1620 may be repeated on different sets of input signal sample blocks from the microphone array, e.g., in order to track a talker as he/she moves, or to adjust the nulls in the virtual beam in response to movement of noise sources.
A current iteration of actions 1605 through 1620 may be accelerated by taking advantage of the knowledge of the intelligence source angle and noise source angles from the previous iteration.
The microphones of the microphone array may be arranged in any of various configurations, e.g., on a circle, an ellipse, a square or rectangle, on a 2D grid such as rectangular grid or a hexagonal grid, in a 3D pattern such as on the surface of a hemisphere, etc.
The microphones of the microphone array may be nominally omni-directional microphones. However, directional microphones may be employed as well.
In one embodiment, the action 1610 may include:

    
    
        estimating an angular position of a first peak in the amplitude envelope;
        constructing a shifted and scaled version of a virtual broadside response pattern using the angular position and an amplitude of the first peak;
        subtracting the shifted and scaled version from the amplitude envelope to obtain an update to the amplitude envelope.
    
    


Furthermore, the method may also include repeating the actions of estimating, constructing, and subtracting on the updated amplitude envelope in order to identify additional peaks.
In another set of embodiments, a method for capturing one or more sources of acoustic intelligence and excluding one or more noise sources may involve the actions illustrated in FIG. 16C.
At 1640, angles of acoustic sources may be identified from peaks in an amplitude envelope, wherein the amplitude envelope corresponds to an output of a virtual broadside scan on blocks of input signal samples, one block from each microphone in an array of microphones.
At 1642, for each of the source angles, the input signal blocks may be operated on, with a directed beam pointed in the direction of the source angle, to obtain a corresponding beam signal.
At 1644, each source may be classified as intelligence (e.g., speech) or noise based on analysis of spectral characteristics of the corresponding beam signal, where the action of classifying results in one or more of the sources being classified as intelligence and one or more of the sources being classified as noise.
At 1646, parameters for one or more virtual beams may be generated so that each of the one or more virtual beams is pointed at a corresponding one of the intelligence sources and has one or more nulls pointed at least at a subset of the one or more noise sources.
At 1648, the input signal blocks may be operated on with the one or more virtual beams to obtain corresponding output signals.
At 1650, a resultant signal may be generated from the one or more output signals, e.g., by adding the one or more output signals or by forming a linear combination (or other kind of combination) of the one or more output signals. The resultant signal may be transmitted to one or more remote devices.
The method may further involve performing the virtual broadside scan on the blocks of input signal samples to generate the amplitude envelope.
The virtual broadside scan and actions 1640 through 1650 may be repeated on different sets of input signal sample blocks from the microphone array, e.g., in order to track talkers as they move, to add virtual beams as persons start talking, to drop virtual beams as persons go silent, to adjust the angular positions of nulls in virtual beams as noise sources move, to add nulls as noise sources appear, to remove nulls as noise sources go silent.
The energy level of each intelligence source may be evaluated by performing an energy computation on the corresponding beam signal. The intelligence sources having the highest energies may be selected for the generation of virtual beams. This selection criterion may serve to conserve computational bandwidth and to ignore talkers that are not relevant to a current communication session.
Furthermore, the energy level of each noise source may be evaluated by performing an energy computation on the corresponding beam signal. The subset of noise sources to be nulled may the noise sources having the highest energies.
Any of the various method embodiments disclosed herein (or any combinations thereof or portions thereof) may be implemented in terms of program instructions. The program instructions may be stored in (or on) any of various memory media.
Furthermore, various embodiments of a system including a memory and a processor (or set of processors) are contemplated, where the memory is configured to store program instructions and the processor is configured to read and execute the program instructions from the memory, where the program instructions are configured to implement any of the method embodiments described herein (or combinations thereof or portions thereof). For example, in one embodiment, the program instructions are configured to implement:

    
    
        (a) identifying angles of acoustic sources from peaks in an amplitude envelope, wherein the amplitude envelope corresponds to an output of a virtual broadside scan on blocks of input signal samples, one block from each microphone in an array of microphones;
        (b) for each of the source angles, operating on the input signal blocks with a directed beam pointed in the direction of the source angle to obtain a corresponding beam signal;
        (c) classifying each source as intelligence (e.g., speech) or noise based on analysis of spectral characteristics of the corresponding beam signal, wherein said classifying results in one or more of the sources being classified as intelligence and one or more of the sources being classified as noise;
        (d) generating parameters for a virtual beam, pointed at a first of the intelligence sources, and having one or more nulls pointed at least at a subset of the one or more noise sources;
        (e) operating on the input signal blocks with the virtual beam to obtain an output signal;
        (f) transmitting the output signal to one or more remote devices.
    
    


The microphones of the microphone array may be arranged in any of various configurations, e.g., on a circle, an ellipse, a square or rectangle, on a 2D grid such as rectangular grid or a hexagonal grid, in a 3D pattern such as on the surface of a hemisphere, etc.
The microphones of the microphone array may be nominally omni-directional microphones. However, directional microphones may be employed as well.
In some embodiment, the system may also include the array of microphones. For example, an embodiment of the system targeted for realization as a speakerphone may include the microphone array.
In some embodiments, the system may be a speakerphone similar to the speakerphone described above in connection with FIG. 1B, however, with the modification that the single microphone input channel is replicated into a plurality of microphone input channels. A variety of embodiments of the speakerphone, having various different numbers of input channels, are contemplated. FIG. 16D illustrates an example of a speakerphone having 16 microphone input channels. The program instructions may be stored memory 209 and executed by processor 207.
Embodiments are contemplated where actions (a) through (f) are partitioned among a set of processors in order to increase computational throughput.
The processor 207 may select the subset of noise sources to be nulled by ordering the noise sources according to energy level. An energy level may be computed for each of the noise sources based on the corresponding beam signal. (Alternatively, the energy level of a noise source may be estimated based on the amplitude of the corresponding peak in the amplitude envelope.) The noise sources having the highest energy levels may be selected.
In some embodiments, the virtual beam may be a hybrid superdirective/delay-and-sum beam as described above. Parameters for the delay-and-sum portion of the hybrid beam may be generated using the well-known Chebyshev solution to design constraints including the following:

    
    
        an angular range defining the nominal main lobe;
        the desired out-of-main-lobe rejection;
        one or more angular positions where nulls are to be placed.
    
    


The one or more angular positions where nulls are to be placed may be the angular positions of the noise sources. In some embodiments, the solution may be constrained to be maximally flat over all of the frequencies of interest. Note that more than one null may be pointed at a given angle if desired. Furthermore, one or more of the null positions may be located in the nominal main lobe. Thus, the system can effectively “tune out” a noise source, even a noise source that is quite near to the current talker's position. For example, image a talker standing next to a projector.
Environment Modeling for Network Management
In some embodiments, the processor 207 may obtain a 3D model of the room environment by scanning a superdirected beam in all directions of the hemisphere and measure reflection time for each direction, e.g., as illustrated in FIG. 17A. The processor may transmit the 3D model to a central station for management and control.
The processor 207 may transmit a test signal and capture the response to the test signal from each of the input channels. The captured signals may be stored in memory.
Based on the known geometry of the microphone array (e.g., circular array), the processor is able to generate a highly directed beam in any direction of the hemisphere above the horizontal plane defined by the top surface of the speakerphone.
The processor may generate directed beams pointed in a set of directions that sample the hemisphere, e.g., in a fairly uniform fashion. For each direction, the processor applies the corresponding directed beam to the stored data (captured in response to the test signal transmission) to generate a corresponding beam signal.
For each direction, the processor may perform cross correlations between the beam signal and the test signal to determine the time of first reflection in each direction. The processor may convert the time of first reflection into a distance to the nearest acoustically reflective surface. These distances (in the various directions) may be used to build a 3D model of the spatial environment (e.g., the room) of the speakerphone. For example, in one embodiment, the model includes a set of vertices expressed in 3D Cartesian coordinates. Other coordinate system are contemplated as well.
It is noted that all the directed beams may operate on the single set of data gathered and stored in response to a single test signal transmission. The test signal transmission need not be repeated for each direction.
The beam forming and data analysis to generate the 3D model may be performed offline.
The processor may transfer the 3D model through a network to a central station. Software at the central station may maintain a collection of such 3D models generated by speakerphones distributed through the network.
The speakerphone may repeatedly scan the environment as described above and send the 3D model to the central station. The central station can detect if the speakerphone has been displaced, or, moved to another room, by comparing the previous 3D model stored for the speakerphone to the current 3D model, e.g., as illustrated in FIG. 17B. The central station may also detect which room the speakerphone has been moved to by searching a database of room models. The room model which most closely matches the current 3D model (sent by the speakerphone) indicates which room the speakerphone has been moved to. This allows a manager or administrator to more effectively locate and maintain control on the use of the speakerphones.
By using the above methodology, the speakerphone can characterize an arbitrary shaped room, at least that portion of the room that is above the table (or surface on which the speakerphone is sitting). The 3D environment modeling may be done when there are no conversations going on and when the ambient noise is sufficiently low, e.g., in the middle of the night after the cleaning crew has left and the air conditioner has shut off.
Distance Estimation and Proximity Effect Compensation
In one set of embodiments, the speakerphone may be programmed to estimate the position of the talker (relative to the microphone array), and then, to compensate for the proximity effect on the talker's voice signal using the estimated position, e.g., as illustrated in FIG. 18.
The processor 207 may receive a block of samples from each input channel. Each microphone of the microphone array has a different distance to the talker, and thus, the voice signal emitted by the talker may appear with different time delays (and amplitudes) in the different input blocks.
The processor may perform cross correlations to estimate the time delay of the talker's voice signal in each input block.
The processor may compute the talker's position using the set of time delays.
The processor may then apply known techniques to compensate for proximity effect using the known position of talker. This well-known proximity effect is due to the variation in the near-field boundary over frequency and can make a talker who is close to a directional microphone have much more low-frequency boost than one that is farther away from the same directional microphone.
Dereverberation of Talker's Signal Using Environment Modeling.
In some embodiments, the speakerphone may be programmed to cancel echoes (of the talker's voice signal) from received input signals using knowledge of the talker's position and the 3D model of the room, e.g., as illustrated in FIG. 19.
If the talker emits a voice signal s(t), delayed and attenuated versions of the voice signal s(t) are picked up by each of the microphones of the array. Each microphone receives a direct path transmission from the talker and a number of reflected path transmissions (echoes). Each version has the form c*s(t−τ), where delay τ depends on the length of the transmission path between the talker and the microphone, and attenuation coefficient c depends on reflection coefficient of each reflective surface encountered (if any) in the transmission path.
The processor 207 may receive an input data block from each input channel. (Each input channel corresponds to one of the microphones.)
The processor may operate on the input data blocks as described above to estimate position of the talker.
The processor may use the talker position and the 3D model of the environment to estimate the delay times τij and attenuation coefficients cij for each microphone Mi and each one of one or more echoes Ej of the talker's voice signal as received at microphone Mi.
For each input channel signal Xi, i=1, 2, . . . , NM, where NM is the number of microphones:

    
    
        For each echo Ej of the one or more echoes:
        
            Generate an echo estimate signal Sij by (a) delaying the input channel signal Xi by the corresponding echo delay time τij and (b) multiplying the delayed signal by the corresponding attenuation coefficient cij;
        
        
        Subtract a sum of the echo estimate signals (i.e., a sum over index j) from the received signal Xi to generate an output signal Yi.
    
    


The output signals Yi, i=1, 2, . . . , NM, may be combined into a final output signal. The final output signal may be transmitted to a remote speakerphone. Alternatively, the output signals may be operated on to achieve further enhancement of signal quality before formation of a final output signal.
Encoding and Decoding
A described variously above, the speakerphone 200 is configured to communicate with other devices, e.g., speakerphones, video conferencing systems, computers, etc. In particular, the speakerphone 200 may send and receive audio data in encoded form. Thus, the speakerphone 200 may employ an audio codec for encoding audio data streams and decoding already encoded streams.
In one set of embodiments, the processor 207 may employ a standard audio codec, especially a high quality audio codec, in a novel and non-standard way as described below and illustrated in FIGS. 20A and 20B. For the sake of discussion, assume that the standard codec is designed to operate on frames, each having a length of NFR samples.
The processor 207 may receive a stream S of audio samples that is to be encoded.
The processor may feed the samples of the stream S into frames. However, each frame is loaded with NA samples of the stream S, where NA is less than NFR, and the remaining NFR-NA sample locations of the frame are loaded with zeros.
There are a wide variety of options for where to place the zeroes within the frame. For example, the zeros may be placed at the end of the frame. As another example, the zeros may be placed at the beginning of the frame. As yet another example, some of the zeros may be placed at the beginning of the frame and the remainder may be placed at the end of the frame.
The processor may invoke the encoder of the standard codec for each frame. The encoder operates on each frame to generate a corresponding encoded packet. The processor may send the encoded packets to the remote device.
A second processor at the remote device receives the encoded packets transmitted by the first processor. The second processor invokes a decoder of the standard codec for each encoded packet. The decoder operates on each encoded packet to generate a corresponding decoded frame.
The second processor extracts the NA audio samples from each decoded frame and assembles the audio samples extracted from each frame into an audio stream R. The zeros are discarded.
Interchange the roles of the first processor and second processor in the above discussion and one has a description of transmission in the reverse direction. Thus, the software available to each processor may include the encoder and the decoder of a standard codec. Each processor may generate frames only partially loaded audio samples from an audio stream and partially loaded with zeros. Each processor may extract audio samples from decoded frames to reconstruct an audio stream.
Because the first processor is injecting only NA samples (and not NFR samples) of the stream S into each frame, the first processor may generate the frames (and invoke the encoder) a rate higher than the rate specified by the codec standard. Similarly, the second processor may invoke the decoder at the higher rate. Assuming the sampling rate of the stream S is rS, the first processor (second processor) may invoke the encoder (decoder) at a rate of one frame (packet) every NA/rS seconds. Thus, audio data may delivered to remote device with significantly lower latency than if each frame were filled with NFR samples of the audio stream S.
In one group of embodiments, the standard codec employed by the first processor and second processor may be a low complexity (LC) version of the Advanced Audio Codec (AAC). The AAC-LC specifies a frame size NFR=1024. In some embodiments of this group, the value NA may be any value in the closed interval [160,960]. In other embodiments of this group, the value NA may be any value in the closed interval. [320,960]. In yet other embodiments of this group, the value NA may be any value in the closed interval [480,800].
In a second group of embodiments, the standard codec employed by the first processor and the second processor may be a low delay (LD) version of the AAC. The AAC-LD specifies a frame size of NFR=512. In some embodiments of this group, the value NA may be any value in the closed interval [80,480]. In other embodiments of this group, the value NA may be any value in the closed interval [160,480]. In yet other embodiments of this group, the value NA may be any value in the closed interval [256,384].
In a third group of embodiments, the standard codec employed by the first processor and the second processor may be a 722.1 codec.
Microphone/Speaker Calibration Processes
A stimulus signal may be transmitted by the speaker. The returned signal (i.e., the signal sensed by the microphone array) may be used to perform calibration. This returned signal may include four basic signal categories (arranged in order of decreasing signal strength as seen by the microphone):
1) internal audio

    
    
        a: structure-borne vibration and/or radiated audio
        b: structure-generated audio (i.e., buzzes and rattles)
    
    


2) first arrival (i.e., direct air-path) radiated audio
3) room-related audio

    
    
        a: reflections
        b: resonances
    
    


4) measurement noise

    
    
        a: microphone self-noise
        b: external room noise
    
    


Each of these four categories can be further broken down into separate constituents. In some embodiments, the second category is measured in order to determine the microphone calibration (and microphone changes).
Measuring Internal Audio
In one set of embodiment, one may start by measuring the first type of response at the factory in a calibration chamber (where audio signals of type 3 or 4 do not exist) and subtracting that response from subsequent measurements. By comparison with a “golden unit”, one knows how audio of type 1 a) should measure, and one can then measure microphone self-noise (type 4 b) by recording data in a silent test chamber, so one can separate the different responses listed above by making a small set of simple measurements in the factory calibration chamber.
It is noted that a “failure” caused by 1 b) may dominate the measurements. Furthermore, “failures” caused by 1 b) may change dramatically over time, if something happens to the physical structure (e.g., if someone drops the unit or if it is damaged in shipping or if it is not well-assembled and something in the internal structure shifts as a result of normal handling and/or operation).
Fortunately, in a well-put together unit, the buzzes and rattles are usually only excited by a limited band of frequencies (e.g., those where the structure has a natural set of resonances). One can previously determine these “dangerous frequencies” by experiment and by measuring the “golden unit(s)”. One removes these signals from the stimulus before making the measurement by means of a very sharp notch in the frequency response of signals that are transmitted to the speaker amp.
In one embodiment, these frequencies may be determined by running a small amplitude swept-sine stimulus through the unit's speaker and measure the harmonic distortion of the resulting raw signal that shows up in the microphones. In the calibration chamber, one can measure the distortion of the speaker itself (using an external reference microphone) so one can know even the smallest levels of distortion caused by the speaker as a reference. If the swept sine is kept small enough, then one knows a-priori that the loudspeaker should not typically be the major contributor to the distortion.
If the calibration procedure is repeated in the field, and if there is distortion showing up at the microphones, and if it is equal over all of the microphones, then one knows that the loudspeaker has been damaged. If the microphone signals show non-equal distortion, then one may be confident that it is something else (typically an internal mechanical problem) that is causing this distortion. Since the speaker may be the only internal element which is equidistant from all microphones, one can determine if there is something else mechanical that is causing the distortions by examining the relative level (and phase delay, in some cases) of the distortion components that show up in each of the raw microphone signals.
So, one can analyze the distortion versus frequency for all of the microphones separately and determine where the buzzing and/or rattling component is located and then use this information to make manufacturing improvements. For example, one can determine, through analysis of the raw data, whether a plastic piece that is located between microphones 3 and 4 is not properly glued in before the unit leaves the factory floor. As another example, one can also determine if a screw is coming loose over time. Due to the differences in the measured distortion and/or frequency response seen at each of the mics, one can also determine the difference between one of the above failures and one that is caused by a mic wire that has come loose from its captive mounting, since the anomalies caused by that problem have a very different characteristic than the others.
Measurement Noise
One can determine the baseline microphone self-noise in a factory calibration chamber. In the field, however, it may be difficult to separate out the measurement of the microphone's self-noise and the room noise unless one does a lot of averaging. Even then, if the room noise is constant (in amplitude), one cannot completely remove it from the measurement. However, one can wait for the point where the overall noise level is at a minimum (for example if the unit wakes up at 2:30 am and “listens” to see if there is anyone in the room or if the HVAC fan is on, etc.) and then minimize the amount of room noise that one will see in the overall microphone self noise measurement.
Another strategy is if the room has anisotropic noise (i.e., if the noise in the room has some directional characteristic). Then one can perform beam-forming on the mic array, find the direction that the noise is strongest, measure its amplitude and then measure the noise sound field (i.e., its spatial characteristic) and then use that to come up with an estimate of how large a contribution that the noise field will make at each microphone's location. One then subtracts that value from the measured microphone noise level in order to separate the room noise from the self-noise of the mic itself.
Room-Related Audio Measurement
There are two components of the signal seen at each mic that are due to the interactions of the speaker stimulus signal and the room in which the speaker is located: reflections and resonances. One can use the mic array to determine the approximate dimensions of the room by sending a stimulus out of the loudspeaker and then measuring the first time of reflection from all directions. That will effectively tell one where the walls and ceiling are in relation to the speakerphone. From this information, one can effectively remove the contribution of the reflections to the calibration procedure by “gating” the data acquisition from the measured data sets from each of the mics. This gating process means that one only looks at the measured data during specific time intervals (when one knows that there has not been enough time for a reflection to have occurred).
The second form of room related audio measurement may be factored in as well. Room-geometry related resonances are peaks and nulls in the frequency response as measured at the microphone caused by positive and negative interference of audio waveforms due to physical objects in the room and due to the room dimensions themselves. Since one is gating the measurement based on the room dimensions, then one can get rid of the latter of the two (so-called standing waves). However, one may still need to factor out the resonances that are caused by objects in the room that are closer to the phone than the walls (for example, if the phone is sitting on a wooden table that resonates at certain frequencies). One can deal with these issues much in the same way that one deals with the problematic frequencies in the structure of the phone itself; by adding sharp notches in the stimulus signal such that these resonances are not excited. The goal is to differentiate between these kinds of resonances and similar resonances that occur in the structure of the phone itself. Three methods for doing this are as follows: 1) one knows a-priori where these resonances typically occur in the phone itself, 2) external resonances tend to be lower in frequency than internal resonances and 3) one knows that these external object related resonances only occur after a certain time (i.e., if one measures the resonance effects at the earliest time of arrival of the stimulus signal, then it will be different than the resonance behavior after the signal has had time to reflect off of the external resonator).
So, after one factors in all of the adjustments described above, one then can isolate the first arrival (i.e., direct air-path) radiated audio signal from the rest of the contributions to the mic signal. That is how one can perform accurate offline (and potentially online) mic and speaker calibration.
CONCLUSION
Various embodiments may further include receiving, sending or storing program instructions and/or data implemented in accordance with any of the methods described herein (or combinations thereof or portions thereof) upon a computer-accessible medium. Generally speaking, a computer-accessible medium may include:

    
    
        storage media or memory media such as magnetic media (e.g., magnetic disk), optical media (e.g., CD-ROM), semiconductor media (e.g., any of various kinds of RAM or ROM), or any combination thereof;
        transmission media or signals such as electrical, electromagnetic, or digital signals, conveyed via a communication medium such as network and/or a wireless link.
    
    


The various methods as illustrated in the Figures and described herein represent exemplary embodiments of methods. The methods may be implemented in software, hardware, or a combination thereof. The order of operations in the various methods may be changed, and various operations may be added, reordered, combined, omitted, modified, etc.
Various modifications and changes may be made as would be obvious to a person skilled in the art having the benefit of this disclosure. It is intended that the invention embrace all such modifications and changes and, accordingly, the above description be regarded in an illustrative rather than a restrictive sense.

## Claims

1. A method comprising:
(a) identifying angles of acoustic sources from peaks in an amplitude envelope, wherein the amplitude envelope corresponds to an output of a virtual broadside scan on blocks of input signal samples, one block from each microphone in an array of microphones, wherein the microphones of the array are arranged on a circle, wherein the virtual broadside scan comprises scanning a virtual broadside array through a set of angles spanning the circle in order to generate said output, wherein the virtual broadside array operates on the blocks of input signal samples;
(b) for each of the source angles, operating on the input signal blocks with a directed beam pointed in the direction of the source angle to obtain a corresponding beam signal;
(c) classifying each source as speech or noise based on analysis of spectral characteristics of the corresponding beam signal, wherein said classifying results in one or more of the sources being classified as speech and one or more of the sources being classified as noise;
(d) generating parameters for a virtual beam, pointed at a first of the speech sources, and having one or more nulls pointed at least at a subset of the one or more noise sources;
(e) operating on the input signal blocks with the virtual beam to obtain an output signal;
(f) transmitting the output signal to one or more remote devices.

2. The method of claim 1, wherein (a) through (f) are performed by one or more processors in a speakerphone.

3. The method of claim 1 further comprising:
selecting said subset of the one or more noise sources by identifying a number of the one or more noise sources whose corresponding beam signals have the highest energies.

4. The method of claim 1 further comprising:
performing the virtual broadside scan on the blocks of input signal samples to generate the amplitude envelope.

5. The method of claim 4 further comprising:
repeating said performing and said actions (a) through (f) on different sets of input signal sample blocks from the array of microphones.

6. The method of claim 1, wherein the microphones of said array are arranged in a horizontal plane.

7. The method of claim 1, wherein the microphones of said array are omni-directional microphones.

8. The method of claim 1, wherein said identifying angles of acoustic sources from peaks in an amplitude envelope comprises:
estimating an angular position of a first peak in the amplitude envelope;
constructing a shifted and scaled version of a virtual broadside response pattern using the angular position and an amplitude of the first peak;
subtracting the shifted and scaled version from the amplitude envelope to obtain an update to the amplitude envelope.

9. The method of claim 8 further comprising repeating said estimating, said constructing, and said subtracting on the updated amplitude envelope in order to identify a second peak.

10. A computer readable memory medium configured to store program instructions, wherein the program instructions are executable to implement:
(a) identifying angles of acoustic sources from peaks in an amplitude envelope, wherein the amplitude envelope corresponds to an output of a virtual broadside scan on blocks of input signal samples, one block from each microphone in an array of microphones, wherein the microphones of the array are arranged on a circle, wherein the virtual broadside scan comprises scanning a virtual broadside array through a set of angles spanning the circle in order to generate said output, wherein the virtual broadside array operates on the blocks of input signal samples;
(b) for each of the source angles, operating on the input signal blocks with a directed beam pointed in the direction of the source angle to obtain a corresponding beam signal;
(c) classifying each source as speech or noise based on analysis of spectral characteristics of the corresponding beam signal, wherein said classifying results in one or more of the sources being classified as speech and one or more of the sources being classified as noise;
(d) generating parameters for one or more virtual beams so that each of the one or more virtual beams is pointed at a corresponding one of the speech sources and has one or more nulls pointed at least at a subset of the one or more noise sources;
(e) operating on the input signal blocks with the one or more virtual beams to obtain corresponding output signals;
(f) generating a resultant signal from the one or more output signals.

11. The memory medium of claim 10, wherein the program instructions are executable to further implement:
transmitting the resultant signal to one or more remote devices.

12. The memory medium of claim 10 wherein the program instructions are executable to further implement:
performing the virtual broadside scan on the blocks of input signal samples to generate the amplitude envelope.

13. The memory medium of claim 11 wherein the program instructions are executable to further implement:
repeating said performing and operations (a) through (f) on different sets of input signal sample blocks from the array of microphones.

14. The memory medium of claim 10 further comprising:
selecting said subset of the one or more noise sources by identifying a number of the one or more noise sources whose corresponding beam signals have the highest energies.

15. The memory medium of claim 1, wherein said identifying angles of acoustic sources from peaks in an amplitude envelope comprises:
estimating an angular position of a first peak in the amplitude envelope;
constructing a shifted and scaled version of a virtual broadside response pattern using the angular position and an amplitude of the first peak;
subtracting the shifted and scaled version from the amplitude envelope to obtain an update to the amplitude envelope.

16. The memory medium of claim 15 wherein the program instructions are executable to further implement:
repeating said estimating, said constructing and said subtracting on the updated amplitude envelope.

17. A system comprising:
memory configured to store program instructions;
a processor configured to read and execute the program instructions from the memory, wherein the program instructions are executable by the processor to implement:
(a) identifying angles of acoustic sources from peaks in an amplitude envelope, wherein the amplitude envelope corresponds to an output of a virtual broadside scan on blocks of input signal samples, one block from each microphone in an array of microphones, wherein the microphones of the array are arranged on a circle, wherein the virtual broadside scan comprises scanning a virtual broadside array through a set of angles spanning the circle in order to generate said output, wherein the virtual broadside array operates on the blocks of input signal samples;
(b) for each of the source angles, operating on the input signal blocks with a directed beam pointed in the direction of the source angle to obtain a corresponding beam signal;
(c) classifying each source as speech or noise based on analysis of spectral characteristics of the corresponding beam signal, wherein said classifying results in one or more of the sources being classified as speech and one or more of the sources being classified as noise;
(d) generating parameters for a virtual beam, pointed at a first of the speech sources, and having one or more nulls pointed at least at a subset of the one or more noise sources;
(e) operating on the input signal blocks with the virtual beam to obtain an output signal;
(f) transmitting the output signal to one or more remote devices.

18. The system of claim 17 further comprising said array of microphones.