主要内容

melSpectrogram

梅尔·光谱图

描述

例子

年代= melSpectrogram (audioIn,fs以采样率返回音频输入的MEL谱图fs.该函数将输入的列视为单独的通道。

例子

年代= melSpectrogram (audioIn,fs,名称,值使用一个或多个选项指定选项名称,值对参数。

例子

年代,F,T) = melSpectrogram (___返回频带的中心频率(以Hz为单位)和每个数据窗口的位置(以秒为单位)。该位置对应于每个窗口的中心。您可以将此输出语法与前面的任何输入语法一起使用。

例子

melSpectrogram (___绘制当前图中表面上的MEL光谱图。

例子

全部折叠

使用默认设置计算整个音频文件的mel谱图。打印滤波器组中的带通滤波器数量和mel光谱图中的帧数。

[audioIn, fs] = audioread (“Counting-16-44p1-mono-15secs.wav”);S = melSpectrogram (audioIn fs);[numBands, numFrames] = (S)大小;流(filterbank中带通滤波器的数量:%d\nnumBands)
滤波器组中的带通滤波器数量:32
流(“谱图帧数:%d\n”numFrames)
谱图帧数:1551

绘制mel光谱图。

melSpectrogram (audioIn fs)

图中包含一个axes对象。坐标轴对象包含一个image类型的对象。

计算具有1024点重叠的2048点周期汉恩窗的mel谱。使用4096点FFT转换到频域。将频域表示通过64个半重叠三角形带通滤波器,范围为62.5 Hz到8 kHz。

[audioIn, fs] = audioread (“FunkyDrums-44p1-stereo-25secs.mp3”);S = melSpectrogram (audioIn fs,...“窗口”损害(2048,“周期”),...“OverlapLength”, 1024,...“FFTLength”, 4096,...“NumBands”, 64,...“FrequencyRange”, 62.5, 8 e3);

调用melSpectrogram同样,这次没有输出参数,这样您就可以看到MEL光谱图。输入音频是多通道信号。如果你叫melSpectrogram如果是多通道输入且没有输出参数,则只绘制第一个通道。

melSpectrogram (audioIn fs,...“窗口”损害(2048,“周期”),...“OverlapLength”, 1024,...“FFTLength”, 4096,...“NumBands”, 64,...“FrequencyRange”, 62.5, 8 e3)

图中包含一个axes对象。坐标轴对象包含一个image类型的对象。

melSpectrogram对及时加窗的音频信号应用频域滤波器组。您可以得到滤波器的中心频率和对应于分析窗口的时间瞬间,作为第二个和第三个输出参数melSpectrogram

获取mel谱图,滤波器组中心频率,和多声道音频信号的分析窗口时间瞬间。使用中心频率和时间瞬间来绘制每个通道的mel光谱图。

[audioIn, fs] = audioread (“AudioArray-16-16-4channels-20secs.wav”);(年代,cF, t) = melSpectrogram (audioIn fs);S = 10 * log10 (S + eps);%转换为dB绘图i = 1:size(S,3) figure(i) surf(t,cF,S(:,:,i),“EdgeColor”,“没有”);包含(“时间(s)”) ylabel (的频率(赫兹), 90年)视图([0])标题(sprintf (“频道% d ',i))轴([t(1) t(端)cF(1) cF(端)])结束

图中包含一个axes对象。标题为Channel 1的axis对象包含一个类型为surface的对象。

图中包含一个axes对象。标题为Channel 2的axis对象包含一个类型为surface的对象。

图中包含一个axes对象。标题为Channel 3的axis对象包含一个类型为surface的对象。

图中包含一个axes对象。标题为Channel 4的axes对象包含一个类型为surface的对象。

输入参数

全部折叠

音频输入,指定为列向量或矩阵。如果指定为矩阵,该函数将列视为独立的音频通道。

数据类型:|

以Hz为单位的输入采样速率,指定为正标量。

数据类型:|

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。

在R2021a之前,名称和值之间用逗号隔开,并括起来的名字在报价。

例子:“WindowLength”,1024年

窗口,指定为逗号分隔的对,由“窗口”一个实向量。向量中的元素个数必须在[1,大小(audioIn, 1)].向量中的元素数量也必须大于OverlapLength

数据类型:|

样本中的分析窗口重叠长度,用逗号分隔的对表示“OverlapLength”范围内的整数[0, (WindowLength- 1))

数据类型:|

用于计算DFT的点数,指定为逗号分隔的对,由“FFTLength”和一个大于等于的正整数WindowLength.如果未指定的,FFTLength默认为WindowLength

数据类型:|

mel带通滤波器的个数,指定为逗号分隔的对,由“NumBands”一个正整数。

数据类型:|

在此范围内计算mel谱图(以Hz为单位)的频率范围,指定为逗号分隔的对,由“FrequencyRange”以及在值域内单调递增的双元素行向量[0,fs/ 2)

数据类型:|

梅尔谱图的类型,指定为逗号分隔的对,由“SpectrumType”而且“权力”“级”

数据类型:字符|字符串

应用窗口规范化,指定为逗号分隔的对,由“WindowNormalization”而且真正的.当WindowNormalization被设置为真正的,将MEL谱图中的幂(或量级)归一化,以去除时域的幂(或量级)窗口

数据类型:字符|字符串

滤波器组归一化的类型,指定为逗号分隔的对“FilterBankNormalization”而且“带宽”,“区域”,或“没有”

数据类型:字符|字符串

输出参数

全部折叠

梅尔谱图,作为列向量、矩阵或3-D阵列返回。的尺寸年代l——- - - - - -——- - - - - -N,地点:

  • l是每个MEL频谱中的频率箱数。NumBands而且fs确定l

  • 是音频信号被分割成的帧数。大小(audioIn, 1),WindowLength,OverlapLength确定

  • N通道的数量是这样的吗N大小(audioIn, 2)

从输出中删除尾随单例维度年代

数据类型:|

mel带通滤波器的中心频率以Hz为单位,作为有长度的行向量返回大小(年代, 1)

数据类型:|

音频的每个分析窗口的位置,以秒为单位,作为行向量长度返回大小(年代, 2).该位置对应于每个窗口的中心。

数据类型:|

算法

全部折叠

melSpectrogram函数遵循计算MEL谱图的一般算法,如[1]

在该算法中,音频输入首先缓冲到帧元素个数(窗口样品的数量。帧重叠在OverlapLength样品的数量。指定的窗口应用于每一帧,然后将帧转换为频域表示FFTLength点的数量。频域表示可以是幅值或功率,由SpectrumType.如果WindowNormalization被设置为真正的,频谱由窗口归一化。频域表示的每一帧都经过梅尔滤波器组。对mel滤波器组输出的光谱值进行累加,然后将通道串接,使每一帧转换为aNumBands元列向量。

滤波器组的设计

梅尔滤波器组被设计成在梅尔尺度上等距的半重叠三角形滤波器。NumBands控制MEL带通滤波器的数量。FrequencyRange控制MEL滤波器组中第一个和最后一个滤波器的带边。FilterBankNormalization指定应用于各个波段的规范化类型。

参考文献

[1] Rabiner, Lawrence R.和Ronald W. Schafer。数字语音处理理论与应用“,.上马鞍河,新泽西州:皮尔逊,2010年。

扩展功能

C / c++代码生成
使用MATLAB®Coder™生成C和c++代码。

GPU的代码生成
使用GPU Coder™为NVIDIA GPU生成CUDA®代码。

GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。

版本历史

介绍了R2019a

全部展开

Baidu
map