0

我有一个项目,我必须通过3 个不同的扬声器播放3 个不同的音频文件。文件的开始时间很重要(我的意思是它们必须同时开始播放)。

我的第一个选择是使用3台联网计算机,每台计算机一个文件,以及一个控制这三个系统的程序(例如一个服务器和两个客户端)。

但我认为使用4声道的声卡确实更好。经过一番搜索,我发现有很多这样的声卡。我想知道,是否可以使用 Python 或 Matlab 程序或任何其他方式控制通道?有图书馆吗?

4

1 回答 1

1

MATLAB 中的 audioplayer 函数仅支持 2 个通道。但是您可以使用 DSP System Toolbox 中的功能。下面的代码片段可以提供帮助:

hafr1 = dsp.AudioFileReader('myfile1.wav');% Can be other formats as well
hafr2 = dsp.AudioFileReader('myfile2.wav');
hafr3 = dsp.AudioFileReader('myfile3.wav');
hap = dsp.AudioPlayer;
hap.SampleRate = hafr1.SampleRate; % Assuming that all files have same sample rate or else you have to do some clever mixing.
while ~isDone(hafr1) % assuming same size. You need to add some clever logic to adjust the number of channels if they are of different sizes
     data1 = step(hafr1);
     data2 = step(hafr2);
     data3 = step(hafr3);
     step(hap, [data1 data2 data3]);
end

此代码将在默认输出设备上播放音频。如果它有三个或更多通道,您将在 3 个单独的通道上听到音频。如果没有,取决于平台,它将混合成两个通道。

您可以参考文档页面获取信息。

迪内什

于 2015-11-06T16:04:14.657 回答