melSpectrogram
梅尔·光谱图
语法
描述
例子
计算梅尔光谱图
使用默认设置计算整个音频文件的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)
计算2048点窗口的梅尔谱
计算具有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)
获取滤波器组中心频率和分析窗口时间瞬间
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(端)])结束
输入参数
audioIn
- - - - - -音频输入
列向量|矩阵
音频输入,指定为列向量或矩阵。如果指定为矩阵,该函数将列视为独立的音频通道。
数据类型:单
|双
fs
- - - - - -输入采样率(Hz)
积极的标量
以Hz为单位的输入采样速率,指定为正标量。
数据类型:单
|双
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。
在R2021a之前,名称和值之间用逗号隔开,并括起来的名字
在报价。
例子:“WindowLength”,1024年
窗口
- - - - - -窗口应用于时域
汉明(圆(fs * 0.3),“周期性”)
(默认)|向量
窗口,指定为逗号分隔的对,由“窗口”
一个实向量。向量中的元素个数必须在[1,大小(
].向量中的元素数量也必须大于audioIn
, 1)OverlapLength
.
数据类型:单
|双
OverlapLength
- - - - - -分析窗口重叠长度(样本)
轮(0.02 *fs
)
(默认)|范围内的整数[0, (WindowLength
- 1))
fs
)WindowLength
- 1))样本中的分析窗口重叠长度,用逗号分隔的对表示“OverlapLength”
范围内的整数[0, (
.WindowLength
- 1))
数据类型:单
|双
FFTLength
- - - - - -DFT点数
WindowLength
(默认)|正整数
用于计算DFT的点数,指定为逗号分隔的对,由“FFTLength”
和一个大于等于的正整数WindowLength
.如果未指定的,FFTLength
默认为WindowLength
.
数据类型:单
|双
NumBands
- - - - - -mel带通滤波器的数量
32
(默认)|正整数
mel带通滤波器的个数,指定为逗号分隔的对,由“NumBands”
一个正整数。
数据类型:单
|双
FrequencyRange
- - - - - -计算mel谱图的频率范围(Hz)
[0fs
/ 2)
(默认)|双元素行向量
fs
/ 2)在此范围内计算mel谱图(以Hz为单位)的频率范围,指定为逗号分隔的对,由“FrequencyRange”
以及在值域内单调递增的双元素行向量[0,
.fs
/ 2)
数据类型:单
|双
SpectrumType
- - - - - -梅尔谱图的类型
“权力”
(默认)|“级”
梅尔谱图的类型,指定为逗号分隔的对,由“SpectrumType”
而且“权力”
或“级”
.
数据类型:字符
|字符串
WindowNormalization
- - - - - -应用窗口规范化
真正的
(默认)|假
应用窗口规范化,指定为逗号分隔的对,由“WindowNormalization”
而且真正的
或假
.当WindowNormalization
被设置为真正的
,将MEL谱图中的幂(或量级)归一化,以去除时域的幂(或量级)窗口
.
数据类型:字符
|字符串
FilterBankNormalization
- - - - - -滤波器组规范化的类型
“带宽”
(默认)|“区域”
|“没有”
滤波器组归一化的类型,指定为逗号分隔的对“FilterBankNormalization”
而且“带宽”
,“区域”
,或“没有”
.
数据类型:字符
|字符串
输出参数
年代
——梅尔光谱图
列向量|矩阵|三维阵列
梅尔谱图,作为列向量、矩阵或3-D阵列返回。的尺寸年代
是l——- - - - - -米——- - - - - -N,地点:
米是音频信号被分割成的帧数。
大小(
,audioIn
, 1)WindowLength
,OverlapLength
确定米.N通道的数量是这样的吗N=
大小(
.audioIn
, 2)
从输出中删除尾随单例维度年代
.
数据类型:单
|双
F
- mel带通滤波器的中心频率(Hz)
行向量
mel带通滤波器的中心频率以Hz为单位,作为有长度的行向量返回大小(
.年代
, 1)
数据类型:单
|双
T
-每个音频窗口的位置
行向量
音频的每个分析窗口的位置,以秒为单位,作为行向量长度返回大小(
.该位置对应于每个窗口的中心。年代
, 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)上运行来加速代码。
版本历史
介绍了R2019aR2020b:WindowLength
会在未来的版本中删除吗
的WindowLength
参数将从melSpectrogram
在将来的版本中。使用窗口
参数。
在R2020b之前的版本中,您只能指定时域窗口的长度。窗口总是被设计成周期性的汉明窗口。您可以替换代码的实例
S = melSpectrogram (audioin fs,“WindowLength”, 1024);
S = melSpectrogram (audioIn fs,“窗口”1024年,汉明(“周期”));
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。