/ / Existe uma maneira de obter sinais de áudio de vários microfones no Matlab? - Matlab, processamento de sinal, microfone

Existe uma maneira de obter sinais de áudio de vários microfones no Matlab? - Matlab, processamento de sinal, microfone

Eu quero buscar vários microfones USB simultaneamente no Matlab (2012a). No entanto, duas funções de gravação são ambas de pernas curtas. 1, recordblocking() - Permite ao usuário especificar a duração da gravação, mas cada microfone deve ser gravado EM ORDEM. Então eu não conheço nenhuma maneira de gravar simultaneamente. 2, record() - Permite ao usuário gravar vários sinais simultaneamente, mas só é executado por 1 segundo (aproximadamente).

O código que usei foi o seguinte:

recObj1 = audiorecorder(44100, 16, 1, 1);
recObj2 = audiorecorder(44100, 16, 1, 3);
disp("Start speaking.")
% recordblocking(recObj1, n);
% recordblocking(recObj2, n);
disp("Real recording.")
% by the way, the following function doesn"t take "on" as the second argument as opposed to what the internal/external documentation says
record(recObj1, 1);
record(recObj2, 1);

disp("End of Recording.");

Então, basicamente, eu não consegui gravar simultaneamente várias entradas de microfone por n segundos. Por favor, ajude.

Respostas:

0 para resposta № 1

Você obviamente leu esta documentação, que é sobre gravação de dados de portas: http://www.mathworks.de/de/help/matlab/ref/record.html

Esta é a função de gravação da audiecorder: http://www.mathworks.de/de/help/matlab/ref/audiorecorder.record.html

O segundo argumento de entrada é a duração.


0 para resposta № 2

tente isto:

%records from speaker IDs 0 (probably internal microphone) & 3,
%using audiorecorder function.

recobj1 = audiorecorder(22500,16,2,0);
recobj2 = audiorecorder(22500,16,2,3);

disp("start speaking.")
record(recobj1,5);
record(recobj2,5);

recordblocking(recobj1,5);
%recordblocking(recobj3,2);

disp("end of recording");

y1 = getaudiodata(recobj1);
wavwrite(y1,22500,16,"recobj1");

y2 = getaudiodata(recobj2);
wavwrite(y2,22500,16,"recobj2");

plot(y1)
plot(y2)

Também traça seus resultados. Aumente o zoom para ver as diferenças entre as duas saídas de microfone.