# Patent

## Title
Auto focus, auto focus within regions, and auto placement of beamformed microphone lobes with inhibition functionality

## Abstract

Array microphone systems and methods that can automatically focus and/or place beamformed lobes in response to detected sound activity are provided. The automatic focus and/or placement of the beamformed lobes can be inhibited based on a remote far end audio signal. The quality of the coverage of audio sources in an environment may be improved by ensuring that beamformed lobes are optimally picking up the audio sources even if they have moved and changed locations.

## Background
CROSS-REFERENCE TO RELATED APPLICATIONS
This application is a continuation of U.S. patent application Ser. No. 16/826,115, filed Mar. 20, 2020, which claims the benefit of U.S. Provisional Patent Application No. 62/821,800, filed Mar. 21, 2019, U.S. Provisional Patent Application No. 62/855,187, filed May 31, 2019, and U.S. Provisional Patent Application No. 62/971,648, filed Feb. 7, 2020. The contents of each application are fully incorporated by reference in their entirety herein.


TECHNICAL FIELD
This application generally relates to an array microphone having automatic focus and placement of beamformed microphone lobes. In particular, this application relates to an array microphone that adjusts the focus and placement of beamformed microphone lobes based on the detection of sound activity after the lobes have been initially placed, and allows inhibition of the adjustment of the focus and placement of the beamformed microphone lobes based on a remote far end audio signal.
BACKGROUND
Conferencing environments, such as conference rooms, boardrooms, video conferencing applications, and the like, can involve the use of microphones for capturing sound from various audio sources active in such environments. Such audio sources may include humans speaking, for example. The captured sound may be disseminated to a local audience in the environment through amplified speakers (for sound reinforcement), and/or to others remote from the environment (such as via a telecast and/or a webcast). The types of microphones and their placement in a particular environment may depend on the locations of the audio sources, physical space requirements, aesthetics, room layout, and/or other considerations. For example, in some environments, the microphones may be placed on a table or lectern near the audio sources. In other environments, the microphones may be mounted overhead to capture the sound from the entire room, for example. Accordingly, microphones are available in a variety of sizes, form factors, mounting options, and wiring options to suit the needs of particular environments.
Traditional microphones typically have fixed polar patterns and few manually selectable settings. To capture sound in a conferencing environment, many traditional microphones can be used at once to capture the audio sources within the environment. However, traditional microphones tend to capture unwanted audio as well, such as room noise, echoes, and other undesirable audio elements. The capturing of these unwanted noises is exacerbated by the use of many microphones.
Array microphones having multiple microphone elements can provide benefits such as steerable coverage or pick up patterns (having one or more lobes), which allow the microphones to focus on the desired audio sources and reject unwanted sounds such as room noise. The ability to steer audio pick up patterns provides the benefit of being able to be less precise in microphone placement, and in this way, array microphones are more forgiving. Moreover, array microphones provide the ability to pick up multiple audio sources with one array microphone or unit, again due to the ability to steer the pickup patterns.
However, the position of lobes of a pickup pattern of an array microphone may not be optimal in certain environments and situations. For example, an audio source that is initially detected by a lobe may move and change locations. In this situation, the lobe may not optimally pick up the audio source at the its new location.
Accordingly, there is an opportunity for an array microphone that addresses these concerns. More particularly, there is an opportunity for an array microphone that automatically focuses and/or places beamformed microphone lobes based on the detection of sound activity after the lobes have been initially placed, while also being able to inhibit the focus and/or placement of the beamformed microphone lobes based on a remote far end audio signal, which can result in higher quality sound capture and more optimal coverage of environments.
SUMMARY
The invention is intended to solve the above-noted problems by providing array microphone systems and methods that are designed to, among other things: (1) enable automatic focusing of beamformed lobes of an array microphone in response to the detection of sound activity, after the lobes have been initially placed; (2) enable automatic placement of beamformed lobes of an array microphone in response to the detection of sound activity; (3) enable automatic focusing of beamformed lobes of an array microphone within lobe regions in response to the detection of sound activity, after the lobes have been initially placed; and (4) inhibit or restrict the automatic focusing or automatic placement of beamformed lobes of an array microphone, based on activity of a remote far end audio signal.
In an embodiment, beamformed lobes that have been positioned at initial coordinates may be focused by moving the lobes to new coordinates in the general vicinity of the initial coordinates, when new sound activity is detected at the new coordinates.
In another embodiment, beamformed lobes may be placed or moved to new coordinates, when new sound activity is detected at the new coordinates.
In a further embodiment, beamformed lobes that have been positioned at initial coordinates may be focused by moving the lobes, but confined within lobe regions, when new sound activity is detected at the new coordinates.
In another embodiment, the movement or placement of beamformed lobes may be inhibited or restricted, when the activity of a remote far end audio signal exceeds a predetermined threshold.
These and other embodiments, and various permutations and aspects, will become apparent and be more fully understood from the following detailed description and accompanying drawings, which set forth illustrative embodiments that are indicative of the various ways in which the principles of the invention may be employed.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a schematic diagram of an array microphone with automatic focusing of beamformed lobes in response to the detection of sound activity, in accordance with some embodiments.
FIG. 2 is a flowchart illustrating operations for automatic focusing of beamformed lobes, in accordance with some embodiments.
FIG. 3 is a flowchart illustrating operations for automatic focusing of beamformed lobes that utilizes a cost functional, in accordance with some embodiments.
FIG. 4 is a schematic diagram of an array microphone with automatic placement of beamformed lobes of an array microphone in response to the detection of sound activity, in accordance with some embodiments.
FIG. 5 is a flowchart illustrating operations for automatic placement of beamformed lobes, in accordance with some embodiments.
FIG. 6 is a flowchart illustrating operations for finding lobes near detected sound activity, in accordance with some embodiments.
FIG. 7 is an exemplary depiction of an array microphone with beamformed lobes within lobe regions, in accordance with some embodiments.
FIG. 8 is a flowchart illustrating operations for automatic focusing of beamformed lobes within lobe regions, in accordance with some embodiments.
FIG. 9 is a flowchart illustrating operations for determining whether detected sound activity is within a look radius of a lobe, in accordance with some embodiments.
FIG. 10 is an exemplary depiction of an array microphone with beamformed lobes within lobe regions and showing a look radius of a lobe, in accordance with some embodiments.
FIG. 11 is a flowchart illustrating operations for determining movement of a lobe within a move radius of a lobe, in accordance with some embodiments.
FIG. 12 is an exemplary depiction of an array microphone with beamformed lobes within lobe regions and showing a move radius of a lobe, in accordance with some embodiments.
FIG. 13 is an exemplary depiction of an array microphone with beamformed lobes within lobe regions and showing boundary cushions between lobe regions, in accordance with some embodiments.
FIG. 14 is a flowchart illustrating operations for limiting movement of a lobe based on boundary cushions between lobe regions, in accordance with some embodiments.
FIG. 15 is an exemplary depiction of an array microphone with beamformed lobes within regions and showing the movement of a lobe based on boundary cushions between regions, in accordance with some embodiments.
FIG. 16 is a schematic diagram of an array microphone with automatic focusing of beamformed lobes in response to the detection of sound activity and inhibition of the automatic focusing based on a remote far end audio signal, in accordance with some embodiments.
FIG. 17 is a schematic diagram of an array microphone with automatic placement of beamformed lobes of an array microphone in response to the detection of sound activity and inhibition of the automatic placement based on a remote far end audio signal, in accordance with some embodiments.
FIG. 18 is a flowchart illustrating operations for inhibiting automatic adjustment of beamformed lobes of an array microphone based on a remote far end audio signal, in accordance with some embodiments.
FIG. 19 is a schematic diagram of an array microphone with automatic placement of beamformed lobes of an array microphone in response to the detection of sound activity and activity detection of the sound activity, in accordance with some embodiments.
FIG. 20 is a flowchart illustrating operations for automatic placement of beamformed lobes including activity detection of sound activity, in accordance with some embodiments.



DETAILED DESCRIPTION
The description that follows describes, illustrates and exemplifies one or more particular embodiments of the invention in accordance with its principles. This description is not provided to limit the invention to the embodiments described herein, but rather to explain and teach the principles of the invention in such a way to enable one of ordinary skill in the art to understand these principles and, with that understanding, be able to apply them to practice not only the embodiments described herein, but also other embodiments that may come to mind in accordance with these principles. The scope of the invention is intended to cover all such embodiments that may fall within the scope of the appended claims, either literally or under the doctrine of equivalents.
It should be noted that in the description and drawings, like or substantially similar elements may be labeled with the same reference numerals. However, sometimes these elements may be labeled with differing numbers, such as, for example, in cases where such labeling facilitates a more clear description. Additionally, the drawings set forth herein are not necessarily drawn to scale, and in some instances proportions may have been exaggerated to more clearly depict certain features. Such labeling and drawing practices do not necessarily implicate an underlying substantive purpose. As stated above, the specification is intended to be taken as a whole and interpreted in accordance with the principles of the invention as taught herein and understood to one of ordinary skill in the art.
The array microphone systems and methods described herein can enable the automatic focusing and placement of beamformed lobes in response to the detection of sound activity, as well as allow the focus and placement of the beamformed lobes to be inhibited based on a remote far end audio signal. In embodiments, the array microphone may include a plurality of microphone elements, an audio activity localizer, a lobe auto-focuser, a database, and a beamformer. The audio activity localizer may detect the coordinates and confidence score of new sound activity, and the lobe auto-focuser may determine whether there is a previously placed lobe nearby the new sound activity. If there is such a lobe and the confidence score of the new sound activity is greater than a confidence score of the lobe, then the lobe auto-focuser may transmit the new coordinates to the beamformer so that the lobe is moved to the new coordinates. In these embodiments, the location of a lobe may be improved and automatically focused on the latest location of audio sources inside and near the lobe, while also preventing the lobe from overlapping, pointing in an undesirable direction (e.g., towards unwanted noise), and/or moving too suddenly.
In other embodiments, the array microphone may include a plurality of microphone elements, an audio activity localizer, a lobe auto-placer, a database, and a beamformer. The audio activity localizer may detect the coordinates of new sound activity, and the lobe auto-placer may determine whether there is a lobe nearby the new sound activity. If there is not such a lobe, then the lobe auto-placer may transmit the new coordinates to the beamformer so that an inactive lobe is placed at the new coordinates or so that an existing lobe is moved to the new coordinates. In these embodiments, the set of active lobes of the array microphone may point to the most recent sound activity in the coverage area of the array microphone.
In other embodiments, the audio activity localizer may detect the coordinates and confidence score of new sound activity, and if the confidence score of the new sound activity is greater than a threshold, the lobe auto-focuser may identify a lobe region that the new sound activity belongs to. In the identified lobe region, a previously placed lobe may be moved if the coordinates are within a look radius of the current coordinates of the lobe, i.e., a three-dimensional region of space around the current coordinates of the lobe where new sound activity can be considered. The movement of the lobe in the lobe region may be limited to within a move radius of the current coordinates of the lobe, i.e., a maximum distance in three-dimensional space that the lobe is allowed to move, and/or limited to outside a boundary cushion between lobe regions, i.e., how close a lobe can move to the boundaries between lobe regions. In these embodiments, the location of a lobe may be improved and automatically focused on the latest location of audio sources inside the lobe region associated with the lobe, while also preventing the lobes from overlapping, pointing in an undesirable direction (e.g., towards unwanted noise), and/or moving too suddenly.
In further embodiments, an activity detector may receive a remote audio signal, such as from a far end. The sound of the remote audio signal may be played in the local environment, such as on a loudspeaker within a conference room. If the activity of the remote audio signal exceeds a predetermined threshold, then the automatic adjustment (i.e., focus and/or placement) of beamformed lobes may be inhibited from occurring. For example, the activity of the remote audio signal could be measured by the energy level of the remote audio signal. In this example, the energy level of the remote audio signal may exceed the predetermined threshold when there is a certain level of speech or voice contained in the remote audio signal. In this situation, it may be desirable to prevent automatic adjustment of the beamformed lobes so that lobes are not directed to pick up the sound from the remote audio signal, e.g., that is being played in local environment. However, if the energy level of the remote audio signal does not exceed the predetermined threshold, then the automatic adjustment of beamformed lobes may be performed. The automatic adjustment of the beamformed lobes may include, for example, the automatic focus and/or placement of the lobes as described herein. In these embodiments, the location of a lobe may be improved and automatically focused and/or placed when the activity of the remote audio signal does not exceed a predetermined threshold, and inhibited or restricted from being automatically focused and/or placed when the activity of the remote audio signal exceeds the predetermined threshold.
Through the use of the systems and methods herein, the quality of the coverage of audio sources in an environment may be improved by, for example, ensuring that beamformed lobes are optimally picking up the audio sources even if the audio sources have moved and changed locations from an initial position. The quality of the coverage of audio source in an environment may also be improved by, for example, reducing the likelihood that beamformed lobes are deployed (e.g., focused or placed) to pick up unwanted sounds like voice, speech, or other noise from the far end.
FIGS. 1 and 4 are schematic diagrams of array microphones 100, 400 that can detect sounds from audio sources at various frequencies. The array microphone 100, 400 may be utilized in a conference room or boardroom, for example, where the audio sources may be one or more human speakers. Other sounds may be present in the environment which may be undesirable, such as noise from ventilation, other persons, audio/visual equipment, electronic devices, etc. In a typical situation, the audio sources may be seated in chairs at a table, although other configurations and placements of the audio sources are contemplated and possible.
The array microphone 100, 400 may be placed on or in a table, lectern, desktop, wall, ceiling, etc. so that the sound from the audio sources can be detected and captured, such as speech spoken by human speakers. The array microphone 100, 400 may include any number of microphone elements 102a,b, . . . , zz, 402a,b, . . . , zz, for example, and be able to form multiple pickup patterns with lobes so that the sound from the audio sources can be detected and captured. Any appropriate number of microphone elements 102, 402 are possible and contemplated.
Each of the microphone elements 102, 402 in the array microphone 100, 400 may detect sound and convert the sound to an analog audio signal. Components in the array microphone 100, 400, such as analog to digital converters, processors, and/or other components, may process the analog audio signals and ultimately generate one or more digital audio output signals. The digital audio output signals may conform to the Dante standard for transmitting audio over Ethernet, in some embodiments, or may conform to another standard and/or transmission protocol. In embodiments, each of the microphone elements 102, 402 in the array microphone 100, 400 may detect sound and convert the sound to a digital audio signal.
One or more pickup patterns may be formed by a beamformer 170, 470 in the array microphone 100, 400 from the audio signals of the microphone elements 102, 402. The beamformer 170, 470 may generate digital output signals 190a,b,c, . . . z, 490a,b,c, . . . , z corresponding to each of the pickup patterns. The pickup patterns may be composed of one or more lobes, e.g., main, side, and back lobes. In other embodiments, the microphone elements 102, 402 in the array microphone 100, 400 may output analog audio signals so that other components and devices (e.g., processors, mixers, recorders, amplifiers, etc.) external to the array microphone 100, 400 may process the analog audio signals.
The array microphone 100 of FIG. 1 that automatically focuses beamformed lobes in response to the detection of sound activity may include the microphone elements 102; an audio activity localizer 150 in wired or wireless communication with the microphone elements 102; a lobe auto-focuser 160 in wired or wireless communication with the audio activity localizer 150; a beamformer 170 in wired or wireless communication with the microphone elements 102 and the lobe auto-focuser 160; and a database 180 in wired or wireless communication with the lobe auto-focuser 160. These components are described in more detail below.
The array microphone 400 of FIG. 4 that automatically places beamformed lobes in response to the detection of sound activity may include the microphone elements 402; an audio activity localizer 450 in wired or wireless communication with the microphone elements 402; a lobe auto-placer 460 in wired or wireless communication with the audio activity localizer 450; a beamformer 470 in wired or wireless communication with the microphone elements 402 and the lobe auto-placer 460; and a database 480 in wired or wireless communication with the lobe auto-placer 460. These components are described in more detail below.
In embodiments, the array microphone 100, 400 may include other components, such as an acoustic echo canceller or an automixer, that works with the audio activity localizer 150, 450 and/or the beamformer 170, 470. For example, when a lobe is moved to new coordinates in response to detecting new sound activity, as described herein, information from the movement of the lobe may be utilized by an acoustic echo canceller to minimize echo during the movement and/or by an automixer to improve its decision making capability. As another example, the movement of a lobe may be influenced by the decision of an automixer, such as allowing a lobe to be moved that the automixer has identified as having pertinent voice activity. The beamformer 170, 470 may be any suitable beamformer, such as a delay and sum beamformer or a minimum variance distortionless response (MVDR) beamformer.
The various components included in the array microphone 100, 400 may be implemented using software executable by one or more servers or computers, such as a computing device with a processor and memory, graphics processing units (GPUs), and/or by hardware (e.g., discrete logic circuits, application specific integrated circuits (ASIC), programmable gate arrays (PGA), field programmable gate arrays (FPGA), etc.
In some embodiments, the microphone elements 102, 402 may be arranged in concentric rings and/or harmonically nested. The microphone elements 102, 402 may be arranged to be generally symmetric, in some embodiments. In other embodiments, the microphone elements 102, 402 may be arranged asymmetrically or in another arrangement. In further embodiments, the microphone elements 102, 402 may be arranged on a substrate, placed in a frame, or individually suspended, for example. An embodiment of an array microphone is described in commonly assigned U.S. Pat. No. 9,565,493, which is hereby incorporated by reference in its entirety herein. In embodiments, the microphone elements 102, 402 may be unidirectional microphones that are primarily sensitive in one direction. In other embodiments, the microphone elements 102, 402 may have other directionalities or polar patterns, such as cardioid, subcardioid, or omnidirectional, as desired. The microphone elements 102, 402 may be any suitable type of transducer that can detect the sound from an audio source and convert the sound to an electrical audio signal. In an embodiment, the microphone elements 102, 402 may be micro-electrical mechanical system (MEMS) microphones. In other embodiments, the microphone elements 102, 402 may be condenser microphones, balanced armature microphones, electret microphones, dynamic microphones, and/or other types of microphones. In embodiments, the microphone elements 102, 402 may be arrayed in one dimension or two dimensions. The array microphone 100, 400 may be placed or mounted on a table, a wall, a ceiling, etc., and may be next to, under, or above a video monitor, for example.
An embodiment of a process 200 for automatic focusing of previously placed beamformed lobes of the array microphone 100 is shown in FIG. 2. The process 200 may be performed by the lobe auto-focuser 160 so that the array microphone 100 can output one or more audio signals 180 from the array microphone 100, where the audio signals 180 may include sound picked up by the beamformed lobes that are focused on new sound activity of an audio source. One or more processors and/or other processing components (e.g., analog to digital converters, encryption chips, etc.) within or external to the array microphone 100 may perform any, some, or all of the steps of the process 200. One or more other types of components (e.g., memory, input and/or output devices, transmitters, receivers, buffers, drivers, discrete components, etc.) may also be utilized in conjunction with the processors and/or other processing components to perform any, some, or all of the steps of the process 200.
At step 202, the coordinates and a confidence score corresponding to new sound activity may be received at the lobe auto-focuser 160 from the audio activity localizer 150. The audio activity localizer 150 may continuously scan the environment of the array microphone 100 to find new sound activity. The new sound activity found by the audio activity localizer 150 may include suitable audio sources, e.g., human speakers, that are not stationary. The coordinates of the new sound activity may be a particular three dimensional coordinate relative to the location of the array microphone 100, such as in Cartesian coordinates (i.e., x, y, z), or in spherical coordinates (i.e., radial distance/magnitude r, elevation angle θ (theta), azimuthal angle φ (phi)). The confidence score of the new sound activity may denote the certainty of the coordinates and/or the quality of the sound activity, for example. In embodiments, other suitable metrics related to the new sound activity may be received and utilized at step 202. It should be noted that Cartesian coordinates may be readily converted to spherical coordinates, and vice versa, as needed.
The lobe auto-focuser 160 may determine whether the coordinates of the new sound activity are nearby (i.e., in the vicinity of) an existing lobe, at step 204. Whether the new sound activity is nearby an existing lobe may be based on the difference in azimuth and/or elevation angles of (1) the coordinates of the new sound activity and (2) the coordinates of the existing lobe, relative to a predetermined threshold. The distance of the new sound activity away from the microphone 100 may also influence the determination of whether the coordinates of the new sound activity are nearby an existing lobe. The lobe auto-focuser 160 may retrieve the coordinates of the existing lobe from the database 180 for use in step 204, in some embodiments. An embodiment of the determination of whether the coordinates of the new sound activity are nearby an existing lobe is described in more detail below with respect to FIG. 6.
If the lobe auto-focuser 160 determines that the coordinates of the new sound activity are not nearby an existing lobe at step 204, then the process 200 may end at step 210 and the locations of the lobes of the array microphone 100 are not updated. In this scenario, the coordinates of the new sound activity may be considered to be outside the coverage area of the array microphone 100 and the new sound activity may therefore be ignored. However, if at step 204 the lobe auto-focuser 160 determines that the coordinates of the new sound activity are nearby an existing lobe, then the process 200 continues to step 206. In this scenario, the coordinates of the new sound activity may be considered to be an improved (i.e., more focused) location of the existing lobe.
At step 206, the lobe auto-focuser 160 may compare the confidence score of the new sound activity to the confidence score of the existing lobe. The lobe auto-focuser 160 may retrieve the confidence score of the existing lobe from the database 180, in some embodiments. If the lobe auto-focuser 160 determines at step 206 that the confidence score of the new sound activity is less than (i.e., worse than) the confidence score of the existing lobe, then the process 200 may end at step 210 and the locations of the lobes of the array microphone 100 are not updated. However, if the lobe auto-focuser 160 determines at step 206 that the confidence score of the new sound activity is greater than or equal to (i.e., better than or more favorable than) the confidence score of the existing lobe, then the process 200 may continue to step 208. At step 208, the lobe auto-focuser 160 may transmit the coordinates of the new sound activity to the beamformer 170 so that the beamformer 170 can update the location of the existing lobe to the new coordinates. In addition, the lobe auto-focuser 160 may store the new coordinates of the lobe in the database 180.
In some embodiments, at step 208, the lobe auto-focuser 160 may limit the movement of an existing lobe to prevent and/or minimize sudden changes in the location of the lobe. For example, the lobe auto-focuser 160 may not move a particular lobe to new coordinates if that lobe has been recently moved within a certain recent time period. As another example, the lobe auto-focuser 160 may not move a particular lobe to new coordinates if those new coordinates are too close to the lobe's current coordinates, too close to another lobe, overlapping another lobe, and/or considered too far from the existing position of the lobe.
The process 200 may be continuously performed by the array microphone 100 as the audio activity localizer 150 finds new sound activity and provides the coordinates and confidence score of the new sound activity to the lobe auto-focuser 160. For example, the process 200 may be performed as audio sources, e.g., human speakers, are moving around a conference room so that one or more lobes can be focused on the audio sources to optimally pick up their sound.
An embodiment of a process 300 for automatic focusing of previously placed beamformed lobes of the array microphone 100 using a cost functional is shown in FIG. 3. The process 300 may be performed by the lobe auto-focuser 160 so that the array microphone 100 can output one or more audio signals 180, where the audio signals 180 may include sound picked up by the beamformed lobes that are focused on new sound activity of an audio source. One or more processors and/or other processing components (e.g., analog to digital converters, encryption chips, etc.) within or external to the microphone array 100 may perform any, some, or all of the steps of the process 300. One or more other types of components (e.g., memory, input and/or output devices, transmitters, receivers, buffers, drivers, discrete components, etc.) may also be utilized in conjunction with the processors and/or other processing components to perform any, some, or all of the steps of the process 300.
Steps 302, 304, and 306 of the process 300 for the lobe auto-focuser 160 may be substantially the same as steps 202, 204, and 206 of the process 200 of FIG. 2 described above. In particular, the coordinates and a confidence score corresponding to new sound activity may be received at the lobe auto-focuser 160 from the audio activity localizer 150. The lobe auto-focuser 160 may determine whether the coordinates of the new sound activity are nearby (i.e., in the vicinity of) an existing lobe. If the coordinates of the new sound activity are not nearby an existing lobe (or if the confidence score of the new sound activity is less than the confidence score of the existing lobe), then the process 300 may proceed to step 324 and the locations of the lobes of the array microphone 100 are not updated. However, if at step 306, the lobe auto-focuser 160 determines that the confidence score of the new sound activity is more than (i.e., better than or more favorable than) the confidence score of the existing lobe, then the process 300 may continue to step 308. In this scenario, the coordinates of the new sound activity may be considered to be a candidate location to move the existing lobe to, and a cost functional of the existing lobe may be evaluated and maximized, as described below.
A cost functional for a lobe may take into account spatial aspects of the lobe and the audio quality of the new sound activity. As used herein, a cost functional and a cost function have the same meaning. In particular, the cost functional for a lobe i may be defined in some embodiments as a function of the coordinates of the new sound activity (LC), a signal-to-noise ratio for the lobe (SNR), a gain value for the lobe (Gain), voice activity detection information related to the new sound activity (VAR), and distances from the coordinates of the existing lobe (distance(LOi)). In other embodiments, the cost functional for a lobe may be a function of other information. The cost functional for a lobe i can be written as Ji(x,y,z) with Cartesian coordinates or Ji(azimuth, elevation, magnitude) with spherical coordinates, for example. Using the cost functional with Cartesian coordinates as exemplary, the cost functional Ji(x,y,z)=f (LCi, distance(LOi), Gaini, SNRi, VARi). Accordingly, the lobe may be moved by evaluating and maximizing the cost functional Ji over a spatial grid of coordinates, such that the movement of the lobe is in the direction of the gradient (i.e., steepest ascent) of the cost functional. The maximum of the cost functional may be the same as the coordinates of the new sound activity received by the lobe auto-focuser 160 at step 302 (i.e., the candidate location), in some situations. In other situations, the maximum of the cost functional may move the lobe to a different position than the coordinates of the new sound activity, when taking into account the other parameters described above.
At step 308, the cost functional for the lobe may be evaluated by the lobe auto-focuser 160 at the coordinates of the new sound activity. The evaluated cost functional may be stored by the lobe auto-focuser 160 in the database 180, in some embodiments. At step 310, the lobe auto-focuser 160 may move the lobe by each of an amount Δx, Δy, Δz in the x, y, and z directions, respectively, from the coordinates of the new sound activity. After each movement, the cost functional may be evaluated by the lobe auto-focuser 160 at each of these locations. For example, the lobe may be moved to a location (x+Δx, y, z) and the cost functional may be evaluated at that location; then moved to a location (x, y+Δy, z) and the cost functional may be evaluated at that location; and then moved to a location (x, y, z+Δz) and the cost functional may be evaluated at that location. The lobe may be moved by the amounts Δx, Δy, Δz in any order at step 310. Each of the evaluated cost functionals at these locations may be stored by the lobe auto-focuser 160 in the database 180, in some embodiments. The evaluations of the cost functional are performed by the lobe auto-focuser 160 at step 310 in order to compute an estimate of partial derivatives and the gradient of the cost functional, as described below. It should be noted that while the description above is with relation to Cartesian coordinates, a similar operation may be performed with spherical coordinates (e.g., Δazimuth, Δelevation, Δmagnitude).
At step 312, the gradient of the cost functional may be calculated by the lobe auto-focuser 160 based on the set of estimates of the partial derivatives. The gradient ∇J may calculated as follows:



 
  
  
   
    
     ∇
     J
    
    =
    
     
      (
      
       
        gx
        i
       
       ,
       
        gy
        i
       
       ,
       
        gz
        i
       
      
      )
     
     ≈
     
      (
      
       
        
         
          
           J
           i
          
          (
          
           
            
             x
             i
            
            +
            
             Δ
             ⁢
             x
            
           
           ,
           
            y
            i
           
           ,
           
            z
            i
           
          
          )
         
         -
         
          
           J
           i
          
          (
          
           
            x
            i
           
           ,
           
            y
            i
           
           ,
           
            z
            i
           
          
          )
         
        
        
         Δ
         ⁢
         x
        
       
       ,
       
        
         
          
           J
           i
          
          (
          
           
            x
            i
           
           ,
           
            
             y
             i
            
            +
            
             Δ
             ⁢
             y
            
           
           ,
           
            z
            i
           
          
          )
         
         -
         
          
           J
           i
          
          (
          
           
            x
            i
           
           ,
           
            y
            i
           
           ,
           
            z
            i
           
          
          )
         
        
        
         Δ
         ⁢
         y
        
       
       ,
       
        
         
          
           J
           i
          
          (
          
           
            x
            i
           
           ,
           
            y
            i
           
           ,
           
            
             z
             i
            
            +
            
             Δ
             ⁢
             z
            
           
          
          )
         
         -
         
          
           J
           i
          
          (
          
           
            x
            i
           
           ,
           
            y
            i
           
           ,
           
            z
            i
           
          
          )
         
        
        
         Δ
         ⁢
         z
        
       
      
      )
     
    
   
   
  
 



At step 314, the lobe auto-focuser 160 may move the lobe by a predetermined step size μ in the direction of the gradient  calculated at step 312. In particular, the lobe may be moved to a new location: (xi+μgxiyi+μgyizi+μgzi). The cost functional of the lobe at this new location may also be evaluated by the lobe auto-focuser 160 at step 314. This cost functional may be stored by the lobe auto-focuser 160 in the database 180, in some embodiments.
At step 316, the lobe auto-focuser 160 may compare the cost functional of the lobe at the new location (evaluated at step 314) with the cost functional of the lobe at the coordinates of the new sound activity (evaluated at step 308). If the cost functional of the lobe at the new location is less than the cost functional of the lobe at the coordinates of the new sound activity at step 316, then the step size p at step 314 may be considered as too large, and the process 300 may continue to step 322. At step 322, the step size may be adjusted and the process may return to step 314.
However, if the cost functional of the lobe at the new location is not less than the cost functional of the lobe at the coordinates of the new sound activity at step 316, then the process 300 may continue to step 318. At step 318, the lobe auto-focuser 160 may determine whether the difference between (1) the cost functional of the lobe at the new location (evaluated at step 314) and (2) the cost functional of the lobe at the coordinates of the new sound activity (evaluated at step 308) is close, i.e., whether the absolute value of the difference is within a small quantity E. If the condition is not satisfied at step 318, then it may be considered that a local maximum of the cost functional has not been reached. The process 300 may proceed to step 324 and the locations of the lobes of the array microphone 100 are not updated.
However, if the condition is satisfied at step 318, then it may be considered that a local maximum of the cost functional has been reached and that the lobe has been auto focused, and the process 300 proceeds to step 320. At step 320, the lobe auto-focuser 160 may transmit the coordinates of the new sound activity to the beamformer 170 so that the beamformer 170 can update the location of the lobe to the new coordinates. In addition, the lobe auto-focuser 160 may store the new coordinates of the lobe in the database 180.
In some embodiments, annealing/dithering movements of the lobe may be applied by the lobe auto-focuser 160 at step 320. The annealing/dithering movements may be applied to nudge the lobe out of a local maximum of the cost functional to attempt to find a better local maximum (and therefore a better location for the lobe). The annealing/dithering locations may be defined by (xi+rxi, yi+ryi, zi+rzi), where (rxi, ryi, rzi) are small random values.
The process 300 may be continuously performed by the array microphone 100 as the audio activity localizer 150 finds new sound activity and provides the coordinates and confidence score of the new sound activity to the lobe auto-focuser 160. For example, the process 300 may be performed as audio sources, e.g., human speakers, are moving around a conference room so that one or more lobes can be focused on the audio sources to optimally pick up their sound.
In embodiments, the cost functional may be re-evaluated and updated, e.g., steps 308-318 and 322, and the coordinates of the lobe may be adjusted without needing to receive a set of coordinates of new sound activity, e.g., at step 302. For example, an algorithm may detect which lobe of the array microphone 100 has the most sound activity without providing a set of coordinates of new sound activity. Based on the sound activity information from such an algorithm, the cost functional may be re-evaluated and updated.
An embodiment of a process 500 for automatic placement or deployment of beamformed lobes of the array microphone 400 is shown in FIG. 5. The process 500 may be performed by the lobe auto-placer 460 so that the array microphone 400 can output one or more audio signals 480 from the array microphone 400 shown in FIG. 4, where the audio signals 480 may include sound picked up by the placed beamformed lobes that are from new sound activity of an audio source. One or more processors and/or other processing components (e.g., analog to digital converters, encryption chips, etc.) within or external to the microphone array 400 may perform any, some, or all of the steps of the process 500. One or more other types of components (e.g., memory, input and/or output devices, transmitters, receivers, buffers, drivers, discrete components, etc.) may also be utilized in conjunction with the processors and/or other processing components to perform any, some, or all of the steps of the process 500.
At step 502, the coordinates corresponding to new sound activity may be received at the lobe auto-placer 460 from the audio activity localizer 450. The audio activity localizer 450 may continuously scan the environment of the array microphone 400 to find new sound activity. The new sound activity found by the audio activity localizer 450 may include suitable audio sources, e.g., human speakers, that are not stationary. The coordinates of the new sound activity may be a particular three dimensional coordinate relative to the location of the array microphone 400, such as in Cartesian coordinates (i.e., x, y, z), or in spherical coordinates (i.e., radial distance/magnitude r, elevation angle θ (theta), azimuthal angle φ (phi)).
In embodiments, the placement of beamformed lobes may occur based on whether an amount of activity of the new sound activity exceeds a predetermined threshold. FIG. 19 is a schematic diagram of an array microphone 1900 that can detect sounds from audio sources at various frequencies, and automatically place beamformed lobes in response to the detection of sound activity while taking into account the amount of activity of the new sound activity. In embodiments, the array microphone 1900 may include some or all of the same components as the array microphone 400 described above, e.g., the microphones 402, the audio activity localizer 450, the lobe auto-placer 460, the beamformer 470, and/or the database 480. The array microphone 1900 may also include an activity detector 1904 in communication with the lobe auto-placer 460 and the beamformer 470.
The activity detector 1904 may detect an amount of activity in the new sound activity. In some embodiments, the amount of activity may be measured as the energy level of the new sound activity. In other embodiments, the amount of activity may be measured using methods in the time domain and/or frequency domain, such as by applying machine learning (e.g., using cepstrum coefficients), measuring signal non-stationarity in one or more frequency bands, and/or searching for features of desirable sound or speech.
In embodiments, the activity detector 1904 may be a voice activity detector (VAD) which can determine whether there is voice and/or noise present in the remote audio signal. A VAD may be implemented, for example, by analyzing the spectral variance of the remote audio signal, using linear predictive coding, applying machine learning or deep learning techniques to detect voice and/or noise, and/or using well-known techniques such as the ITU G.729 VAD, ETSI standards for VAD calculation included in the GSM specification, or long term pitch prediction.
Based on the detected amount of activity, automatic lobe placement may be performed or not performed. The automatic lobe placement may be performed when the detected activity of the new sound activity satisfies predetermined criteria. Conversely, the automatic lobe placement may not be performed when the detected activity of the new sound activity does not satisfy predetermined criteria. For example, satisfying the predetermined criteria may indicate that the new sound activity includes voice, speech, or other sound that is preferably to be picked up by a lobe. As another example, not satisfying the predetermined criteria may indicate that the new sound activity does not include voice, speech, or other sound that is preferably to be picked up by a lobe. By inhibiting automatic lobe placement in this latter scenario, a lobe will not be placed to avoid picking up sound from the new sound activity.
As seen in the process 2000 of FIG. 20, at step 2003 following step 502, it can be determined whether the amount of activity of the new sound activity satisfies the predetermined criteria. The new sound activity may be received by the activity detector 1904 from the beamformer 470, for example. The detected amount of activity may correspond to the amount of speech, voice, noise, etc. in the new sound activity. In embodiments, the amount of activity may be measured as the energy level of the new sound activity, or as the amount of voice in the new sound activity. In embodiments, the detected amount of activity may specifically indicate the amount of voice or speech in the new sound activity. In other embodiments, the detected amount of activity may be a voice-to-noise ratio, or indicate an amount of noise in the new sound activity.
If the amount of activity does not satisfy the predetermined criteria at step 2003, then the process 2000 may end at step 522 and the locations of the lobes of the array microphone 1900 are not updated. The detected amount of activity of the new sound activity may not satisfy the predetermined criteria when there is a relatively low amount of speech of voice in the new sound activity, and/or the voice-to-noise ratio is relatively low. Similarly, the detected amount of activity of the new sound activity may not satisfy the predetermined criteria when there is a relatively high amount of noise in the new sound activity. Accordingly, not automatically placing a lobe to detect the new sound activity may help to ensure that undesirable sound is not picked.
If the amount of activity satisfies the predetermined criteria at step 2003, then the process 2000 may continue to step 504 as described below. The detected amount of activity of the new sound activity may satisfy the predetermined criteria when there is a relatively high amount of speech or voice in the new sound activity, and/or the voice-to-noise ratio is relatively high. Similarly, the detected amount of activity of the new sound activity may satisfy the predetermined criteria when there is a relatively low amount of noise in the new sound activity. Accordingly, automatically placing a lobe to detect the new sound activity may be desirable in this scenario.
Returning to the process 500, at step 504, the lobe auto-placer 460 may update a timestamp, such as to the current value of a clock. The timestamp may be stored in the database 480, in some embodiments. In embodiments, the timestamp and/or the clock may be real time values, e.g., hour, minute, second, etc. In other embodiments, the timestamp and/or the clock may be based on increasing integer values that may enable tracking of the time ordering of events.
The lobe auto-placer 460 may determine at step 506 whether the coordinates of the new sound activity are nearby (i.e., in the vicinity of) an existing active lobe. Whether the new sound activity is nearby an existing lobe may be based on the difference in azimuth and/or elevation angles of (1) the coordinates of the new sound activity and (2) the coordinates of the existing lobe, relative to a predetermined threshold. The distance of the new sound activity away from the microphone 400 may also influence the determination of whether the coordinates of the new sound activity are nearby an existing lobe. The lobe auto-placer 460 may retrieve the coordinates of the existing lobe from the database 480 for use in step 506, in some embodiments. An embodiment of the determination of whether the coordinates of the new sound activity are nearby an existing lobe is described in more detail below with respect to FIG. 6.
If at step 506 the lobe auto-placer 460 determines that the coordinates of the new sound activity are nearby an existing lobe, then the process 500 continues to step 520. At step 520, the timestamp of the existing lobe is updated to the current timestamp from step 504. In this scenario, the existing lobe is considered able to cover (i.e., pick up) the new sound activity. The process 500 may end at step 522 and the locations of the lobes of the array microphone 400 are not updated.
However, if at step 506 the lobe auto-placer 460 determines that the coordinates of the new sound activity are not nearby an existing lobe, then the process 500 continues to step 508. In this scenario, the coordinates of the new sound activity may be considered to be outside the current coverage area of the array microphone 400, and therefore the new sound activity needs to be covered. At step 508, the lobe auto-placer 460 may determine whether an inactive lobe of the array microphone 400 is available. In some embodiments, a lobe may be considered inactive if the lobe is not pointed to a particular set of coordinates, or if the lobe is not deployed (i.e., does not exist). In other embodiments, a deployed lobe may be considered inactive based on whether a metric of the deployed lobe (e.g., time, age, etc.) satisfies certain criteria. If the lobe auto-placer 460 determines that there is an inactive lobe available at step 508, then the inactive lobe is selected at step 510 and the timestamp of the newly selected lobe is updated to the current timestamp (from step 504) at step 514.
However, if the lobe auto-placer 460 determines that there is not an inactive lobe available at step 508, then the process 500 may continue to step 512. At step 512, the lobe auto-placer 460 may select a currently active lobe to recycle to be pointed at the coordinates of the new sound activity. In some embodiments, the lobe selected for recycling may be an active lobe with the lowest confidence score and/or the oldest timestamp. The confidence score for a lobe may denote the certainty of the coordinates and/or the quality of the sound activity, for example. In embodiments, other suitable metrics related to the lobe may be utilized. The oldest timestamp for an active lobe may indicate that the lobe has not recently detected sound activity, and possibly that the audio source is no longer present in the lobe. The lobe selected for recycling at step 512 may have its timestamp updated to the current timestamp (from step 504) at step 514.
At step 516, a new confidence score may be assigned to the lobe, both when the lobe is a selected inactive lobe from step 510 or a selected recycled lobe from step 512. At step 518, the lobe auto-placer 460 may transmit the coordinates of the new sound activity to the beamformer 470 so that the beamformer 470 can update the location of the lobe to the new coordinates. In addition, the lobe auto-placer 460 may store the new coordinates of the lobe in the database 480.
The process 500 may be continuously performed by the array microphone 400 as the audio activity localizer 450 finds new sound activity and provides the coordinates of the new sound activity to the lobe auto-placer 460. For example, the process 500 may be performed as audio sources, e.g., human speakers, are moving around a conference room so that one or more lobes can be placed to optimally pick up the sound of the audio sources.
An embodiment of a process 600 for finding previously placed lobes near sound activity is shown in FIG. 6. The process 600 may be utilized by the lobe auto-focuser 160 at step 204 of the process 200, at step 304 of the process 300, and/or at step 806 of the process 800, and/or by the lobe auto-placer 460 at step 506 of the process 500. In particular, the process 600 may determine whether the coordinates of the new sound activity are nearby an existing lobe of an array microphone 100, 400. Whether the new sound activity is nearby an existing lobe may be based on the difference in azimuth and/or elevation angles of (1) the coordinates of the new sound activity and (2) the coordinates of the existing lobe, relative to a predetermined threshold. The distance of the new sound activity away from the array microphone 100, 400 may also influence the determination of whether the coordinates of the new sound activity are nearby an existing lobe.
At step 602, the coordinates corresponding to new sound activity may be received at the lobe auto-focuser 160 or the lobe auto-placer 460 from the audio activity localizer 150, 450, respectively. The coordinates of the new sound activity may be a particular three dimensional coordinate relative to the location of the array microphone 100, 400, such as in Cartesian coordinates (i.e., x, y, z), or in spherical coordinates (i.e., radial distance/magnitude r, elevation angle θ (theta), azimuthal angle φ (phi)). It should be noted that Cartesian coordinates may be readily converted to spherical coordinates, and vice versa, as needed.
At step 604, the lobe auto-focuser 160 or the lobe auto-placer 460 may determine whether the new sound activity is relatively far away from the array microphone 100, 400 by evaluating whether the distance of the new sound activity is greater than a determined threshold. The distance of the new sound activity may be determined by the magnitude of the vector representing the coordinates of the new sound activity. If the new sound activity is determined to be relatively far away from the array microphone 100, 400 at step 604 (i.e., greater than the threshold), then at step 606 a lower azimuth threshold may be set for later usage in the process 600. If the new sound activity is determined to not be relatively far away from the array microphone 100, 400 at step 604 (i.e., less than or equal to the threshold), then at step 608 a higher azimuth threshold may be set for later usage in the process 600.
Following the setting of the azimuth threshold at step 606 or step 608, the process 600 may continue to step 610. At step 610, the lobe auto-focuser 160 or the lobe auto-placer 460 may determine whether there are any lobes to check for their vicinity to the new sound activity. If there are no lobes of the array microphone 100, 400 to check at step 610, then the process 600 may end at step 616 and denote that there are no lobes in the vicinity of the array microphone 100, 400.
However, if there are lobes of the array microphone 100, 400 to check at step 610, then the process 600 may continue to step 612 and examine one of the existing lobes. At step 612, the lobe auto-focuser 160 or the lobe auto-placer 460 may determine whether the absolute value of the difference between (1) the azimuth of the existing lobe and (2) the azimuth of the new sound activity is greater than the azimuth threshold (that was set at step 606 or step 608). If the condition is satisfied at step 612, then it may be considered that the lobe under examination is not within the vicinity of the new sound activity. The process 600 may return to step 610 to determine whether there are further lobes to examine.
However, if the condition is not satisfied at step 612, then the process 600 may proceed to step 614. At step 614, the lobe auto-focuser 160 or the lobe auto-placer 460 may determine whether the absolute value of the difference between (1) the elevation of the existing lobe and (2) the elevation of the new sound activity is greater than a predetermined elevation threshold. If the condition is satisfied at step 614, then it may be considered that the lobe under examination is not within the vicinity of the new sound activity. The process 600 may return to step 610 to determine whether there are further lobes to examine. However, if the condition is not satisfied at step 614, then the process 600 may end at step 618 and denote that the lobe under examination is in the vicinity of the new sound activity.
FIG. 7 is an exemplary depiction of an array microphone 700 that can automatically focus previously placed beamformed lobes within associated lobe regions in response to the detection of new sound activity. In embodiments, the array microphone 700 may include some or all of the same components as the array microphone 100 described above, e.g., the audio activity localizer 150, the lobe auto-focuser 160, the beamformer 170, and/or the database 180. Each lobe of the array microphone 700 may be moveable within its associated lobe region, and a lobe may not cross the boundaries between the lobe regions. It should be noted that while FIG. 7 depicts eight lobes with eight associated lobe regions, any number of lobes and associated lobe regions is possible and contemplated, such as the four lobes with four associated lobe regions depicted in FIGS. 10, 12, 13, and 15. It should also be noted that FIGS. 7, 10, 12, 13, and 15 are depicted as two-dimensional representations of the three-dimensional space around an array microphone.
At least two sets of coordinates may be associated with each lobe of the array microphone 700: (1) original or initial coordinates LOi (e.g., that are configured automatically or manually at the time of set up of the array microphone 700), and (2) current coordinates {right arrow over (LCi )} where a lobe is currently pointing at a given time. The sets of coordinates may indicate the position of the center of a lobe, in some embodiments. The sets of coordinates may be stored in the database 180, in some embodiments.
In addition, each lobe of the array microphone 700 may be associated with a lobe region of three-dimensional space around it. In embodiments, a lobe region may be defined as a set of points in space that is closer to the initial coordinates LOi of a lobe than to the coordinates of any other lobe of the array microphone. In other words, if p is defined as a point in space, then the point p may belong to a particular lobe region LRi, if the distance D between the point p and the center of a lobe i (LOi) is the smallest than for any other lobe, as in the following:



 
  
   p
   ∈
   
    
     LR
     i
    
    ⁢
       
    iff
    ⁢
       
    i
   
  
  =
  
   
    
     argmin
     
      1
      ≤
      i
      ≤
      N
     
    
    (
    
     D
     ⁡
     (
     
      p
      ,
      
       LO
       i
      
     
     )
    
    )
   
   .
  
 



Regions that are defined in this fashion are known as Voronoi regions or Voronoi cells. For example, it can be seen in FIG. 7 that there are eight lobes with associated lobe regions that have boundaries depicted between each of the lobe regions. The boundaries between the lobe regions are the sets of points in space that are equally distant from two or more adjacent lobes. It is also possible that some sides of a lobe region may be unbounded. In embodiments, the distance D may be the Euclidean distance between point p and LOi, e.g., √{square root over ((x1−x2)2+(y1−y2)2+(z1−z2)2)}. In some embodiments, the lobe regions may be recalculated as particular lobes are moved.

In embodiments, the lobe regions may be calculated and/or updated based on sensing the environment (e.g., objects, walls, persons, etc.) that the array microphone 700 is situated in using infrared sensors, visual sensors, and/or other suitable sensors. For example, information from a sensor may be used by the array microphone 700 to set the approximate boundaries for lobe regions, which in turn can be used to place the associated lobes. In further embodiments, the lobe regions may be calculated and/or updated based on a user defining the lobe regions, such as through a graphical user interface of the array microphone 700.
As further shown in FIG. 7, there may be various parameters associated with each lobe that can restrict its movement during the automatic focusing process, as described below. One parameter is a look radius of a lobe that is a three-dimensional region of space around the initial coordinates LOi of the lobe where new sound activity can be considered. In other words, if new sound activity is detected in a lobe region but is outside the look radius of the lobe, then there would be no movement or automatic focusing of the lobe in response to the detection of the new sound activity. Points that are outside of the look radius of a lobe can therefore be considered as an ignore or “don't care” portion of the associated lobe region. For example, in FIG. 7, the point denoted as A is outside the look radius of lobe 5 and its associated lobe region 5, so any new sound activity at point A would not cause the lobe to be moved. Conversely, if new sound activity is detected in a particular lobe region and is inside the look radius of its lobe, then the lobe may be automatically moved and focused in response to the detection of the new sound activity.
Another parameter is a move radius of a lobe that is a maximum distance in space that the lobe is allowed to move. The move radius of a lobe is generally less than the look radius of the lobe, and may be set to prevent the lobe from moving too far away from the array microphone or too far away from the initial coordinates LOi of the lobe. For example, in FIG. 7, the point denoted as B is both within the look radius and the move radius of lobe 5 and its associated lobe region 5. If new sound activity is detected at point B, then lobe 5 could be moved to point B. As another example, in FIG. 7, the point denoted as C is within the look radius of lobe 5 but outside the move radius of lobe 5 and its associated lobe region 5. If new sound activity is detected at point C, then the maximum distance that lobe 5 could be moved is limited to the move radius.
A further parameter is a boundary cushion of a lobe that is a maximum distance in space that the lobe is allowed to move towards a neighboring lobe region and toward the boundary between the lobe regions. For example, in FIG. 7, the point denoted as D is outside of the boundary cushion of lobe 8 and its associated lobe region 8 (that is adjacent to lobe region 7). The boundary cushions of the lobes may be set to minimize the overlap of adjacent lobes. In FIGS. 7, 10, 12, 13, and 15, the boundaries between lobe regions are denoted by a dashed line, and the boundary cushions for each lobe region are denoted by dash-dot lines that are parallel to the boundaries.
An embodiment of a process 800 for automatic focusing of previously placed beamformed lobes of the array microphone 700 within associated lobe regions is shown in FIG. 8. The process 800 may be performed by the lobe auto-focuser 160 so that the array microphone 700 can output one or more audio signals 180 from the array microphone 700, where the audio signals 180 may include sound picked up by the beamformed lobes that are focused on new sound activity of an audio source. One or more processors and/or other processing components (e.g., analog to digital converters, encryption chips, etc.) within or external to the array microphone 700 may perform any, some, or all of the steps of the process 800. One or more other types of components (e.g., memory, input and/or output devices, transmitters, receivers, buffers, drivers, discrete components, etc.) may also be utilized in conjunction with the processors and/or other processing components to perform any, some, or all of the steps of the process 800.
Step 802 of the process 800 for the lobe auto-focuser 160 may be substantially the same as step 202 of the process 200 of FIG. 2 described above. In particular, the coordinates and a confidence score corresponding to new sound activity may be received at the lobe auto-focuser 160 from the audio activity localizer 150 at step 802. In embodiments, other suitable metrics related to the new sound activity may be received and utilized at step 802. At step 804, the lobe auto-focuser 160 may compare the confidence score of the new sound activity to a predetermined threshold to determine whether the new confidence score is satisfactory. If the lobe auto-focuser 160 determines at step 804 that the confidence score of the new sound activity is less than the predetermined threshold (i.e., that the confidence score is not satisfactory), then the process 800 may end at step 820 and the locations of the lobes of the array microphone 700 are not updated. However, if the lobe auto-focuser 160 determines at step 804 that the confidence score of the new sound activity is greater than or equal to the predetermined threshold (i.e., that the confidence score is satisfactory), then the process 800 may continue to step 806.
At step 806, the lobe auto-focuser 160 may identify the lobe region that the new sound activity is within, i.e., the lobe region which the new sound activity belongs to. In embodiments, the lobe auto-focuser 160 may find the lobe closest to the coordinates of the new sound activity in order to identify the lobe region at step 806. For example, the lobe region may be identified by finding the initial coordinates LOi of a lobe that are closest to the new sound activity, such as by finding an index i of a lobe such that the distance between the coordinates of the new sound activity and the initial coordinates LOi of a lobe is minimized:



 
  i
  =
  
   
    
     argmin
     
      1
      ≤
      i
      ≤
      N
     
    
    (
    
     D
     ⁡
     (
     
      s
      ,
      
       LO
       i
      
     
     )
    
    )
   
   .
  
 



The lobe and its associated lobe region that contain the new sound activity may be determined as the lobe and lobe region identified at step 806.

After the lobe region has been identified at step 806, the lobe auto-focuser 160 may determine whether the coordinates of the new sound activity are outside a look radius of the lobe at step 808. If the lobe auto-focuser 160 determines that the coordinates of the new sound activity are outside the look radius of the lobe at step 808, then the process 800 may end at step 820 and the locations of the lobes of the array microphone 700 are not updated. In other words, if the new sound activity is outside the look radius of the lobe, then the new sound activity can be ignored and it may be considered that the new sound activity is outside the coverage of the lobe. As an example, point A in FIG. 7 is within lobe region 5 that is associated with lobe 5, but is outside the look radius of lobe 5. Details of determining whether the coordinates of the new sound activity are outside the look radius of a lobe are described below with respect to FIGS. 9 and 10.
However, if at step 808 the lobe auto-focuser 160 determines that the coordinates of the new sound activity are not outside (i.e., are inside) the look radius of the lobe, then the process 800 may continue to step 810. In this scenario, the lobe may be moved towards the new sound activity contingent on assessing the coordinates of the new sound activity with respect to other parameters such as a move radius and a boundary cushion, as described below. At step 810, the lobe auto-focuser 160 may determine whether the coordinates of the new sound activity are outside a move radius of the lobe. If the lobe auto-focuser 160 determines that the coordinates of the new sound activity are outside the move radius of the lobe at step 810, then the process 800 may continue to step 816 where the movement of the lobe may be limited or restricted. In particular, at step 816, the new coordinates where the lobe may be provisionally moved to can be set to no more than the move radius. The new coordinates may be provisional because the movement of the lobe may still be assessed with respect to the boundary cushion parameter, as described below. In embodiments, the movement of the lobe at step 816 may be restricted based on a scaling factor α (where 0<α≤1), in order to prevent the lobe from moving too far from its initial coordinates LOi. As an example, point C in FIG. 7 is outside the move radius of lobe 5 so the farthest distance that lobe 5 could be moved is the move radius. After step 816, the process 800 may continue to step 812. Details of limiting the movement of a lobe to within its move radius are described below with respect to FIGS. 11 and 12.
The process 800 may also continue to step 812 if at step 810 the lobe auto-focuser 160 determines that the coordinates of the new sound activity are not outside (i.e., are inside) the move radius of the lobe. As an example, point B in FIG. 7 is inside the move radius of lobe 5 so lobe 5 could be moved to point B. At step 812, the lobe auto-focuser 160 may determine whether the coordinates of the new sound activity are close to a boundary cushion and are therefore too close to an adjacent lobe. If the lobe auto-focuser 160 determines that the coordinates of the new sound activity are close to a boundary cushion at step 812, then the process 800 may continue to step 818 where the movement of the lobe may be limited or restricted. In particular, at step 818, the new coordinates where the lobe may be moved to may be set to just outside the boundary cushion. In embodiments, the movement of the lobe at step 818 may be restricted based on a scaling factor β (where 0<β≤1). As an example, point D in FIG. 7 is outside the boundary cushion between adjacent lobe region 8 and lobe region 7. The process 800 may continue to step 814 following step 818. Details regarding the boundary cushion are described below with respect to FIGS. 13-15.
The process 800 may also continue to step 814 if at step 812 the lobe auto-focuser 160 determines that the coordinates of the new sound activity are not close to a boundary cushion. At step 812, the lobe auto-focuser 160 may transmit the new coordinates of the lobe to the beamformer 170 so that the beamformer 170 can update the location of the existing lobe to the new coordinates. In embodiments, the new coordinates {right arrow over (LCi)} of the lobe may be defined as {right arrow over (LCi)}={right arrow over (LOi)}+min(α, β){right arrow over (M)}={right arrow over (LOi)}+{right arrow over (Mr)}, where {right arrow over (M)} is a motion vector and {right arrow over (Mr)} is a restricted motion vector, as described in more detail below. In embodiments, the lobe auto-focuser 160 may store the new coordinates of the lobe in the database 180.
Depending on the steps of the process 800 described above, when a lobe is moved due to the detection of new sound activity, the new coordinates of the lobe may be: (1) the coordinates of the new sound activity, if the coordinates of the new sound activity are within the look radius of the lobe, within the move radius of the lobe, and not close to the boundary cushion of the associated lobe region; (2) a point in the direction of the motion vector towards the new sound activity and limited to the range of the move radius, if the coordinates of the new sound activity are within the look radius of the lobe, outside the move radius of the lobe, and not close to the boundary cushion of the associated lobe region; or (3) just outside the boundary cushion, if the coordinates of the new sound activity are within the look radius of the lobe and close to the boundary cushion.
The process 800 may be continuously performed by the array microphone 700 as the audio activity localizer 150 finds new sound activity and provides the coordinates and confidence score of the new sound activity to the lobe auto-focuser 160. For example, the process 800 may be performed as audio sources, e.g., human speakers, are moving around a conference room so that one or more lobes can be focused on the audio sources to optimally pick up their sound.
An embodiment of a process 900 for determining whether the coordinates of new sound activity are outside the look radius of a lobe is shown in FIG. 9. The process 900 may be utilized by the lobe auto-focuser 160 at step 808 of the process 800, for example. In particular, the process 900 may begin at step 902 where a motion vector {right arrow over (M)} may be computed as {right arrow over (M)}={right arrow over (s)}−{right arrow over (LOi)}. The motion vector may be the vector connecting the center of the original coordinates LOi of the lobe to the coordinates {right arrow over (s)} of the new sound activity. For example, as shown in FIG. 10, new sound activity S is present in lobe region 3 and the motion vector {right arrow over (M)} is shown between the original coordinates LO3 of lobe 3 and the coordinates of the new sound activity S. The look radius for lobe 3 is also depicted in FIG. 10.
After computing the motion vector {right arrow over (M)} at step 902, the process 900 may continue to step 904. At step 904, the lobe auto-focuser 160 may determine whether the magnitude of the motion vector is greater than the look radius for the lobe, as in the following: |{right arrow over (M)}|=√{square root over ((mx)2+(my)2+(mz)2)}>(LookRadius)i. If the magnitude of the motion vector {right arrow over (M)} is greater than the look radius for the lobe at step 904, then at step 906, the coordinates of the new sound activity may be denoted as outside the look radius for the lobe. For example, as shown in FIG. 10, because the new sound activity S is outside the look radius of lobe 3, the new sound activity S would be ignored. However, if the magnitude of the motion vector {right arrow over (M)} is less than or equal to the look radius for the lobe at step 904, then at step 908, the coordinates of the new sound activity may be denoted as inside the look radius for the lobe.
An embodiment of a process 1100 for limiting the movement of a lobe to within its move radius is shown in FIG. 11. The process 1100 may be utilized by the lobe auto-focuser 160 at step 816 of the process 800, for example. In particular, the process 1100 may begin at step 1102 where a motion vector {right arrow over (M)} may be computed as {right arrow over (M)}={right arrow over (s)}−{right arrow over (LOi)}, similar to as described above with respect to step 902 of the process 900 shown in FIG. 9. For example, as shown in FIG. 12, new sound activity S is present in lobe region 3 and the motion vector {right arrow over (M)} is shown between the original coordinates LO3 of lobe 3 and the coordinates of the new sound activity S. The move radius for lobe 3 is also depicted in FIG. 12.
After computing the motion vector {right arrow over (M)} at step 1102, the process 1100 may continue to step 1104. At step 1104, the lobe auto-focuser 160 may determine whether the magnitude of the motion vector {right arrow over (M)} is less than or equal to the move radius for the lobe, as in the following: |{right arrow over (M)}|≤(MoveRadius)i. If the magnitude of the motion vector {right arrow over (M)} is less than or equal to the move radius at step 1104, then at step 1106, the new coordinates of the lobe may be provisionally moved to the coordinates of the new sound activity. For example, as shown in FIG. 12, because the new sound activity S is inside the move radius of lobe 3, the lobe would provisionally be moved to the coordinates of the new sound activity S.
However, if the magnitude of the motion vector {right arrow over (M)} is greater than the move radius at step 1104, then at step 1108, the magnitude of the motion vector {right arrow over (M)} may be scaled by a scaling factor α to the maximum value of the move radius while keeping the same direction, as in the following:



 
  
   
    M
    →
   
   =
   
    
     
      
       
        (
        
         M
         ⁢
         o
         ⁢
         v
         ⁢
         e
         ⁢
         R
         ⁢
         a
         ⁢
         d
         ⁢
         i
         ⁢
         u
         ⁢
         s
        
        )
       
       i
      
      
       
        ❘
        "\[LeftBracketingBar]"
       
       
        M
        →
       
       
        ❘
        "\[RightBracketingBar]"
       
      
     
     ⁢
     
      M
      →
     
    
    =
    
     α
     ⁢
     
      M
      →
     
    
   
  
  ,
 



where the scaling factor α may be defined as:




 
  α
  =
  
   {
   
    
     
      
       
        
         
          
           (
           
            M
            ⁢
            o
            ⁢
            v
            ⁢
            e
            ⁢
            R
            ⁢
            a
            ⁢
            d
            ⁢
            i
            ⁢
            u
            ⁢
            s
           
           )
          
          i
         
         
          
           ❘
           "\[LeftBracketingBar]"
          
          
           M
           →
          
          
           ❘
           "\[RightBracketingBar]"
          
         
        
        ,
       
      
      
       
        
         
          ❘
          "\[LeftBracketingBar]"
         
         
          M
          →
         
         
          ❘
          "\[RightBracketingBar]"
         
        
        >
        
         
          (
          
           M
           ⁢
           o
           ⁢
           v
           ⁢
           e
           ⁢
           R
           ⁢
           a
           ⁢
           d
           ⁢
           i
           ⁢
           u
           ⁢
           s
          
          )
         
         i
        
       
      
     
     
      
       
        1
        ,
       
      
      
       
        
         
          ❘
          "\[LeftBracketingBar]"
         
         
          M
          →
         
         
          ❘
          "\[RightBracketingBar]"
         
        
        ≤
        
         
          (
          
           M
           ⁢
           o
           ⁢
           v
           ⁢
           e
           ⁢
           R
           ⁢
           a
           ⁢
           d
           ⁢
           i
           ⁢
           u
           ⁢
           s
          
          )
         
         i
        
       
      
     
    
    .
   
  
 



FIGS. 13-15 relate to the boundary cushion of a lobe region, which is the portion of the space next to the boundary or edge of the lobe region that is adjacent to another lobe region. In particular, the boundary cushion next to the boundary between two lobes i and j may be described indirectly using a vector {right arrow over (Dij)} that connects the original coordinates of the two lobes (i.e., LOi and LOj). Accordingly, such a vector can be described as: {right arrow over (Dij)}={right arrow over (LOj)}−{right arrow over (LOi)}. The midpoint of this vector {right arrow over (Dij)} may be a point that is at the boundary between the two lobe regions. In particular, moving from the original coordinates LOi of lobe i in the direction of the vector {right arrow over (Dij)} is the shortest path towards the adjacent lobe j. Furthermore, moving from the original coordinates LOi of lobe i in the direction of the vector {right arrow over (Dij)} but keeping the amount of movement to half of the magnitude of the vector {right arrow over (Dij)} will be the exact boundary between the two lobe regions.
Based on the above, moving from the original coordinates LOi of lobe i in the direction of the vector {right arrow over (Dij)} but restricting the amount of movement based on a value A (where 0<A<1)



 
  (
  
   
    i
    .
    e
    .
   
   ,
    
   
    A
    ⁢
    
     
      
       
        ❘
        "\[LeftBracketingBar]"
       
       
        D
        ij
       
       
        ❘
        "\[RightBracketingBar]"
       
      
      →
     
     2
    
   
  
  )
 



will be within (100*A) % of the boundary between the lobe regions. For example, if A is 0.8 (i.e., 80%), then the new coordinates of a moved lobe would be within 80% of the boundary between lobe regions. Therefore, the value A can be utilized to create the boundary cushion between two adjacent lobe regions. In general, a larger boundary cushion can prevent a lobe from moving into another lobe region, while a smaller boundary cushion can allow a lobe to move closer to another lobe region.

In addition, it should be noted that if a lobe i is moved in a direction towards a lobe j due to the detection of new sound activity (e.g., in the direction of a motion vector {right arrow over (M)} as described above), there is a component of movement in the direction of the lobe j, i.e., in the direction of the vector {right arrow over (Dij)}. In order to find the component of movement in the direction of the vector {right arrow over (Dij)}, the motion vector {right arrow over (M)} can be projected onto the unit vector {right arrow over (Duij)}={right arrow over (Dij)}/{right arrow over (|Dij|)} (which has the same direction as the vector {right arrow over (Dij)} with unity magnitude) to compute a projected vector {right arrow over (PMij)}. As an example, FIG. 13 shows a vector {right arrow over (D32)} that connects lobes 3 and 2, which is also the shortest path from the center of lobe 3 towards lobe region 2. The projected vector {right arrow over (PM32)} shown in FIG. 13 is the projection of the motion vector {right arrow over (M)} onto the unit vector {right arrow over (D32)}/{right arrow over (|D23|)}.
An embodiment of a process 1400 for creating a boundary cushion of a lobe region using vector projections is shown in FIG. 14. The process 1400 may be utilized by the lobe auto-focuser 160 at step 818 of the process 800, for example. The process 1400 may result in restricting the magnitude of a motion vector {right arrow over (M)} such that a lobe is not moved in the direction of any other lobe region by more than a certain percentage that characterizes the size of the boundary cushion.
Prior to performing the process 1400, a vector {right arrow over (Dij)} and unit vectors {right arrow over (Duij)}={right arrow over (Dij)}/{right arrow over (|Dij|)} can be computed for all pairs of active lobes. As described previously, the vectors {right arrow over (Dij)} may connect the original coordinates of lobes i and j. The parameter Ai (where 0<Ai<1) may be determined for all active lobes, which characterizes the size of the boundary cushion for each lobe region. As described previously, prior to the process 1400 being performed (i.e., prior to step 818 of the process 800), the lobe region of new sound activity may be identified (i.e., at step 806) and a motion vector may be computed (i.e., using the process 1100/step 810).
At step 1402 of the process 1400, the projected vector {right arrow over (PMij)} may be computed for all lobes that are not associated with the lobe region identified for the new sound activity. The magnitude of a projected vector {right arrow over (PMij)} (as described above with respect to FIG. 13) can determine the amount of movement of a lobe in the direction of a boundary between lobe regions. Such a magnitude of the projected vector {right arrow over (PMij)} can be computed as a scalar, such as by a dot product of the motion vector {right arrow over (M)} and the unit vector {right arrow over (Duij)}={right arrow over (Dij)}/{right arrow over (|Dij|)}, such that projection PMij=MxDuij,z+MyDuij,y+Mz Duij,z.
When PMij<0, the motion vector {right arrow over (M)} has a component in the opposite direction of the vector {right arrow over (Dij)}. This means that movement of a lobe i would be in the direction opposite of the boundary with a lobe j. In this scenario, the boundary cushion between lobes i and j is not a concern because the movement of the lobe i would be away from the boundary with lobe j. However, when PMij>0, the motion vector {right arrow over (M)} has a component in the same direction as the direction of the vector {right arrow over (Dij)}. This means that movement of a lobe i would be in the same direction as the boundary with lobe j. In this scenario, movement of the lobe i can be limited to outside the boundary cushion so that



 
  
   
    PM
    
     r
     ij
    
   
   <
   
    
     A
     i
    
    ⁢
    
     
      
       
        ❘
        "\[LeftBracketingBar]"
       
       
        D
        ij
       
       
        ❘
        "\[RightBracketingBar]"
       
      
      →
     
     2
    
   
  
  ,
 



where Ai (with 0<Ai<1) is a parameter that characterizes the boundary cushion for a lobe region associated with lobe i.

A scaling factor β may be utilized to ensure that



 
  
   PM
   
    r
    ij
   
  
  <
  
   
    A
    i
   
   ⁢
   
    
     
      
       
        ❘
        "\[LeftBracketingBar]"
       
       
        D
        ij
       
       
        ❘
        "\[RightBracketingBar]"
       
      
      →
     
     2
    
    .
   
  
 



The scaling factor β may be used to scale the motion vector {right arrow over (M)} and be defined as




 
  
   β
   j
  
  =
  
   {
   
    
     
      
       
        
         
          
           A
           i
          
          ⁢
          
           
            
             
              ❘
              "\[LeftBracketingBar]"
             
             
              D
              ij
             
             
              ❘
              "\[RightBracketingBar]"
             
            
            →
           
           2
          
         
         
          PM
          ij
         
        
        ,
       
      
      
       
        
         PM
         ij
        
        >
        
         
          A
          i
         
         ⁢
         
          
           
            
             ❘
             "\[LeftBracketingBar]"
            
            
             D
             ij
            
            
             ❘
             "\[RightBracketingBar]"
            
           
           →
          
          2
         
        
       
      
     
     
      
       
        1
        ,
       
      
      
       
        
         PM
         ij
        
        ≤
        
         
          A
          i
         
         ⁢
         
          
           
            
             ❘
             "\[LeftBracketingBar]"
            
            
             D
             ij
            
            
             ❘
             "\[RightBracketingBar]"
            
           
           →
          
          2
         
        
       
      
     
    
    .
   
  
 



Accordingly, if new sound activity is detected that is outside the boundary cushion of a lobe region, then the scaling factor β may be equal to 1, which indicates that there is no scaling of the motion vector {right arrow over (M)}. At step 1404, the scaling factor β may be computed for all the lobes that are not associated with the lobe region identified for the new sound activity.

At step 1406, the minimum scaling factor β can be determined that corresponds to the boundary cushion of the nearest lobe regions, as in the following:



 
  β
  =
  
   
    
     min
      
    
    j
   
   ⁢
   
    
     β
     j
    
    .
   
  
 



After the minimum scaling factor β has been determined at step 1406, then at step 1408, the minimum scaling factor β may be applied to the motion vector {right arrow over (M)} to determine a restricted motion vector {right arrow over (Mr)}=min(α, β) {right arrow over (M)}.

For example, FIG. 15 shows new sound activity S that is present in lobe region 3 as well as a motion vector {right arrow over (M)} between the initial coordinates LO3 of lobe 3 and the coordinates of the new sound activity S. Vectors {right arrow over (D31)}, {right arrow over (D32)}, {right arrow over (D34)} and projected vectors {right arrow over (PM31)}, {right arrow over (PM32)}, {right arrow over (PM34)} are depicted between lobe 3 and each of the other lobes that are not associated with lobe region 3 (i.e., lobes 1, 2, and 4). In particular, vectors {right arrow over (D31)}, {right arrow over (D32)}, {right arrow over (D34)} may be computed for all pairs of active lobes (i.e., lobes 1, 2, 3, and 4), and projections PM31, PM32, PM34 are computed for all lobes that are not associated with lobe region 3 (that is identified for the new sound activity S). The magnitude of the projected vectors may be utilized to compute scaling factors β, and the minimum scaling factor β may be used to scale the motion vector {right arrow over (M)}. The motion vector {right arrow over (M)} may therefore be restricted to outside the boundary cushion of lobe region 3 because the new sound activity S is too close to the boundary between lobe 3 and lobe 2. Based on the restricted motion vector, the coordinates of lobe 3 may be moved to a coordinate Sr that is outside the boundary cushion of lobe region 3.
The projected vector {right arrow over (PM34)} depicted in FIG. 15 is negative and the corresponding scaling factor β4 (for lobe 4) is equal to 1. The scaling factor β1 (for lobe 1) is also equal to 1 because



 
  
   
    P
    ⁢
    
     M
     
      3
      ⁢
      1
     
    
   
   <
   
    
     A
     3
    
    ⁢
    
     
      
       
        ❘
        "\[LeftBracketingBar]"
       
       
        D
        31
       
       
        ❘
        "\[RightBracketingBar]"
       
      
      →
     
     2
    
   
  
  ,
 



while the scaling factor β2 (for lobe 2) is less than 1 because the new sound activity S is inside the boundary cushion between lobe region 2 and lobe region 3




 
  
   (
   
    
     i
     .
     e
     .
    
    ,
     
    
     
      PM
      32
     
     >
     
      
       A
       3
      
      ⁢
      
       
        
         
          ❘
          "\[LeftBracketingBar]"
         
         
          D
          32
         
         
          ❘
          "\[RightBracketingBar]"
         
        
        →
       
       2
      
     
    
   
   )
  
  .
 



Accordingly, the minimum scaling factor β2 may be utilized to ensure that lobe 3 moves to the coordinate Sr.

FIGS. 16 and 17 are schematic diagrams of array microphones 1600, 1700 that can detect sounds from audio sources at various frequencies. The array microphone 1600 of FIG. 16 can automatically focus beamformed lobes in response to the detection of sound activity, while enabling inhibition of the automatic focus of the beamformed lobes when the activity of a remote audio signal from a far end exceeds a predetermined threshold. In embodiments, the array microphone 1600 may include some or all of the same components as the array microphone 100 described above, e.g., the microphones 102, the audio activity localizer 150, the lobe auto-focuser 160, the beamformer 170, and/or the database 180. The array microphone 1600 may also include a transducer 1602, e.g., a loudspeaker, and an activity detector 1604 in communication with the lobe auto-focuser 160. The remote audio signal from the far end may be in communication with the transducer 1602 and the activity detector 1604.
The array microphone 1700 of FIG. 17 can automatically place beamformed lobes in response to the detection of sound activity, while enabling inhibition of the automatic placement of the beamformed lobes when the activity of a remote audio signal from a far end exceeds a predetermined threshold. In embodiments, the array microphone 1700 may include some or all of the same components as the array microphone 400 described above, e.g., the microphones 402, the audio activity localizer 450, the lobe auto-placer 460, the beamformer 470, and/or the database 480. The array microphone 1700 may also include a transducer 1702, e.g., a loudspeaker, and an activity detector 1704 in communication with the lobe auto-placer 460. The remote audio signal from the far end may be in communication with the transducer 1702 and the activity detector 1704.
The transducer 1602, 1702 may be utilized to play the sound of the remote audio signal in the local environment where the array microphone 1600, 1700 is located. The activity detector 1604, 1704 may detect an amount of activity in the remote audio signal. In some embodiments, the amount of activity may be measured as the energy level of the remote audio signal. In other embodiments, the amount of activity may be measured using methods in the time domain and/or frequency domain, such as by applying machine learning (e.g., using cepstrum coefficients), measuring signal non-stationarity in one or more frequency bands, and/or searching for features of desirable sound or speech.
In embodiments, the activity detector 1604, 1704 may be a voice activity detector (VAD) which can determine whether there is voice present in the remote audio signal. A VAD may be implemented, for example, by analyzing the spectral variance of the remote audio signal, using linear predictive coding, applying machine learning or deep learning techniques to detect voice, and/or using well-known techniques such as the ITU G.729 VAD, ETSI standards for VAD calculation included in the GSM specification, or long term pitch prediction.
Based on the detected amount of activity, automatic lobe adjustment may be performed or inhibited. Automatic lobe adjustment may include, for example, auto focusing of lobes, auto focusing of lobes within regions, and/or auto placement of lobes, as described herein. The automatic lobe adjustment may be performed when the detected activity of the remote audio signal does not exceed a predetermined threshold. Conversely, the automatic lobe adjustment may be inhibited (i.e., not be performed) when the detected activity of the remote audio signal exceeds the predetermined threshold. For example, exceeding the predetermined threshold may indicate that the remote audio signal includes voice, speech, or other sound that is preferably not to be picked up by a lobe. By inhibiting automatic lobe adjustment in this scenario, a lobe will not be focused or placed to avoid picking up sound from the remote audio signal.
In some embodiments, the activity detector 1604, 1704 may determine whether the detected amount of activity of the remote audio signal exceeds the predetermined threshold. When the detected amount of activity does not exceed the predetermined threshold, the activity detector 1604, 1704 may transmit an enable signal to the lobe auto-focuser 160 or the lobe auto-placer 460, respectively, to allow lobes to be adjusted. In addition to or alternatively, when the detected amount of activity of the remote audio signal exceeds the predetermined threshold, the activity detector 1604, 1704 may transmit a pause signal to the lobe auto-focuser 160 or the lobe auto-placer 460, respectively, to stop lobes from being adjusted.
In other embodiments, the activity detector 1604, 1704 may transmit the detected amount of activity of the remote audio signal to the lobe auto-focuser 160 or to the lobe auto-placer 460, respectively. The lobe auto-focuser 160 or the lobe auto-placer 460 may determine whether the detected amount of activity exceeds the predetermined threshold. Based on whether the detected amount of activity exceeds the predetermined threshold, the lobe auto-focuser 160 or lobe auto-placer 460 may execute or pause the adjustment of lobes.
The various components included in the array microphone 1600, 1700 may be implemented using software executable by one or more servers or computers, such as a computing device with a processor and memory, graphics processing units (GPUs), and/or by hardware (e.g., discrete logic circuits, application specific integrated circuits (ASIC), programmable gate arrays (PGA), field programmable gate arrays (FPGA), etc.
An embodiment of a process 1800 for inhibiting automatic adjustment of beamformed lobes of an array microphone based on a remote far end audio signal is shown in FIG. 18. The process 1800 may be performed by the array microphones 1600, 1700 so that the automatic focus or the automatic placement of beamformed lobes can be performed or inhibited based on the amount of activity of a remote audio signal from a far end. One or more processors and/or other processing components (e.g., analog to digital converters, encryption chips, etc.) within or external to the array microphones 1600, 1700 may perform any, some, or all of the steps of the process 1800. One or more other types of components (e.g., memory, input and/or output devices, transmitters, receivers, buffers, drivers, discrete components, etc.) may also be utilized in conjunction with the processors and/or other processing components to perform any, some, or all of the steps of the process 1800.
At step 1802, a remote audio signal may be received at the array microphone 1600, 1700. The remote audio signal may be from a far end (e.g., a remote location), and may include sound from the far end (e.g., speech, voice, noise, etc.). The remote audio signal may be output on a transducer 1602, 1702 at step 1804, such as a loudspeaker in the local environment. Accordingly, the sound from the far end may be played in the local environment, such as during a conference call so that the local participants can hear the remote participants.
The remote audio signal may be received by an activity detector 1604, 1704, which may detect an amount of activity of the remote audio signal at step 1806. The detected amount of activity may correspond to the amount of speech, voice, noise, etc. in the remote audio signal. In embodiments, the amount of activity may be measured as the energy level of the remote audio signal. At step 1808, if the detected amount of activity of the remote audio signal does not exceed a predetermined threshold, then the process 1800 may continue to step 1810. The detected amount of activity of the remote audio signal not exceeding the predetermined threshold may indicate that there is a relatively low amount of speech, voice, noise, etc. in the remote audio signal. In embodiments, the detected amount of activity may specifically indicate the amount of voice or speech in the remote audio signal. At step 1810, lobe adjustments may be performed. Step 1810 may include, for example, the processes 200 and 300 for automatic focusing of beamformed lobes, the process 400 for automatic placement of beamformed lobes, and/or the process 800 for automatic focusing of beamformed lobes within lobe regions, as described herein. Lobe adjustments may be performed in this scenario because even though lobes may be focused or placed, there is a lower likelihood that such a lobe will pick up undesirable sound from the remote audio signal that is being output in the local environment. After step 1810, the process 1800 may return to step 1802.
However, if at step 1808 the detected amount of activity of the remote audio signal exceeds the predetermined threshold, then the process 1800 may continue to step 1812. At step 1812, no lobe adjustment may be performed, i.e., lobe adjustment may be inhibited. The detected amount of activity of the remote audio signal exceeding the predetermined threshold may indicate that there is a relatively high amount of speech, voice, noise, etc. in the remote audio signal. Inhibiting lobe adjustments from occurring in this scenario may help to ensure that a lobe is not focused or placed to pick up sound from the remote audio signal that is being output in the local environment. In some embodiments, the process 1800 may return to step 1802 after step 1812. In other embodiments, the process 1800 may wait for a certain time duration at step 1812 before returning to step 1802. Waiting for a certain time duration may allow reverberations in the local environment (e.g., caused by playing the sound of the remote audio signal) to dissipate.
The process 1800 may be continuously performed by the array microphones 1600, 1700 as the remote audio signal from the far end is received. For example, the remote audio signal may include a low amount of activity (e.g., no speech or voice) that does not exceed the predetermined threshold. In this situation, lobe adjustments may be performed. As another example, the remote audio signal may include a high amount of activity (e.g., speech or voice) that exceeds the predetermined threshold. In this situation, the performance of lobe adjustments may be inhibited. Whether lobe adjustments are performed or inhibited may therefore change as the amount of activity of the remote audio signal changes. The process 1800 may result in more optimal pick up of sound in the local environment by reducing the likelihood that sound from the far end is undesirably picked up.
Any process descriptions or blocks in figures should be understood as representing modules, segments, or portions of code which include one or more executable instructions for implementing specific logical functions or steps in the process, and alternate implementations are included within the scope of the embodiments of the invention in which functions may be executed out of order from that shown or discussed, including substantially concurrently or in reverse order, depending on the functionality involved, as would be understood by those having ordinary skill in the art.
This disclosure is intended to explain how to fashion and use various embodiments in accordance with the technology rather than to limit the true, intended, and fair scope and spirit thereof. The foregoing description is not intended to be exhaustive or to be limited to the precise forms disclosed. Modifications or variations are possible in light of the above teachings. The embodiment(s) were chosen and described to provide the best illustration of the principle of the described technology and its practical application, and to enable one of ordinary skill in the art to utilize the technology in various embodiments and with various modifications as are suited to the particular use contemplated. All such modifications and variations are within the scope of the embodiments as determined by the appended claims, as may be amended during the pendency of this application for patent, and all equivalents thereof, when interpreted in accordance with the breadth to which they are fairly, legally and equitably entitled.

## Claims

1. A method, comprising:
determining whether an inactive lobe of a plurality of lobes of an array microphone in an environment is available for deployment;
when it is determined that the inactive lobe is available, locating the inactive lobe based on location data of sound activity; and
when it is determined that the inactive lobe is not available:
selecting one of a plurality of deployed lobes to move; and
relocating the selected deployed lobe based on the location data of the sound activity.

2. The method of claim 1, wherein the location data of the sound activity comprises coordinates of the sound activity in the environment.

3. The method of claim 1, wherein selecting the one of the plurality of deployed lobes comprises selecting the one of the plurality of deployed lobes based on timestamps associated with the plurality of deployed lobes.

4. The method of claim 3, wherein the timestamps comprise a first timestamp associated with receiving the location data of the sound activity, and a second timestamp associated with the selected deployed lobe.

5. The method of claim 1, wherein selecting the one of the plurality of deployed lobes comprises selecting the one of the plurality of deployed lobes based on metrics associated with the plurality of deployed lobes.

6. The method of claim 5:
wherein one of the metrics comprises a confidence score of the selected deployed lobe; and
wherein the confidence score denotes one or more of a certainty of a location of the selected deployed lobe or a quality of sound of the selected deployed lobe.

7. The method of claim 1, further comprising:
determining whether an existing lobe of the plurality of lobes is near the sound activity, based on the location data of the sound activity; and
when it is determined that the existing lobe is not near the sound activity, performing the steps of determining whether the inactive lobe is available for deployment, locating the inactive lobe, selecting the one of the plurality of lobes to move, and relocating the selected lobe.

8. The method of claim 1, wherein the inactive lobe comprises one or more of a lobe of the plurality of lobes that is not positioned at specific coordinates in the environment, a lobe of the plurality of lobes that has not been deployed, or a lobe of the plurality of lobes that is inactive based on a metric.

9. The method of claim 2, wherein selecting the one of the plurality of deployed lobes to move is based on one or more of: (1) a difference in an azimuth of the coordinates of the sound activity and an azimuth of the selected deployed lobe, relative to an azimuth threshold, or (2) a difference in an elevation angle of the coordinates of the sound activity and an elevation angle of the selected deployed lobe, relative to an elevation angle threshold.

10. The method of claim 9, wherein selecting the one of the plurality of deployed lobes to move is based on a distance of the coordinates of the sound activity from the array microphone.

11. The method of claim 10, further comprising setting the azimuth threshold based on the distance of the coordinates of the sound activity from the array microphone.

12. The method of claim 9, wherein selecting the one of the plurality of deployed lobes to move comprises selecting the selected deployed lobe when (1) an absolute value of the difference in the azimuth of the coordinates of the sound activity and the azimuth of the selected deployed lobe is not greater than the azimuth threshold; and (2) an absolute value of the difference in the elevation angle of the coordinates of the sound activity and the elevation angle of the selected deployed lobe is greater than the elevation angle threshold.

13. The method of claim 1, further comprising storing the location data of the sound activity in a database as a new location of the selected deployed lobe.

14. The method of claim 1, further comprising:
receiving a remote audio signal from a far end;
detecting an amount of activity of the remote audio signal; and
when the amount of activity of the remote audio signal exceeds a predetermined threshold, inhibiting performance of the steps of determining whether the inactive lobe is available, locating the inactive lobe, selecting the one of the plurality of deployed lobes, and relocating the selected deployed lobe.

15. An array microphone system, comprising:
a plurality of microphone elements, each of the plurality of microphone elements configured to detect sound and output an audio signal;
a beamformer in communication with the plurality of microphone elements, the beamformer configured to generate one or more beamformed signals based on the audio signals of the plurality of microphone elements, wherein the one or more beamformed signals correspond with one or more lobes each positioned at a location in an environment;
an audio activity localizer in communication with the plurality of microphone elements, the audio activity localizer configured to determine coordinates of new sound activity in the environment; and
a lobe auto-placer in communication with the audio activity localizer and the beamformer, the lobe auto-placer configured to:
receive the coordinates of the new sound activity;
determine whether the coordinates of the new sound activity are near an existing lobe, wherein the existing lobe comprises one of the one or more lobes;
when the coordinates of the new sound activity are determined to not be near the existing lobe:
determine whether an inactive lobe is available;
when it is determined that the inactive lobe is available, select the inactive lobe;
when it is determined that the inactive lobe is not available, select one of the one or more lobes; and
transmit the coordinates of the new sound activity to the beamformer to cause the beamformer to update the location of the selected lobe to the coordinates of the new sound activity.

16. The system of claim 15, wherein the inactive lobe comprises one or more of a lobe of the beamformer that is not positioned at specific coordinates in the environment, a lobe of the beamformer that has not been deployed, or a lobe of the beamformer that is inactive based on a metric.

17. The system of claim 15, wherein the lobe auto-placer is configured to determine whether the coordinates of the new sound activity are near the existing lobe, based on one or more of: (1) a difference in an azimuth of the coordinates of the new sound activity and an azimuth of the location of the existing lobe, relative to an azimuth threshold, or (2) a difference in an elevation angle of the coordinates of the new sound activity and an elevation angle of the location of the existing lobe, relative to an elevation angle threshold.

18. The system of claim 17, wherein the lobe auto-placer is configured to determine whether the coordinates of the new sound activity are near the existing lobe, based on a distance of the coordinates of the new sound activity from the system.

19. The system of claim 18, wherein the lobe auto-placer is further configured to set the azimuth threshold based on the distance of the coordinates of the new sound activity from the system.

20. The system of claim 17, wherein the lobe auto-placer is configured to determine that the coordinates of the new sound activity are near the existing lobe when (1) an absolute value of the difference in the azimuth of the coordinates of the new sound activity and the azimuth of the location of the existing lobe is not greater than the azimuth threshold; and (2) an absolute value of the difference in the elevation angle of the coordinates of the new sound activity and the elevation angle of the location of the existing lobe is greater than the elevation angle threshold.

21. The system of claim 15, further comprising a database in communication with the lobe auto-placer, wherein the lobe auto-placer is further configured to store a first timestamp associated with receiving the coordinates of the new sound activity in the database.

22. The system of claim 21, wherein the lobe auto-placer is further configured to when the coordinates of the new sound activity are determined to be near the existing lobe, update a second timestamp associated with the existing lobe in the database to the first timestamp.

23. The system of claim 21, wherein the lobe auto-placer is further configured to when the coordinates of the new sound activity are determined to not be near the existing lobe, update a third timestamp associated with the selected lobe in the database to the first timestamp.

24. The system of claim 15, wherein the lobe auto-placer is further configured to when the coordinates of the new sound activity are determined to not be near the existing lobe and when it is determined that the inactive lobe is not available, select the one of the one or more lobes based on a timestamp associated with the one of the one or more lobes.

25. The system of claim 15, wherein the lobe auto-placer is further configured to when the coordinates of the new sound activity are determined to not be near the existing lobe, assign a metric associated with the selected lobe.

26. The system of claim 15, wherein the lobe auto-placer is further configured to when the coordinates of the new sound activity are determined to not be near the existing lobe and when it is determined that the inactive lobe is not available, select the one of the one or more lobes based on a metric associated with the one of the one or more lobes.

27. The system of claim 25:
wherein the metric comprises a confidence score of the selected lobe; and
wherein the confidence score denotes one or more of a certainty of the coordinates of the selected lobe or a quality of sound of the selected lobe.

28. The system of claim 15, further comprising a database in communication with the lobe auto-placer, wherein the lobe auto-placer is further configured to store the coordinates of the new sound activity as a new location of the selected lobe, when the coordinates of the new sound activity are determined to not be near the existing lobe.

29. The system of claim 15:
further comprising an activity detector in communication with a far end and the lobe auto-placer, the activity detector configured to:
receive a remote audio signal from the far end;
detect an amount of activity of the remote audio signal; and
transmit the detected amount of activity to the lobe auto-placer; and

wherein the lobe auto-placer is further configured to:
when the amount of activity of the remote audio signal exceeds a predetermined threshold, inhibit the lobe auto-placer from performing the steps of determining whether the coordinates of the new sound activity are near the existing lobe, determining whether the inactive lobe is available, selecting the inactive lobe, selecting one of the one or more lobes, and transmitting the coordinates of the new sound activity to the beamformer.

30. The system of claim 15:
further comprising an activity detector in communication with a far end and the lobe auto-placer, the activity detector configured to:
receive a remote audio signal from the far end;
detect an amount of activity of the remote audio signal; and
when the amount of activity of the remote audio signal exceeds a predetermined threshold, transmit a signal to the lobe auto-placer to cause the lobe auto-placer to stop performing the steps of determining whether the coordinates of the new sound activity are near the existing lobe, determining whether the inactive lobe is available, selecting the inactive lobe, selecting one of the one or more lobes, and transmitting the coordinates of the new sound activity to the beamformer.