我在matlab中做音频信号处理。作为我项目的一部分,我正在播放录音信号,处理它,并实时播放它。现在,我通过两个通道发送的输出,我想要以不同的方式处理,并且希望绘制图表。
基本上,我希望左耳能听到与右耳不同的处理信号,并绘制它。
即使它不是实时的,也就是任何存储的信号(.wav等)都会有帮助。
任何帮助都将受到感谢(没有太多时间:() )
发布于 2014-07-22 19:22:53
如果使用的是存储的.wav文件,则可以使用wavread导入,这将作为两列数组导入该文件。如果调用此数组A,则可以使用A(:, 1)操作左侧通道,使用A(:, 2)操作右侧通道。
如果您使用audiorecorder录制音频,则必须将频道数量从1更改为2,以便以立体声录制。默认为mono。
编辑:实时绘图,您可以完成以下函数的编写。该函数的输入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很高兴回答任何问题!
https://stackoverflow.com/questions/24892702
复制相似问题