SouppuoS / CDMA

Circular Differential Microphone Arrays (CDMA) implemented by python

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CDMA

Generate weights for Differential Microphone Arrays (CDMA)[1] in Python.
生成圆阵列DMA算法的波束成形权重,具体设计参考Jacob的Design of circular differential microphone arrays

cardioid2nd

2-STEP TO USE:

cma     = circular_microphone_arrays(M=4)
cdma    = CDMA(cma, sa=180, null_list=[180 + 135])
  1. Define circular_microphone_arrays base on geometry of your microphone array, eg: r for radius (cm), M for the number of microphones. For now, only uniform circular array (UCA) is supported.
  2. Design your CDMA base on your microphone array, including sa for steer angle and null_list for null point list. The order of CDMA depends on null_list.

TO ENHANCE A SPEECH SIGNAL:

In test.py, an example demonstrates how to apply the CDMA built before on speech enhancement task.

_, _, spec_mix_rir = ss.stft(mix_rir, fs, nperseg=(cdma.cma.f_bin - 1) * 2)
_, s_enh           = ss.istft(cdma.apply(spec_mix_rir), fs)

Two utterances from THCHS30 are mixed (you need to download the dataset by yourself). And we try to enhance the signal-1 from the mixed signal. The experiment are performed on data generated by pyroomacoustic.
The specgram of clean utterances, mixture and enhanced signal are shown below.
speechenhance

AVAILABLE CDMA TYPE

  • Any order Hypercardioid, Supercardioid or Cardioid CDMA
  • Superdirective, Robust Superdirective with symmetry and null point constraint
  • GSC

Reference:

[1] Benesty, Jacob, Jingdong Chen, and Israel Cohen. Design of circular differential microphone arrays. Vol. 12. Berlin, Germany:: Springer, 2015.
[2] Benesty, Jacob, Jingdong Chen, and Yiteng Huang. Microphone array signal processing. Vol. 1. Springer Science & Business Media, 2008.

About

Circular Differential Microphone Arrays (CDMA) implemented by python

License:MIT License


Languages

Language:Python 100.0%