Chcę pobrać wiele mikrofonów USB jednocześnie w programie Matlab (2012a). Dwie funkcje nagrywania są jednak krótkie. 1, recordblocking()
- Pozwala użytkownikowi określić czas nagrywania, ale każdy mikrofon musi być nagrany NA ZAMÓWIENIE. Więc nie znam żadnego sposobu na jednoczesne nagrywanie. 2, record()
- Umożliwia użytkownikowi jednoczesne nagrywanie wielu sygnałów, ale działa tylko przez 1 sekundę (mniej więcej).
Użyłem następującego kodu:
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.");
W zasadzie nie udało mi się uzyskać jednoczesnego nagrywania wielu wejść mikrofonowych przez n sekund. Proszę o pomoc.
Odpowiedzi:
0 dla odpowiedzi № 1Oczywiście czytasz tę dokumentację, która dotyczy nagrywania danych z portów: http://www.mathworks.de/de/help/matlab/ref/record.html
To jest funkcja nagrywania audiorecorder: http://www.mathworks.de/de/help/matlab/ref/audiorecorder.record.html
Drugi argument wejściowy to czas trwania.
0 dla odpowiedzi nr 2
Spróbuj tego:
%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)
Tworzy również wyniki. Powiększ, aby zobaczyć różnice między dwoma wyjściami mikrofonowymi.