# A Planer Moving Microphone Array for Sound Source Localization
## 2 Introduction to the FPMMS and Building Procedure  
As stated in the Introduction, we set out to develop an active microphone array. The key idea behind this structure is to collect more data for analysis and save space, since usual microphone arrays occupy a lot of space [37; 38]. Considering that the structure was to be mounted on to the head of a service robot, we designed the following structure. As Figure 1 displays, four MEMS microphones are placed separately on four conveyor belts, and four conveyor belts are driven separately by four small motors. The inter-mic distance is 6.67 cm. An Arduino circuit controls motor movement and direction. Thus, we could write scripts to move each microphone to any place precisely in the range of frame. The procedure required for the FPMMS to mimic a 16-microphone array is displayed in the flow chart below. Figure 2 describes the audio data collected at each time spot, which are merged by the time index and not overlaid together. Figure 3 more specifically displays the procedure timeline. As shown on the right of Figure 3, a 4 \(\times\) 4 microphone array collects data in 1 s (16-channel data). As shown on the left of Figure 3, the FPMMS comprises a 4-time, 1 s, 4-channel data collection structure. Figure 1: Image of FPMMS with size information. Starting with angle estimation, we will gradually show the theory behind the FPMMS 3D SSL procedure. The signal received by the \(m_{th}\) microphone in FPMMS can be modelled as follows:  
\[x_{m}(t)=\sum_{k=1}^{K}\alpha_{m,k}s_{k}(t-\tau_{m,\;\theta_{k}})+v_{m}(t) \tag{1}\]  
Here, \(m\in\{1,2,\ldots,M\}\) is the microphone index number. For FPMMS, \(M=4\). For the circular microphone array, \(M=6\). For the \(4\times 4\) microphone array, \(M=16\). \(k\) is the sound source index, and \(K=2,3,4,5\). \(s_{k}(t)\) is the sound uttered from the \(k_{th}\) sound source. \(\tau_{m,\;\theta_{k}}\) denotes the delay from the \(k_{th}\) sound source to the \(m_{th}\) microphone induced by \(\theta_{k}\). \(\theta_{k}\) is the horizontal angle observed from the top side in an anticlockwise manner. \(v_{m}(t)\) is the assumed uncorrelated additive ambient noise received by the \(m_{th}\) microphone. \(\alpha_{m,k}\) represents the propagation attenuation factor from the \(k_{th}\) sound source to the \(m_{th}\) microphone. Applying short-time Fourier transformation (STFT) to Equation (1), the signal in the \(m_{th}\) microphone can be modelled in the time-frequency (TF) domain:  
\[X_{m}(n,f)=\sum_{k=1}^{K}\alpha_{m,k}S_{k}(n,f)e^{-j\omega_{f}\tau_{m,\;\theta _{k}}}+V_{m}(n,f) \tag{2}\]  
where \(n\) is the time frame index number, \(f\) is the frequency band index number, and \(\omega_{f}\) is the angular frequency of the \(f_{th}\) frequency band. \(X_{m}(n,f)\), \(S_{k}(n,f)\), \(V_{m}(n,f)\) denote the STFT coefficients of \(x_{m}(t)\), \(s_{k}(t)\), \(v_{m}(t)\). Since the array discussed herein requires synthesis of the signals received from the microphone for latter processing, Equation (2) can be rewritten into a vector form:  
\[x(n,f)=\sum_{k=1}^{K}S_{k}(n,f)\mathbf{e}(f,\;\theta_{k})+v(n,f) \tag{3}\]  
Here,  
\[x(n,f)=\left[X_{1}(n,f),X_{2}(n,f),\ldots,X_{M}(n,f)\right]^{T},\]  
\[v(n,f)=\left[V_{1}(n,f),V_{2}(n,f),\ldots,V_{M}(n,f)\right]^{T},\]  
Figure 3: Timeline depicting two different procedures. The longer arrow represents timeline, and the smaller arrows depict the data group connecting each other following timeline. Figure 2: Procedure of FPMMS mimicking a 16-microphone array. The squares with a deep blue color represent real MEMS microphones. The comparative 16-microphone array collects data at same time as the FPMMS, in a duration of 1 s, and the FPMMS collects data 4 times faster with a planar moving interval of 0.5 s. The arrows depict the data group connecting each other following timeline. The \(\alpha_{m,k}\) is assumed to be identical and represented by \(\alpha\). For all the microphone arrays, we chose the first microphone as the reference.