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

问题描述 投票:0回答:1

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

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

matlab audio volume
1个回答
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向量将确保在任一通道上绘制的每个样本都具有与该特定样本相关联的正确时间值。

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

© www.soinside.com 2019 - 2024. All rights reserved.