SouppuoS / CDMA

Circular Differential Microphone Arrays (CDMA) implemented by python
MIT License
26 stars 5 forks source link

Can this be practically applied to a 4-microphone array? #1

Open ChenWeston opened 2 years ago

ChenWeston commented 2 years ago

Can we actually use the hardware structure applied to the 4-microphone array?

SouppuoS commented 2 years ago

Yes. I tested the code on the audio collected by a 4-mic circular array (ST BlueCoin).

ChenWeston commented 2 years ago

Master, I don’t know much about it. The program seems to simulate the field pattern I need. There is no actual sound file input code?

ChenWeston commented 2 years ago

Or write Python program into 4-mic circular array (ST BlueCoin), which is the effect of Beamforming field?

SouppuoS commented 2 years ago

There is no actual sound file input code?

Yes. According to the beamforming, you can get the enhanced signal by formula, where W^*(f) is the conj transpose of cdma.get_weight() and X(f) is the STFT of multi-channel audio. You can also use code like: https://github.com/funcwj/setk/blob/392c72966ab9f97088955c0bbe6436d7fd59168c/scripts/sptk/libs/beamformer.py#L232-L233

ChenWeston commented 2 years ago

Master, thank you very much for your feedback, but I still don't know how to apply your program to the hardware.

SouppuoS commented 2 years ago

I collected the audio by micphone array and process it on PC. And if you want to process the signal on the MCU or DSP, you have to implement the formula by some LIB or BSP in C and use the result of cdma.get_weight() as W. Cardioid or Hyper- CDMA is the fixed beamformer, so you could just paste the W data in your C code.

ChenWeston commented 2 years ago

Master, I expect that it will be processed on the PC, and the audio collection will be collected by the hardware of the 4 mic array. Your implementation is to collect 4 channels of sound through a 4 mic array, then enter your program for processing, and get the result of 1 channel?

SouppuoS commented 2 years ago

Your implementation is to collect 4 channels of sound through a 4 mic array, then enter your program for processing, and get the result of 1 channel?

Yes.