Я пытался внедрить систему аннулирования активного шума (ANC), используя системный набор инструментов Digital System Processing. Я использовал dsp.AudioRecorder
и dsp.AudioPlayer
. Это мой код инициализации:Возможно ли обработать два входа микрофона в реальном времени с помощью DSP System Toolbox (MATLAB)?
mic_reference = dsp.AudioRecorder('NumChannels',1);
mic_reference.DeviceName='ASIO4ALL v2';
mic_error = dsp.AudioRecorder('NumChannels',1);
mic_error.DeviceName='ASIO4ALL v2';
sink1_2 = dsp.AudioPlayer;
sink1_2.DeviceName='ASIO4ALL v2';
где я называю step(frame)
для каждого из микрофонов. Я получаю сообщение об ошибке
Ошибка при использовании AudioRecorder/step Данное аудиоустройство может быть открыто только один раз.
Является ли это ограничение набора инструментов системы DSP возможностью работать только на одном устройстве звукозаписывающего устройства за раз или можно использовать одновременно два устройства звукозаписи?
Существует условие для многоканальной обработки одного и того же аудиоустройства, но как обрабатывать аудио с двух независимых устройств в режиме реального времени?
Спасибо Динешу. Я думаю, что это проблема с драйверами ASIO. Теперь я поменял аудио драйвер на «Direct Sound» и могу дать два разных имени устройства для двух микрофонов и обработать их оба одновременно. Таким образом, неверно, что системный инструментарий DSP не может обрабатывать два аудиовхода. Но как управлять драйвером ASIO от предоставления эксклюзивного доступа (учитывая, что это стабильный драйвер, чем «Direct Sound»)? – charansai
и вы можете объяснить, как сопоставить два канала (левый канал на одно устройство и правый канал на другое устройство). Я не мог понять, что вы делаете в приведенном выше коде, вы берете один аудиомагнитофон (микрофон) и обрабатываете два его стерео (левого и правого) входа в виде двух данных (ref, err). Где второй микрофон на картинке? – charansai
DirectSound и ASIO имеют разные цели. ASIO в основном используется в приложениях с низкой задержкой, тогда как DirectSound. DirectSound создает уровень виртуального устройства, к которому обращаются приложения. Каждое приложение разговаривает с этим виртуальным слоем, а не с реальным физическим устройством. Во время воспроизведения, если два приложения попытаются воспроизвести два звука на один и тот же вывод, DirectSound позаботится о микшировании, которое увеличивает задержку. Таким образом, выбор модели драйвера зависит от цели вашего приложения. –