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 № 1Você 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.