## 2 Microphone Array Speech Simulator  
The proposed MASS is an improvement and extension of the existing _pyroomacoustics_, which exploits the object-oriented features of Python to create a clean and intuitive application programming interface (API) for room acoustics simulation. As depicted in Figure 1, the _pyroomacoustics_ is mainly composed of three parts including room, target sources, and microphone array that can be set. The room shape and height can be drawn freely in the form of coordinate points, and each microphone and target source can be placed arbitrarily according to the research needs. Therefore, it is very friendly to the research of speech signal processing based on microphone array in room acoustic environment. In _pyroomacoustics_, the ISM is used to find all image sources up to a maximum specified order and RIRs are generated from their positions. For a microphone array placed at \(r\), a target source \(s\), and a set of its visible image sources \(V_{l}(s)\), the RIR \(a_{r}(s,\,n)\) between \(r\) and \(s\) is given by  
\[a_{r}(s,n)=\sum_{s\in V_{l}(s)}\frac{(1-\alpha)^{order(s_{i})}}{4\pi\|r-s_{i} \|}\delta_{LP}(n-F_{s}\frac{\|r-s_{i}\|}{c}) \tag{1}\]  
Figure 1: The block diagram of the _pyroomacoustics_. The lines terminated by a bullet indicate attribute relationship and arrows indicates parameters to functions. where _order_(s) gives the reflection order of source \(s\), \(\alpha\in[0,1]\) is the absorption factor of the walls, \(c\) is the speed of sound, \(F_{s}\) is sampling rate of signal, and \(\delta_{LP}\) is the windowed sinc function, which is defined by  
\[\delta_{LP}(t)=\left\{ \begin{array}{ll}\frac{1}{2}(1+\cos(\frac{2\pi t}{T_{ w}}))\text{sinc}(t)&\text{if }-\frac{T_{w}}{2}\leq t\leq\frac{T_{w}}{2}\\ 0&\text{otherwise}\end{array} \right. \tag{2}\]  
where \(T_{w}\) is the length of the window. Based on [PERSON]'s formula [15], the reverberation time (RT\({}_{60}\)) of the room can be obtained indirectly from the absorption factor \(\alpha\), which can be written by  
\[RT_{60}=0.161\frac{V_{room}}{\alpha S_{room}} \tag{3}\]  
where \(V_{room}\) and \(S_{room}\) represent the volume and surface area of the room, respectively. Note that for simplicity, we assumed the absorption factor \(\alpha\) to be identical for all walls. Nevertheless, the _pyroomacoustics_ allows to specify a different absorption factor for each wall. Therefore, _pyroomacoustics_ can simulate the microphone array speech in room acoustic environment very conveniently. In the _pyroomacoustics_, for example, a simulation scenario is created by first defining a room where a speech source and a microphone array are attached. The actual speech is attached to the source as a raw speech sample. The ISM is then used to find all image sources up to a maximum specified order and the RIRs are generated from their positions. The microphone signals are then created by convolving speech samples associated to source with the appropriate RIRs. Since the simulation is done on discrete-time signals, a sampling frequency is specified for the room and the sources it contains. Microphones can optionally operate at a different sampling frequency; a rate conversion is done in this case [7]. In the actual research and application, however, it should be further improved. For example, when adding noise to the simulated microphone array speech, the _pyroomacoustics_ can only add white noise to the speech in the form of analog microphone self-noise and cannot add any other diffuse noise signal according to the research needs. This provides a direction for the expansion of _pyroomacoustics_. In order to better simulate microphone array speech in room acoustic environment for various research needs, according to the non-stationary array noise simulation method of isotropic noise field [16], we will expand the _pyroomacoustics_ to add any isotropic spherically diffuse noise with any SNR to the simulated acoustic environment.