主要内容

melSpectrogram

梅尔·光谱图

描述

例子

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

例子

年代= melSpectrogram (audioInfs名称,值使用一个或多个指定选项名称,值对论点。

例子

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

例子

melSpectrogram (___在当前图的一个表面上绘制MEL谱图。

例子

全部折叠

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

[audioIn, fs] = audioread (“Counting-16-44p1-mono-15secs.wav”);s = melspectreggre(isausin,fs);[numband,numframes] =大小;流("滤波器组中的带通滤波器数量:%d\n",numband)
滤波器组中带通滤波器数量:32
流("声谱图帧数:%d\n"numFrames)
声谱帧数:1551

绘制MEL谱图。

MELSPECTROGROG(AudioIn,FS)

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

使用1024点重叠计算2048点周期HANN窗口的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,...'频率范围', 62.5, 8 e3);

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

MelspectRoge(AudioIn,FS,...“窗口”损害(2048,“周期”),...“OverlapLength”, 1024,...“FFTLength”, 4096,...'numbands', 64,...'频率范围', 62.5, 8 e3)

图中包含一个坐标轴。轴包含一个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) surf(t,cF,S(:,:,i),“EdgeColor”“没有”);包含(“时间(s)”) ylabel (的频率(赫兹), 90年)视图([0])标题(sprintf (“频道% d ',i))轴([t(1) t(end) cF(1) cF(end)])结束

图中包含一个坐标轴。标题为通道1的轴包含一个类型为surface的对象。

图中包含一个坐标轴。标题为通道2的轴包含一个类型为surface的对象。

图中包含一个坐标轴。标题为通道3的轴包含一个类型为surface的对象。

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

输入参数

全部折叠

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

数据类型:|

输入采样率(Hz),指定为正标量。

数据类型:|

名称-值对的观点

指定可选的逗号分隔的对名称,值论点。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数name1,value1,...,namen,valuen

例子:“WindowLength”,1024年

应用于时域的窗口,指定为逗号分隔对“窗口”一个实向量。向量中的元素个数必须在范围[1,大小(audioIn, 1)]。向量中的元素数也必须大于overtaplenth

数据类型:|

样本分析窗口重叠长度,指定为逗号分隔对组成“OverlapLength”和一个范围内的整数[0, (WindowLength- 1))

数据类型:|

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

数据类型:|

mel带通滤波器的数目,指定为逗号分隔对组成'numbands'和一个正整数。

数据类型:|

以Hz计算mel谱图的频率范围,指定为逗号分隔对,由'频率范围'以及一个二元素行向量,其值在该范围内单调递增[0,fs/ 2)

数据类型:|

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

数据类型:char|字符串

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

数据类型:char|字符串

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

数据类型:char|字符串

输出参数

全部折叠

梅尔光谱图,以列向量、矩阵或三维阵列的形式返回。的尺寸年代l-经过--经过-N,地点:

  • l为每个MEL频谱的频率箱数。NumBandsfs确定l

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

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

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

数据类型:|

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

数据类型:|

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

数据类型:|

算法

全部折叠

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

在该算法中,音频输入首先被缓冲为帧元素个数(窗口样品的数量。框架是重叠的overtaplenth样品的数量。指定的窗口,然后将帧转换为频域表示法FFTLength点的数量。频率域表示法可以是幅值或功率,由SpectrumType.如果WindowNormalization被设定为真正的时,光谱由窗归一化。频域表示法的每一帧都要经过mel滤波器组。将mel滤波器组输出的光谱值相加,然后将通道连接起来,使每一帧转换为aNumBands元列向量。

滤波器组的设计

mel滤波器组被设计成在mel尺度上等距的半重叠三角形滤波器。NumBands控制MEL带通滤波器的数量。频率范围控制MEL滤波器库中的第一和最后一个滤波器的带边。FilterBankNormalization指定应用于单个频带的归一化类型。

兼容性的考虑

全部展开

未来版本中的行为改变

参考

Rabiner, Lawrence R.和Ronald W. Schafer。数字语音处理理论与应用.上鞍河,NJ:皮尔森,2010。

扩展功能

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

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

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

介绍了R2019a