jordi-adell / mcarray

Library for real-time digital signal processing of microphone array signals. It is based on DSPONE adn WIPP and can perform binarula localisation and masking, as well as multichannel beamforming localisation and source sreparation.
GNU Lesser General Public License v3.0
14 stars 10 forks source link

What is the separation method? #4

Closed sunjunlishi closed 6 years ago

sunjunlishi commented 6 years ago

void Beamformer::processFrame(SignalVector &analysisFrames, SignalPtr outputFrame, double DOA) {

wipp::setZeros(outputFrame.get(), _fftCCSLength);
// Sum all channels multiplied by a phase-ramp according to 
//the delay to be applied over each one.
for (int c = 0; c < _nchannels; ++c)
{
  //    ippsVectorRamp_64f(_phase.get(), 

_fftCCSLength/2, 0, 2M_PI_sampleRate/(_fftCCSLength-2)/getSpeedOfSound()_microphonePositions[c] cos(DOA+M_PI/2)); wipp::ramp(_phase.get(), _fftCCSLength/2, 0, 2M_PI_sampleRate/(_fftCCSLength-2)/getSpeedOfSound()_microphonePositions.getX(c)co(DOA+M_PI/2)); wipp::polar2cart(_ones.get(), _phase.get(), reinterpret_cast<wipp::wipp_complex_t>(_complexRamp.get()), _fftCCSLength/2); wipp::mult(reinterpret_cast<wipp::wipp_complex_t>(analysisFrames[c].get()), reinterpret_cast<wipp::wipp_complex_t>(_complexRamp.get()), reinterpret_cast<wipp::wipp_complex_t>(_channelSignal.get()), _fftCCSLength/2); wipp::add(reinterpret_cast<wipp::wipp_complex_t>(_channelSignal.get()), reinterpret_cast<wipp::wipp_complex_t>(outputFrame.get()), _fftCCSLength/2); } wipp::divC(_nchannels, outputFrame.get(), _fftCCSLength);

}

jordi-adell commented 6 years ago

This is the delay and sum beam forming.

sunjunlishi commented 6 years ago

If there are two sound sources, is the first sound source separated?

jordi-adell commented 6 years ago

Only the one detected with stronger power.

sunjunlishi commented 6 years ago

1 2

frameAnalysis and frameSynthesis。 What they were using, I tested, and found that they made a distortion of speech

sunjunlishi commented 6 years ago

My voice source position is not changed, why DOA value is not regular, what values are there ,Unit cm 4

sunjunlishi commented 6 years ago

if DOA is not right,the next step will not right

sunjunlishi commented 6 years ago

std::vector mics_positions = {0, 0.05, 0.10, 0.14}; 6

3 files in the perspective of the overall change law is not progressive Is the position of the microphone the meter?

jordi-adell commented 6 years ago

Mic position is the distance between microphones in meters in a linear array.

jordi-adell commented 6 years ago

DoA is in degrees.

jordi-adell commented 6 years ago

Mic position is the distance between microphones in meters in a linear array.

jordi-adell commented 6 years ago

DoA is in degrees.

sunjunlishi commented 6 years ago

Is your sound source DOA estimation model for the near field or far field?

sunjunlishi commented 6 years ago

t1 is it right

sunjunlishi commented 6 years ago

My error, our hardware 3, 4 channel back. Your DOA is very accurate, great. I have a few files, if you want, I can give you, send your mailbox, convenient for everyone to test. My array spacing is 0.06m

jordi-adell commented 6 years ago

Sorry. I could not answer before. Looks like you are doing a good job. Is DoA is in front means zero degrees.

jordi-adell commented 6 years ago

Also, yes. I am very interested in the test signals. And also in the description of your hardware.

jordi-adell commented 6 years ago

Please, send the audio files to adellj@gmail.com . Thank you.

DWtiangu commented 7 months ago

My error, our hardware 3, 4 channel back. Your DOA is very accurate, great. I have a few files, if you want, I can give you, send your mailbox, convenient for everyone to test. My array spacing is 0.06m

大佬能吧你的测试音频结果发给我看看么,这个项目能做4麦线性阵列的定向拾音吗