如何在Matlab中删除低于某个音量级别的声音

时间:2014-06-30 04:00:54

标签: matlab audio volume

当我将音频文件加载到Audacity时,我得到一个如下图:

blah

如何在MATLAB中获得这样的图形?我需要提取看起来像小号的中间块。我的频率/功率图表不会起作用。

1 个答案:

答案 0 :(得分:1)

我假设该图表位于时域。因此,您可以使用audioread命令来读取文件:

[f,fs] = audioread('filename.ext');

filename.ext是您要加载的音频文件,f将存储音频数据,而fs是采样频率。在执行此操作之前,必须确保音频文件位于MATLAB指向的工作目录中。如果你没有,那么MATLAB将无法找到该文件。您可以通过在''命令的audioread中指定绝对路径来覆盖此设置(例如,适用于Windows的C:\Documents and Settings\...或适用于Linux的/usr/...等。)f的每一列表示音频中的单个通道。因此,如果f是一列,则表示单声道音频,而两列表示立体声。假设您的音频是立体声,您可以通过以下方式绘制左右声道:

figure;
subplot(2,1,1);
t = linspace(0,(size(f,1)-1)/fs, size(f,1));
plot(t, f(:,1));
title('Left Channel');
subplot(2,1,2);
plot(t, f(:,2));
title('Right Channel');

这将创建一个带有两个图的图形。第一个图显示左通道,第二个图显示右通道。 t向量将确保在任一通道上绘制的每个样本都具有与该特定样本关联的正确时间值。

执行此操作后,您可以使用窗口中的绘图标注工具确定需要使用哪个样本编号来剪切所需的部分。如果我确实拥有您使用的音频文件,我可以帮助您完成此操作。否则,此代码应该让您入门。