【问题标题】:How to play an audio signal in matlab controlling the left and right channel of earphone on Matlab individually?如何在matlab中分别控制耳机左右声道在matlab中播放音频信号?
【发布时间】:2014-07-22 16:21:47
【问题描述】:

我正在 matlab 中进行音频信号处理。作为我项目的一部分,我正在播放录制的音频信号,对其进行处理并实时播放。现在,我通过两个通道发送的输出,我希望以不同的方式处理它,并且还想绘制图表。

基本上,我希望左耳听到​​与右耳不同的处理信号并绘制它。

即使它不是实时的,即任何存储的信号(.wav 等)都会有所帮助。

任何帮助将不胜感激(没有太多时间:()。

【问题讨论】:

  • 你用什么指令来演奏?通常输入是一个两列矩阵,其中每一列是一个通道(左/右)
  • 我正在使用 audioplayer 播放声音信号。

标签: matlab audio signal-processing


【解决方案1】:

如果您使用的是存储的 .wav 文件,则可以使用 wavread 导入,这会将文件作为两列数组导入。如果将此数组称为A,则可以使用A(:, 1) 操作左声道,使用A(:, 2) 操作右声道。

如果您使用audiorecorder 录制音频,则必须将声道数从 1 更改为 2,以便以立体声录制。默认为单声道。

编辑:要实时绘图,您可以使用我编写的以下函数。该函数将您想要记录的时间量用作其输入runtime。它创建了一个计时器timerID,并不断地从记录器对象中获取音频数据并绘制它,使用drawnow 刷新图形。如果你想进行任何处理,你可以在plot 命令之前的循环中进行。

function audioPlot(runtime)
timerID = tic;
recObj = audiorecorder(44100, 24, 2);
record(recObj);
h(1) = subplot(2, 1, 1);
h(2) = subplot(2, 1, 2);
while (toc(timerID) < runtime)
    if recObj.TotalSamples > 0
        audioData = getaudiodata(recObj);
        plot(h(1), audioData(:, 1))
        plot(h(2), audioData(:, 2))
        xlabel(h(1), 'Left Channel')
        xlabel(h(2), 'Right Channel')
        drawnow
    end
end
stop(recObj);
end

很高兴回答任何问题!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多