如何通过三个不同的扬声器播放三个不同的音频文件?

时间:2015-11-05 17:15:54

标签: python matlab audio soundcard soundchannel

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

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

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

1 个答案:

答案 0 :(得分:1)

MATLAB中的audioplayer功能仅支持2个通道。但您可以使用DSP系统工具箱中的功能。下面的代码段有助于:

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个独立的通道上听到音频。如果没有,根据平台,它将混合成两个通道。

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

的Dinesh