主要内容

光谱通量

音频信号和听觉频谱图的频谱流量

描述

实例

通量=光谱通量(x,F)返回信号的光谱通量,x光谱通量是光谱随时间变化的度量。函数如何解释x取决于物体的形状F.

实例

通量=光谱通量(x,F,初始条件)指定以前的频谱状态。此语法仅支持频域输入。万博1manbetx

实例

通量=光谱通量(___,名称、值)指定使用一个或多个选项的选项名称、值配对参数。

例如通量=光谱通量(x,f,'NormType',1)使用范数类型1计算光谱通量。

实例

[通量,最终条件]=光谱通量(___)还返回最终的光谱状态。

例子

全部崩溃

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

[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]=光谱图(音频输入,fs);通量=光谱通量(s,cf);绘图(t,通量)xlabel(‘时间’)伊拉贝尔(“通量”)

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

读入音频文件。

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

计算功率谱随时间的通量。计算具有25 ms重叠的50 ms汉明窗数据的通量。使用62.5 Hz到50 Hz的范围财政司司长/2用于通量计算。绘制结果。

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

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

频谱流量测量连续频谱的变化。要计算流式音频的频谱流量,可以将状态传入和传出函数。

创建一个音频文件读取器对象以逐帧读取音频数据。创建异步缓冲器对象将音频输入缓冲到重叠的帧中。创建第二个异步缓冲器目的记录光谱通量计算。

fileReader=dsp.AudioFileReader(“计数-16-44p1-mono-15秒波形”);inputBuffer=dsp.AsyncBuffer;logger=dsp.AsyncBuffer;

在音频流循环中:

  1. 从源文件中读入一帧音频数据。

  2. 将音频数据写入输入缓冲区。

  3. 如果缓冲区中有一跳数据可用,则读取具有重叠的数据帧。

  4. 计算单边幅值短时傅里叶变换。

  5. 计算光谱通量。

  6. 记录光谱通量,以便以后绘制。

fs=fileReader.SampleRate;samplesPerFrame=round(fs*0.05);samplesOverlap=round(fs*0.025);samplesPerHop=samplesPerFrame-samplesOverlap;win=hamming(samplesPerFrame,“周期性”);Sprev=[];虽然~isDone(fileReader)audioIn=fileReader();写入(输入缓冲区、音频输入);虽然inputBuffer.NumUnreadSamples>=samplesPerHop audioBuffered=read(inputBuffer,samplesPerFrame,samplesOverlap);[S,f]=stft(audioBuffered,fs,“窗口”“重叠长度”,样本重叠,“频率范围”,“片面的”);[flux,Sprev]=光谱通量(abs(S),f,Sprev);写入(记录器,flux);终止终止发布(文件阅读器)

绘制记录的数据。

绘图(读取(记录器))标签(“通量”)

图中包含一个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是通道数。

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

以前的光谱状态,指定为L-借-N矩阵,其中:

  • L是单面光谱表示中的箱数,等于努梅尔(F).

  • N是音频数据的通道数,等于大小(x,3).

如果初始条件未指定,或指定为空,光谱通量将第一个频谱视为重复频谱。即第一个频谱通量输出为零。

依赖关系

此输入参数仅在以下情况下有效:,x,是音频的频域表示。这个光谱通量函数解释输入的域x根据F.

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

名称值参数

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

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

用于计算通量的范数类型,指定为逗号分隔对,由“正常类型”2.1..

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

笔记

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

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

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

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

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

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

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

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

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

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

  • “权力”–计算单侧功率谱的光谱通量。

  • “震级”–为单侧幅度谱计算光谱通量。

数据类型:烧焦|一串

输出参数

全部崩溃

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

最终光谱状态,返回为L-借-N矩阵,其中:

  • L是单面光谱表示中的箱数,等于努梅尔(F).

  • N是音频数据的通道数,等于大小(x,3).

依赖关系

此输出参数仅在以下情况下有效:,x,是音频的频域表示。这个光谱通量函数解释输入的域x根据F.

算法

光谱通量的计算如中所述[1]:

通量( T ) = ( K = B 1. B 2. | s K ( T ) s K ( T 1. ) | P ) 1. P

哪里

  • sK是bin处的光谱值K.

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

  • P是范数类型。可以使用指定范数类型标准型.

工具书类

[1] 稳健多特征语音/音乐鉴别器的构建和评估IEEE声学、语音和信号处理国际会议.第2卷,1997年,第1221-1224页。

扩展能力

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

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

在R2019a中引入