我一直在尝试使用数字系统处理系统工具箱来实现主动噪声消除(ANC)系统。我也使用过dsp.AudioRecorder和dsp.AudioPlayer。这是我的初始化代码:
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/步骤A时出错,给定的音频设备只能打开一次。
DSP系统工具箱的限制是一次只能在一个录音设备上操作,还是一次只能使用两个录音设备?
对于同一音频设备有多通道处理的规定,但如何实时处理来自两个独立设备的音频?
发布于 2015-09-29 12:57:49
查兰西
这不是DSP系统工具箱的限制,而是ASIO驱动程序的行为限制。ASIO驱动程序允许对播放或录制的应用程序进行独占访问。因此,第二个对象试图重复使用相同的设备进行记录,从而产生错误。
在这种情况下,如果参考信号是通道1,错误信号是通道2,则需要记录2通道的数据,而不是使用两个记录器对象。
har = dsp.AudioRecorder('NumChannels', 2);
har.DeviceName = 'ASIO4ALL v2';
hap = dsp.AudioPlayer;
hap.DeviceName = 'ASIO4ALL v2';
data = step(har);
refData = data(:, 1);
errData = data(:, 2);
outData = doSomething(refData, errData);
step(hap, outData);希望这能有所帮助。
迪内什
发布于 2015-09-29 11:16:26
当你记录你的信号时,你应该用两个麦克风(每个叫通道/观察--即左/右通道)记录它,你应该把这两个观测合并成一个流,然后传递给Matlab,你只应该把一个双通道的信号输入到dsp AudioRecorder工具箱--它不接受两个我不认为的源。当您读取数据时,它应该是一个由2个向量组成的矩阵(假设您在AudioRecorder设置中指定了2个通道)。
https://stackoverflow.com/questions/32842170
复制相似问题