主要内容

spectralSkewness

音频信号和听觉频谱图的频谱偏斜

描述

实例

偏斜=光谱亮度(x,F)返回信号的光谱偏斜度,x,随时间推移。函数如何解释x取决于物体的形状F.

实例

偏斜=光谱亮度(x,F,名称、值)指定使用一个或多个选项的选项名称、值配对参数。

[偏斜,传播,质心]=光谱亮度(___)返回光谱扩展和光谱质心。

例子

全部崩溃

读入音频文件,使用默认参数计算偏度,然后绘制结果。

[audioIn,fs]=音频读取(“计数-16-44p1-mono-15秒波形”);偏度=频谱基度(audioIn,fs);t=linspace(0,大小(audioIn,1)/fs,大小(偏度,1));绘图(t,偏度)xlabel(‘时间’)伊拉贝尔(“偏斜”)

图中包含一个axes对象。axes对象包含一个line类型的对象。

读入音频文件,然后使用光谱图函数。计算mel光谱图随时间的偏度。绘制结果。

[audioIn,fs]=音频读取(“计数-16-44p1-mono-15秒波形”);[s,cf,t]=光谱图(audioIn,fs);偏度=光谱偏度(s,cf);绘图(t,偏度)xlabel(‘时间’)伊拉贝尔(“偏斜”)

图中包含一个axes对象。axes对象包含一个line类型的对象。

读入音频文件。

[audioIn,fs]=音频读取(“计数-16-44p1-mono-15秒波形”);

计算功率谱随时间的偏斜度。计算重叠25 ms的50 ms汉明窗数据的偏斜度。使用62.5 Hz至财政司司长/2用于偏度计算。绘制结果。

偏度=频谱偏度(音频输入,fs,...“窗口”,汉明(圆形(0.05*fs)),...“重叠长度”,圆形(0.025*fs),...“范围”,[62.5,fs/2]);t=linspace(0,大小(audioIn,1)/fs,大小(偏度,1));图(t,偏度)xlabel(‘时间’)伊拉贝尔(“偏斜”)

图中包含一个axes对象。axes对象包含一个line类型的对象。

创建一个音频文件读取器对象以逐帧读取音频数据。创建信号接收器记录光谱偏度计算。

fileReader=dsp.AudioFileReader(“计数-16-44p1-mono-15秒波形”);记录器=dsp.SignalSink;

在音频流循环中:

  1. 读入一帧音频数据。

  2. 计算音频帧的频谱偏斜。

  3. 记录光谱偏斜,以便以后绘制。

要仅计算给定输入帧的光谱偏斜,请指定一个与输入具有相同采样数的窗口,并将重叠长度设置为零。绘制记录的数据。

win=hamming(fileReader.sampleperframe);虽然~isDone(fileReader)audioIn=fileReader();偏斜度=spectralSkewness(audioIn,fileReader.SampleRate,...“窗口”...“重叠长度”,0);记录器(偏度)终止plot(logger.Buffer)ylabel(“偏斜”)

图中包含一个axes对象。axes对象包含一个line类型的对象。

使用异步缓冲器如果

  • 音频流循环的输入具有可变的每帧采样数。

  • 输入到你的音频流循环有一个不一致的采样每帧与分析窗口spectralSkewness.

  • 要计算重叠数据的光谱偏斜。

创建一个异步缓冲器对象,重置记录器,然后释放文件读取器。

buff=dsp.AsyncBuffer;重置(记录器)释放(文件读取器)

指定为重叠25 ms的50 ms帧计算光谱偏斜。

fs=fileReader.SampleRate;samplesPerFrame=round(fs*0.05);samplesOverlap=round(fs*0.025);samplesPerHop=samplesPerFrame-samplesOverlap;win=hamming(samplesPerFrame);虽然~isDone(fileReader)audioIn=fileReader();write(buff,audioIn);虽然buff.numReadSamples>=samplesPerHop audioBuffered=读取(buff,samplesPerFrame,samplesOverlap);偏斜度=光谱基度(audioBuffered,fs,...“窗口”...“重叠长度”,0);记录器(偏度)终止终止发布(文件阅读器)

绘制记录的数据。

plot(logger.Buffer)ylabel(“偏斜”)

图中包含一个axes对象。axes对象包含一个line类型的对象。

输入参数

全部崩溃

输入信号,指定为向量、矩阵或三维数组。函数如何解释x取决于物体的形状F.

数据类型:仅有一个的|双重的

采样率或频率向量,单位为Hz,分别指定为标量或向量。函数如何解释x取决于物体的形状F:

  • 如果F是一个标量,x被解释为时域信号,并且F被解释为采样率。在这种情况下,x必须是实向量或矩阵。如果x指定为矩阵时,列被解释为单个通道。

  • 如果F是一个向量,x被解释为频域信号,并且F被解释为频率,单位为Hz,对应于x.在这种情况下,x一定是真的L-借-M-借-N数组,在哪里L是给定频率下的光谱值的数量F,M是单个光谱的数量,以及N是通道数。

  • 表的行数x,L,必须等于F.

数据类型:仅有一个的|双重的

名称值参数

指定可选的逗号分隔的字符对名称、值论据。名称是参数名和价值是对应的值。名称必须出现在引号内。您可以按任意顺序指定多个名称和值对参数,如下所示:名称1,值1,…,名称,值.

例子:“窗口”,哈明(256)

笔记

以下名称-值对参数适用于以下情况:x是时域信号。如果x是频域信号,忽略名称-值对参数。

窗口应用于时域,指定为逗号分隔对,由“窗口”和一个实向量。向量中的元素数必须在[1,大小(x,1)]。向量中的元素数也必须大于重叠长度.

数据类型:仅有一个的|双重的

相邻窗口之间重叠的样本数,指定为逗号分隔对,由“重叠长度”和范围为[0]的整数,大小(,1)).

数据类型:仅有一个的|双重的

用于计算窗口化输入样本DFT的容器数,指定为逗号分隔对,包括“FFTLength”和正标量整数。如果未指定,FFT长度默认值为中的元素数.

数据类型:仅有一个的|双重的

频率范围(以Hz为单位),指定为逗号分隔对,包括“范围”以及在[0]范围内增加实值的两元素行向量,F/2].

数据类型:仅有一个的|双重的

频谱类型,指定为逗号分隔对,由“光谱类型”“权力”“震级”:

  • “权力”–计算单侧功率谱的谱偏斜。

  • “震级”–计算单侧幅值谱的谱偏斜度。

数据类型:烧焦|一串

输出参数

全部崩溃

光谱偏度,以标量、向量或矩阵形式返回。每行偏斜对应于光谱窗口的光谱偏斜x.每栏偏斜对应于一个独立的通道。

光谱扩展,以标量、向量或矩阵形式返回。每行传播对应于一个窗口的光谱扩展x.每栏传播对应于一个独立的通道。

以Hz为单位的光谱质心,以标量、矢量或矩阵形式返回。每行质心对应于光谱窗口的光谱质心x.每栏质心对应于一个独立的通道。

算法

光谱偏度的计算如中所述[1]:

偏斜 = K = B 1. B 2. ( F K μ 1. ) 3. s K ( μ 2. ) 3. K = B 1. B 2. s K

哪里

  • FK是对应于bin的频率,单位为HzK.

  • sK是bin处的光谱值K.

  • B1.B2.是用于计算光谱偏度的带边(以箱为单位)。

  • μ1.是光谱质心,按照光谱熵作用

  • μ2.是频谱扩展,按照以下公式计算:光谱分布作用

参考文献

[1]彼得斯,G。“在CUIDADO项目中,用于声音描述(相似性和分类)的大量音频功能集。”技术报告;法国巴黎,2004年。

扩展能力

C/C++代码生成
使用Matlab®编码器生成C和C++代码™.

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

在R2019a中引入