实时音频处理:audioDeviceReader'Driver'不起作用(MATLAB)

时间:2018-10-29 02:09:15

标签: matlab audio real-time audio-recording asio

我使用Fireface UC音频接口。

setpref('dsp', 'portaudioHostApi', 3);
deviceReader = audioDeviceReader('Driver', 'ASIO', 'Device', 'ASIO Fireface USB', 'SamplesPerFrame', 1024, 'SampleRate', 48000);
deviceWriter = audioDeviceWriter('Driver', 'ASIO', 'Device', 'ASIO Fireface USB', 'SampleRate', 48000, 'BufferSize', 1024);

当我在上述代码中启用ASIO驱动程序时,没有输出声音。从asiosettings(deviceWriter.Device)获得的缓冲区大小设置也设置为1024。

但是,当未启用ASIO驱动程序时(例如,在下面的代码中),则可以实时输出声音,但是会有明显的延迟。

setpref('dsp', 'portaudioHostApi', 3);
deviceReader = audioDeviceReader('Device', 'Analog (1+2) (RME Fireface UC)', 'SamplesPerFrame', 1024, 'SampleRate', 48000);
deviceWriter = audioDeviceWriter('Device', 'Analog (3+4) (RME Fireface UC)', 'SampleRate', 48000, 'BufferSize', 1024);

如何成功启用ASIO以减少实时音频延迟?

编辑:使用具有音频系统工具箱的matlab 2018b。当缓冲区大小减小到64(这是在发生点击和弹出声之前我能走的最远)时,延迟会减小。

但是,仅当我对麦克风使用ASIO,对扬声器使用WASAPI时,即

setpref('dsp', 'portaudioHostApi', 3); 
deviceReader = audioDeviceReader('Driver', 'ASIO', 'Device', ASIO Fireface USB', 'SamplesPerFrame', 1024, 'SampleRate', 48000);
deviceWriter = audioDeviceWriter('Driver', 'WASAPI', 'Device', 'Analog (3+4) (RME Fireface UC)', 'SampleRate', 48000, 'BufferSize', 64);

为什么会这样?为什么我不能同时为扬声器和麦克风启用ASIO驱动程序?

另外,面临的另一个问题是我的讲话有回声,这不是故意的。

1 个答案:

答案 0 :(得分:0)

了解所用的Matlab版本以及是否具有音频系统工具箱可能会有所帮助。然后,我可以建议这个示例说明如何测量低延迟: https://www.mathworks.com/help/audio/examples/measure-audio-latency.html