主要内容

光谱描述符

Audio Toolbox™提供了一套描述形状的函数,有时称为音色关于音频。本示例定义了用于确定光谱特征的方程,引用了每个特征的常用用法,并提供了示例,以便您可以直观地了解光谱描述符所描述的内容。

谱描述符广泛应用于机器和深度学习应用,以及感知分析。光谱描述符已应用于一系列应用,包括:

  • 说话人识别及识别[21

  • 声学场景识别[11] [17

  • 仪器识别[22

  • 音乐流派分类[16] [18

  • 情绪识别[19] [20.

  • 语音活动检测[5] [7] [8] [10] [12] [13

频谱质心

光谱质心(spectralCentroid)是由非加权和归一化的频率加权和[1]:

μ 1 k b 1 b 2 f k 年代 k k b 1 b 2 年代 k

在哪里

  • f k 以Hz为单位的频率是否对应于bin k

  • 年代 k 光谱值在bin吗 k 。频率谱和功率谱都是常用的。

  • b 1 而且 b 2 是带边,在箱子里,在上面计算光谱质心。

光谱质心代表光谱的“重心”。它被用来表示亮度(2],常用于音乐分析和类型分类。例如,观察音频文件中与高帽子撞击相对应的质心的跳跃。

[音频,fs] = audioread(“FunkyDrums-44p1-stereo-25secs.mp3”);Audio = sum(Audio,2)/2;centroid = spectralCentroid(音频,fs);Subplot (2,1,1) t = linspace(0,size(audio,1)/fs,size(audio,1));情节(t)、音频)ylabel (“振幅”) subplot(2,1,2) t = linspace(0,size(audio,1)/fs,size(centroid,1));情节(t,质心)包含(“时间(s)”) ylabel (“重心(Hz)”

图中包含2个轴对象。axis对象1包含一个类型为line的对象。Axes对象2包含一个类型为line的对象。

谱形心也常用于将语音分为浊音和浊音[3.].例如,质心在无声语音的区域跳跃。

[音频,fs] = audioread(“Counting-16-44p1-mono-15secs.wav”);centroid = spectralCentroid(音频,fs);Subplot (2,1,1) t = linspace(0,size(audio,1)/fs,size(audio,1));情节(t)、音频)ylabel (“振幅”) subplot(2,1,2) t = linspace(0,size(audio,1)/fs,size(centroid,1));情节(t,质心)包含(“时间(s)”) ylabel (“重心(Hz)”

图中包含2个轴对象。axis对象1包含一个类型为line的对象。Axes对象2包含一个类型为line的对象。

光谱扩散

光谱扩展(spectralSpread)为谱质心附近的标准差[1]:

μ 2 k b 1 b 2 f k - μ 1 2 年代 k k b 1 b 2 年代 k

在哪里

  • f k 以Hz为单位的频率是否对应于bin k

  • 年代 k 光谱值在bin吗 k 。频率谱和功率谱都是常用的。

  • b 1 而且 b 2 是带边,在箱子里,在上面计算光谱扩展。

  • μ 1 是光谱质心。

频谱展宽表示频谱的“瞬时带宽”。它被用来表示一个音调的主导地位。例如,当音调发散时,扩散增加,当音调收敛时,扩散减少。

Fs = 16e3;音频振荡器(audioOscillator)“SampleRate”fs,“NumTones”2,“SamplesPerFrame”, 512,“频率”(2000、100));持续时间= 5;numLoops = floor(duration*fs/tone.SamplesPerFrame);信号= [];i = 1:numLoops signal = [signal;tone()];如果我< numLoops / 2的基调。频率=音调。频率+ [0,50];其他的基调。频率=音调。频率- [0,50];结束结束spread = spectralSpread(信号,fs);次要情节(2,1,1)谱图(信号,圆(fs * 0.05),圆(fs * 0.04), 2048年,fs,“桠溪”) subplot(2,1,2) t = linspace(0,size(signal,1)/fs,size(spread,1));情节(t,传播)包含(“时间(s)”) ylabel (“传播”

图中包含2个轴对象。坐标轴对象1包含一个image类型的对象。Axes对象2包含一个类型为line的对象。

光谱偏态

光谱偏度(spectralSkewness)由三阶矩[1]:

μ 3. k b 1 b 2 f k - μ 1 3. 年代 k μ 2 3. k b 1 b 2 年代 k

在哪里

  • f k 以Hz为单位的频率是否对应于bin k

  • 年代 k 光谱值在bin吗 k 。频率谱和功率谱都是常用的。

  • b 1 而且 b 2 是带边,在箱子里,在上面计算光谱偏度。

  • μ 1 是光谱质心。

  • μ 2 是光谱扩散。

光谱偏度测量的是质心周围的对称性。在语音学中,谱偏斜常被称为光谱倾斜与其他谱矩一起使用,以区分发音的位置[4].对于谐波信号,它表示高谐波和低谐波的相对强度。例如,在四音信号中,当较低的音调为主导时,有一个正的倾斜,而当较高的音调为主导时,有一个负的倾斜。

Fs = 16e3;持续时间= 99;音频振荡器(audioOscillator)“SampleRate”fs,“NumTones”4“SamplesPerFrame”fs,“频率”, 500, 2000, 2500, 4000,“振幅”[0, 0.4, 0.6, 1]);信号= [];I = 1:持续时间信号=[信号;音调()];基调。振幅=音调。振幅+ [0.01,0,0,-0.01];结束偏度= spectralSkewness(信号,fs);T = linspace(0,size(signal,1)/fs,size(skewness,1))/60;次要情节(2,1,1)谱图(信号,圆(fs * 0.05),圆(fs * 0.04),圆(fs * 0.05), fs,“桠溪”“权力”) view([-58 33]) subplot(2,1,2) plot(t,skewness) xlabel(的时间(分钟)) ylabel (“偏斜”

图中包含2个轴对象。坐标轴对象1包含一个曲面类型的对象。Axes对象2包含一个类型为line的对象。

谱峰态

谱峰度(spectralKurtosis)由四阶矩计算[1]:

μ 4 k b 1 b 2 f k - μ 1 4 年代 k μ 2 4 k b 1 b 2 年代 k

在哪里

  • f k 以Hz为单位的频率是否对应于bin k

  • 年代 k 光谱值在bin吗 k 。频率谱和功率谱都是常用的。

  • b 1 而且 b 2 是带边,在箱子里,在上面计算光谱峰度。

  • μ 1 是光谱质心。

  • μ 2 是光谱扩散。

光谱峰度测量光谱在质心周围的平坦度或非高斯性。相反,它用来表示光谱的峰值。例如,当语音信号上的白噪声增加时,峰度降低,表明峰值谱更少。

[audioIn,fs] = audioread(“Counting-16-44p1-mono-15secs.wav”);noiseGenerator = dsp。ColoredNoise (“颜色”“白色”“SamplesPerFrame”大小(audioIn 1));noise = noiseGenerator();噪声=噪声/max(abs(噪声));Ramp = linspace(0,.25,numel(noise))';噪音=噪音*斜坡;audioIn = audioIn + noise;峰度= spectralKurtosis(audioIn,fs);t = linspace(0,size(audioIn,1)/fs,size(audioIn,1));subplot(2,1,1) plot(t,audioIn)“振幅”t = linspace(0,size(audioIn,1)/fs,size(kurtosis,1));Subplot (2,1,2) plot(t,kurtosis) xlabel(“时间(s)”) ylabel (“峰度”

图中包含2个轴对象。axis对象1包含一个类型为line的对象。Axes对象2包含一个类型为line的对象。

谱熵

谱熵(spectralEntropy)测量光谱的峰值[6]:

- k b 1 b 2 年代 k 日志 年代 k 日志 b 2 - b 1

在哪里

  • f k 以Hz为单位的频率是否对应于bin k

  • 年代 k 光谱值在bin吗 k 。频率谱和功率谱都是常用的。

  • b 1 而且 b 2 是带边,在箱子里,在上面计算光谱熵。

频谱熵已成功用于自动语音识别的有声/非有声决策[6].因为熵是无序度的衡量标准,语音区域的熵比无声区域的熵要低。

[audioIn,fs] = audioread(“Counting-16-44p1-mono-15secs.wav”);熵= spectral熵(audioIn,fs);t = linspace(0,size(audioIn,1)/fs,size(audioIn,1));subplot(2,1,1) plot(t,audioIn)“振幅”) t = linspace(0,size(audioIn,1)/fs,size(熵,1));Subplot (2,1,2) plot(t,熵)xlabel(“时间(s)”) ylabel (“熵”

图中包含2个轴对象。axis对象1包含一个类型为line的对象。Axes对象2包含一个类型为line的对象。

频谱熵也被用来区分语音和音乐[7] [8].例如,比较语音、音乐和背景音频文件的熵直方图。

Fs = 8000;[cn] [cn] [cn]“彩虹- 16 - 8 mono - 114 secs.wav”);speech = resample(speech,fs,speech);Speech = Speech ./max(Speech);[音乐,音乐]“rockguitar - 16 - 96立体声- 72 secs.flac”);Music = sum(Music,2)/2;music = resample(music,fs,musicFs);Music = Music ./max(Music);[background,backgroundFs] = audioread(“Ambiance-16-44p1-mono-12secs.wav”);background = resample(background,fs,backgroundFs);Background = Background ./max(Background);语音熵=频谱熵(语音,fs);musicEntropy = spectralEntropy(music,fs);backgroundEntropy = spectralEntropy(background,fs);图h1 =直方图(语音熵);持有h2 =直方图(musicEntropy);h3 =直方图(backgroundEntropy);h1。归一化=“概率”;h2。归一化=“概率”;h3。归一化=“概率”;h1。BinWidth = 0.01;h2。BinWidth = 0.01;h3。BinWidth = 0.01;标题(“谱熵”)传说(“演讲”“音乐”“背景”“位置”“西北”)包含(“熵”) ylabel (“概率”)举行

图中包含一个axes对象。标题为谱熵的轴对象包含3个类型直方图对象。这些对象代表语言,音乐,背景。

光谱平坦

谱平面度(spectralFlatness)测量谱的几何平均值与谱的算术平均值之比[9]:

平面度 k b 1 b 2 年代 k 1 b 2 - b 1 1 b 2 - b 1 k b 1 b 2 年代 k

在哪里

  • 年代 k 光谱值在bin吗 k 。频率谱和功率谱都是常用的。

  • b 1 而且 b 2 是带边,在箱子里,在上面计算光谱平坦度。

光谱平坦度是光谱峰值的指示。较高的谱平坦度表示噪声,较低的谱平坦度表示调性。

[音频,fs] = audioread(“waveguideloopone - 24 - 96立体声- 10 - secs.aif”);Audio = sum(Audio,2)/2;噪音=(2 *兰特(元素个数(音频),1)1)。* linspace(0、0.05、元素个数(音频))';音频=音频+噪音;平坦度= spectralFlatness(音频,fs);Subplot (2,1,1) t = linspace(0,size(audio,1)/fs,size(audio,1));情节(t)、音频)ylabel (“振幅”) subplot(2,1,2) t = linspace(0,size(audio,1)/fs,size(flatness,1));情节(t,平面度)ylabel (“平坦”)包含(“时间(s)”

图中包含2个轴对象。axis对象1包含一个类型为line的对象。Axes对象2包含一个类型为line的对象。

谱平面度也已成功应用于歌声检测[10]和音频场景识别[11].

光谱波峰

谱峰(spectralCrest)测量谱的最大值与谱的算术平均值之比[1]:

佳洁士 马克斯 年代 k ϵ ( b 1 b 2 1 b 2 - b 1 k b 1 b 2 年代 k

在哪里

  • 年代 k 光谱值在bin吗 k 。频率谱和功率谱都是常用的。

  • b 1 而且 b 2 是带边,在箱子里,在上面计算光谱波峰。

光谱波峰是光谱峰值的指示。较高的光谱峰值表明更多的调性,而较低的光谱峰值表明更多的噪声。

[音频,fs] = audioread(“waveguideloopone - 24 - 96立体声- 10 - secs.aif”);Audio = sum(Audio,2)/2;噪音=(2 *兰特(元素个数(音频),1)1)。* linspace(0、0.2、元素个数(音频))';音频=音频+噪音;crest = spectralCrest(音频,fs);Subplot (2,1,1) t = linspace(0,size(audio,1)/fs,size(audio,1));情节(t)、音频)ylabel (“振幅”) subplot(2,1,2) t = linspace(0,size(audio,1)/fs,size(crest,1));情节(t,嵴)ylabel (“佳洁士”)包含(“时间(s)”

图中包含2个轴对象。axis对象1包含一个类型为line的对象。Axes对象2包含一个类型为line的对象。

谱通量

光谱通量(spectralFlux)是光谱随时间变化的量度[12]:

通量 t k b 1 b 2 | 年代 k t - 年代 k t - 1 | p 1 p

在哪里

  • 年代 k 光谱值在bin吗 k 。频率谱和功率谱都是常用的。

  • b 1 而且 b 2 是带边,在箱子里,在上面计算光谱通量。

  • p 是规范类型。

光谱通量普遍用于起始探测[13]及音频分割[14].例如,鼓轨道中的节拍对应高光谱通量。

[音频,fs] = audioread(“FunkyDrums-48-stereo-25secs.mp3”);Audio = sum(Audio,2)/2;通量= spectralFlux(音频,fs);Subplot (2,1,1) t = linspace(0,size(audio,1)/fs,size(audio,1));情节(t)、音频)ylabel (“振幅”) subplot(2,1,2) t = linspace(0,size(audio,1)/fs,size(flux,1));情节(t,通量)ylabel (“通量”)包含(“时间(s)”

图中包含2个轴对象。axis对象1包含一个类型为line的对象。Axes对象2包含一个类型为line的对象。

光谱斜率

光谱斜率(spectralSlope)测量光谱的衰减量[15]:

k b 1 b 2 f k - μ f 年代 k - μ 年代 k b 1 b 2 f k - μ f 2

在哪里

  • f k 以Hz为单位的频率是否对应于bin k

  • μ f 是平均频率。

  • 年代 k 光谱值在bin吗 k 。幅度谱是常用的。

  • μ 年代 为平均谱值。

  • b 1 而且 b 2 是带边,在箱子里,在上面计算光谱斜率。

谱斜率在语音分析中得到了广泛的应用,特别是在说话者应力建模方面[19].坡度与声带的共振特性直接相关,也被应用于说话人识别[21].谱斜率是音色的一个重要方面。谱斜率辨别已被证明发生在儿童早期发育[20.].当低谱峰的能量远大于高谱峰的能量时,谱斜率最为明显。

[au:] [au:]“FemaleSpeech-16-8-mono-3secs.wav”);Female = Female ./max(Female);femaleSlope = spectralSlope(female,femaleFs);t = linspace(0,size(female,1)/femaleFs,size(femaleSlope,1));次要情节(2,1,1)谱图(女,圆(femaleFs * 0.05),圆(femaleFs * 0.04),圆(femaleFs * 0.05), femaleFs,“桠溪”“权力”子情节(2,1,2)情节(t,femaleSlope)标题(“女性演讲者”) ylabel (“坡”)包含(“时间(s)”

图中包含2个轴对象。坐标轴对象1包含一个image类型的对象。标题为Female Speaker的Axes对象2包含一个类型为line的对象。

光谱减少

光谱下降(spectralDecrease)表示频谱的递减量,同时强调较低频率的斜率[1]:

减少 k b 1 + 1 b 2 年代 k - 年代 b 1 k - 1 k b 1 + 1 b 2 年代 k

在哪里

  • 年代 k 光谱值在bin吗 k 。幅度谱是常用的。

  • b 1 而且 b 2 是带边,在箱子里,在上面计算光谱下降。

在语音文献中,谱下降比谱斜率使用得少,但在音乐分析中,它和谱斜率一起被普遍使用。特别是,光谱下降已被证明在仪器识别中表现良好[22].

(吉他,吉他手)“rockguitar - 16 - 44 - p1 -立体声- 72 secs.wav”);吉他=平均值(吉他,2);[鼓声,鼓声]“RockDrums-44p1-stereo-11secs.mp3”);鼓=平均值(鼓,2);guitarreduce = spectralreduce(吉他,guitarFs);drumsreduce = spectralreduce (drums,drumsFs);t1 = linspace(0,size(guitar,1)/guitarFs,size(guitarreduce,1));t2 = linspace(0,size(drums,1)/drumsFs,size(drumsreduce,1));subplot(2,1,1) plot(t1, guitarreduce)“吉他”) ylabel (“减少”轴([0 10 -0.3 0.3])subplot(2,1,2) plot(t2, drumsreduce) title(“鼓”) ylabel (“减少”)包含(“时间(s)”([0 10 -0.3 0.3])

图中包含2个轴对象。标题为Guitar的Axes对象1包含一个类型为line的对象。标题为Drums的Axes对象2包含一个类型为line的对象。

光谱滚落点

光谱滚降点(spectralRolloffPoint)测量音频信号的带宽,方法是确定总能量中某一给定百分比存在的频率仓[12]:

滚边 这样的 k b 1 | 年代 k | κ k b 1 b 2 年代 k

在哪里

  • 年代 k 光谱值在bin吗 k 。频率谱和功率谱都是常用的。

  • b 1 而且 b 2 是带边,在箱子里,在上面计算光谱滚落点。

  • κ 是指定的能量阈值,通常为95%或85%。

被转换为Hz,然后由spectralRolloffPoint

声谱滚落点被用来区分浊音和浊音语音,语音/音乐辨别[12]、音乐类型分类[16],声学场景识别[17,音乐情绪分类[18].例如,观察语音、摇滚吉他、原声吉他和一个原声场景的滚落点的不同均值和方差。

Dur = 5;从每个文件中截取5秒。[语音,fs1] = audioread(“SpeechDFT-16-8-mono-5secs.wav”);Speech = Speech (1:min(end,fs1*dur));[电吉他,fs2] = audioread(“rockguitar - 16 - 44 - p1 -立体声- 72 secs.wav”);electricGuitar =均值(electricGuitar,2);%转换为单声道进行比较。electricGuitar = electricGuitar(1:fs2*dur);[auditic吉他,f3] = audioread(“SoftGuitar-44p1_mono-10mins.ogg”);原声吉他=原声吉他(1:fs3*dur);[auditicscene,fs4] = audioread(“MainStreetOne-16-16-mono-12secs.wav”);auditicscene = auditicscene (1:fs4*dur);r1 = spectralRolloffPoint(speech,fs1);r2 = spectralRolloffPoint(electricGuitar,fs2);r3 = spectralRolloffPoint(auditicguitar,fs3);r4 = spectralRolloffPoint(auditicscene,fs4);T1 = linspace(0,size(speech,1)/fs1,size(r1,1));t2 = linspace(0,size(electricGuitar,1)/fs2,size(r2,1));t3 = linspace(0,size(auditicguitar,1)/fs3,size(r3,1));t4 = linspace(0,size(auditicscene,1)/fs4,size(r4,1)); figure plot(t1,r1) title(“演讲”) ylabel (“滚落点(Hz)”)包含(“时间(s)”)轴([0 5 0 4000])

图中包含一个axes对象。标题为Speech的axis对象包含一个类型为line的对象。

图(t2,r2)“摇滚吉他”) ylabel (“滚落点(Hz)”)包含(“时间(s)”)轴([0 5 0 4000])

图中包含一个axes对象。标题为Rock Guitar的axes对象包含一个类型为line的对象。

图图(t3,r3)木吉他的) ylabel (“滚落点(Hz)”)包含(“时间(s)”)轴([0 5 0 4000])

图中包含一个axes对象。标题为“声学吉他”的axes对象包含一个类型为line的对象。

图(t4,r4)标题(“声场景”) ylabel (“滚落点(Hz)”)包含(“时间(s)”)轴([0 5 0 4000])

图中包含一个axes对象。标题为Acoustic Scene的axis对象包含一个类型为line的对象。

参考文献

彼得斯,G。CUIDADO项目中用于声音描述(相似性和分类)的大量音频特征集。技术报告;IRCAM:法国巴黎,2004年。

[2]格雷,约翰M.和约翰W.戈登。"谱修改对音色的知觉影响"美国声学学会杂志。1978年第5期,第63卷,第1493-1500页。

蕾米,埃里克,还有查尔斯·e·凯恩斯。语音学和音韵学中的片段。霍博肯,新泽西州:John Wiley & Sons Inc., 2015。

[4] Jongman, Allard, et al.《英语摩擦音的声学特征》。美国声学学会杂志。2000年第3期,第108卷第1252-1263页。

[5]张雪峰,张强,“基于谱峭度的稳健语音活动检测特征设计”。第一届教育技术与计算机科学国际研讨会, 2009, pp. 269-272。

米斯拉,H., S. Ikbal, H. Bourlard, H. Hermansky。基于谱熵的鲁棒ASR特征。2004年IEEE声学、语音和信号处理国际会议

Pikrakis, T. Giannakopoulos和S. Theodoridis。一种高效的无线电录音语音/音乐鉴别器音乐信息检索及相关活动国际会议, 2006年。

[8] Pikrakis, A.等,“基于动态规划和贝叶斯网络的无线电录音语音/音乐鉴别器”。IEEE多媒体汇刊。2008年第5期第10卷第846-857页。

[9] Johnston, j.d.,“使用感知噪声标准的音频信号转换编码”。IEEE通讯选定领域杂志。1988年第6卷第2期,第314-323页。

[10] Lehner, Bernhard, et al.《关于减少歌唱声音检测中的假阳性》。2014年IEEE声学、语音和信号处理国际会议, 2014年。

[11] Y. Petetin, C. Laroche和A. Mayoue,“音频场景识别的深度神经网络,”2015第23届欧洲信号处理会议(EUSIPCO)2015.

[12]谢勒,E.和M.斯兰尼。鲁棒多特征语音/音乐鉴别器的构建与评估。1997年IEEE声学、语音和信号处理国际会议,1997

[13] S. Dixon,《重新审视发病检测》。数字音频效果国际会议。第120卷,2006年,第133-137页。

[14]查内塔基斯,G.和P.库克。用于浏览和注释的多功能音频分割。1999年IEEE关于信号处理在音频和声学中的应用研讨会论文集,1999.

[15]亚历山大·莱赫。音频内容分析在信号处理和音乐信息学中的应用概论。皮斯卡塔韦,新泽西州:IEEE出版社,2012。

[16]李,涛,和M. Ogihara。《音乐体裁分类与分类学》我声学、语音和信号处理国际会议,2005

[17]埃罗宁,a.j., v.t. Peltonen, j.t. Tuomi, a.p. Klapuri, S. Fagerlund, T. Sorsa, G. Lorho, J. Huopaniemi。“基于音频的上下文识别。”IEEE音频,语音和语言处理汇刊。2006年第1期第14卷第321-329页。

[18]任佳敏,吴明柱,张志成罗杰。基于音色和调制特征的音乐情绪自动分类IEEE情感计算汇刊。2015年第3期,第236-246页。

[19]汉森,约翰·h·L,桑杰·帕蒂尔。压力下的语音:分析、建模和识别。计算机科学课堂讲稿。Vol. 4343, 2007, pp. 108-137。

[20]曾丽华,李淑珍,劳蕾尔。婴儿期的光谱斜率辨别:对社会重要音色的敏感性婴儿行为与发展。2002年第2期,第25卷,第183-194页。

[21]默蒂,H.a., F.波菲斯,L.p.赫克,M.温特劳布。电话信道上健壮的与文本无关的说话人识别。IEEE语音与音频处理汇刊。1999年第5期,第554-568页。

[22] Essid, S. G. Richard和B. David。基于自动分类法的复调音乐乐器识别IEEE音频,语音和语言处理汇刊。2006年第1期,第14卷,第68-80页。