主要内容

Spectralflux

音频信号和听觉谱图的光谱通量

描述

例子

助势= spectralflux(XF的)返回信号的光谱通量,X, 随着时间的推移。光谱通量是频谱随时间变化的量度。该功能如何解释X取决于形状F

例子

助势= spectralflux(XF初始条件的)指定先前的光谱状态。仅对频域输入支持此语法。金宝app

例子

助势= spectralflux(___名称,价值的)使用一个或多个指定选项名称,价值对论点。

例如,flux = spectralflux(x,f,'normype',1)使用规范1计算光谱通量。

例子

[助势最终能力] = spectralflux(___的)还返回最终光谱状态。

例子

全部收缩

在音频文件中读取,使用默认参数计算通量,然后绘制结果。

[AudioIn,FS] = audioread('Counting-16-44p1-mono-15secs.wav');Flux = Spectralflux(AudioIn,FS);T = Linspace(0,尺寸(AudioIn,1)/ FS,尺寸(助焊剂,1));绘制(t,助焊剂)xlabel('时间(s)')ylabel(“助流”的)

图包含轴对象。轴对象包含类型线的对象。

读取音频文件,然后使用该音频文件计算MEL频谱图MELSPECTROGGROP.功能。计算随时间的熔点谱图的通量。绘制结果。

[AudioIn,FS] = audioread('Counting-16-44p1-mono-15secs.wav');[S,CF,T] = MELSPectRoge(AudioIn,FS);Flux = Spectralflux(S,CF);绘制(t,助焊剂)xlabel('时间(s)')ylabel(“助流”的)

图包含轴对象。轴对象包含类型线的对象。

在音频文件中读取。

[AudioIn,FS] = audioread('Counting-16-44p1-mono-15secs.wav');

随着时间的推移计算功率谱的磁通量。计算使用25毫秒重叠的数据的50毫米汉明窗口的通量。使用62.5 Hz的范围FS./ 2用于磁通计计算。绘制结果。

flux = spectralflux(AudioIn,FS,......'窗户',汉明(圆形(0.05 * fs)),......'overlaplencth',圆形(0.025 * FS),......'范围',[62.5,fs / 2]);T = Linspace(0,尺寸(AudioIn,1)/ FS,尺寸(助焊剂,1));绘制(t,助焊剂)xlabel('时间(s)')ylabel(“助流”的)

图包含轴对象。轴对象包含类型线的对象。

光谱通量测量连续光谱的变化。要计算流式音频的光谱通量,您可以通过功能进出功能。

创建一个dsp.audiofilereader.对象以逐帧中的音频数据读取。创建一个dsp.asyncbuffer.对象将音频输入缓冲到重叠的帧中。创造一秒钟dsp.asyncbuffer.对象记录光谱通量计算。

filereader = dsp.audiofilereader('Counting-16-44p1-mono-15secs.wav');InputBuffer = DSP.Asyncuffer;logger = dsp.asyncbuffer;

在一个音频流循环中:

  1. 阅读来自源的音频数据帧。

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

  3. 如果缓冲区可获得数据的跃点,请阅读具有重叠的数据帧。

  4. 计算单面幅度短时间傅里叶变换。

  5. 计算光谱通量。

  6. 记录频谱通量以便稍后绘制。

fs = filereader.sampleate;SamplesPerframe = ROUNG(FS * 0.05);Samplesoverlap =圆形(FS * 0.025);samplesperhop = samplesperframe  -  samplesoverlap;win =汉明(Samplesperframe,'定期');SPREV = [];尽管〜ISDONE(FILEREADER)AUDION = FILEREADER();写(InputBuffer,AudioIn);尽管InputBuffer.NumunReadsamples> = SamplesPerhop audiobuffered =读取(InputBuffer,SamplepumbleFlame,SamplesOverlap);[s,f] = stft(有obiobuffered,fs,“窗户”,赢,“overlaplength”,samplesoverlap,“频率范围”“片面”);[助焊剂,sprev] = Spectralflux(Abs(s),f,sprev);写(记录器,助焊剂);结尾结尾发布(Filereader)

绘制记录的数据。

绘图(读(记录器))Ylabel(“助流”的)

图包含轴对象。轴对象包含类型线的对象。

输入参数

全部收缩

输入信号,指定为向量,矩阵或3-D阵列。该功能如何解释X取决于形状F

数据类型:单身的|双倍的

Hz中的采样率或频率矢量分别指定为标量或向量。该功能如何解释X取决于形状F

  • 如果F是一个标量,X被解释为时域信号,和F被解释为采样率。在这种情况下,X必须是真正的矢量或矩阵。如果X被指定为矩阵,列被解释为单独的通道。

  • 如果F是矢量,X被解释为频率域信号,和F被解释为频率,在Hz中,对应于行的行X。在这种情况下,X必须是一个真实的L.-经过-M.-经过-N.阵列,其中L.是给定频率的频谱值的数量FM.是单个光谱的数量,以及N.是渠道的数量。

数据类型:单身的|双倍的

以前的光谱状态,指定为一个L.-经过-N.矩阵,其中:

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

  • N.是音频数据的通道数,等于尺寸(X3,3)

如果初始条件未指定,或指定为空,Spectralflux认为第一频谱作为重复。也就是说,第一个助势输出为零。

依赖性

此输入参数仅在输入时才有效,X,是音频的频域表示。这Spectralflux功能解释输入的域X基于尺寸F

数据类型:单身的|双倍的

名称 - 值参数

指定可选的逗号分离对名称,价值论点。姓名是参数名称和价值是相应的价值。姓名必须出现在引号内。您可以以任何顺序指定多个名称和值对参数name1,value1,...,namen,valuen

例子:'窗口',汉明(256)

用于计算通量的规范类型,指定为逗号分隔的配对'normype'2或者1

数据类型:单身的|双倍的

笔记

以下名称 - 值对参数适用X是一个时域信号。如果X是频域信号,忽略以下名称值对参数。

应用在时域中的窗口,指定为逗号分隔对'窗户'和一个真正的矢量。矢量中的元素数量必须在范围内[1,尺寸(X1)]。矢量中的元素数量也必须大于overtaplenth

数据类型:单身的|双倍的

在相邻窗口之间重叠的样本数,指定为包括的逗号分隔对'overlaplencth'和范围内的整数[0,尺寸(窗户1))。

数据类型:单身的|双倍的

用于计算DFT的窗口输入样本的箱数,指定为包括的逗号分隔对'fftlength'和一个正标量整数。如果未指定,FFTLength.默认为元素的数量窗户

数据类型:单身的|双倍的

Hz的频率范围,指定为逗号分隔对组成'范围'和一个两个元素的行向量增加范围内的真实值[0,F/ 2]。

数据类型:单身的|双倍的

频谱类型,指定为逗号分隔的配对组成'spectrumtype''力量'或者'震级'

  • '力量'- 针对单面功率谱计算光谱通量。

  • '震级'- 针对单面幅度谱计算光谱通量。

数据类型:char|细绳

输出参数

全部收缩

Hz中的光谱通量,作为标量,向量或矩阵返回。每一排助势对应于窗口的光谱通量X。每一列助势对应于独立频道。

最终光谱状态,作为一个返回L.-经过-N.矩阵,其中:

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

  • N.是音频数据的通道数,等于尺寸(X3,3)

依赖性

此输出参数仅在输入时有效,X,是音频的频域表示。这Spectralflux功能解释输入的域X基于尺寸F

算法

如下所述计算光谱通量[1]

助焊剂( T. 的) = σ. K. = B. 1 B. 2 | S. K. T. 的) - S. K. T. - 1 的) | P. 的) 1 P.

在哪里

  • S.K.是垃圾箱的光谱值K.

  • B.1B.2频带边缘是计算光谱通量的频带边缘。

  • P.是常态类型。您可以使用标准类型使用丹型

参考

[1] Scheirer,E.和M. Slaney。“强大的多因素语音/音乐鉴别器的构建和评估。”IEEE关于声学,语音和信号处理国际会议。第2卷,1997,pp。1221-1224。

扩展能力

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

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

在R2019A引入