Mercurial > hg > emotion-detection-top-level
annotate Code/Descriptors/Matlab/MPEG7/FromWeb/VoiceSauce/func_GetEnergy.m @ 4:92ca03a8fa99 tip
Update to ICASSP 2013 benchmark
author | Dawn Black |
---|---|
date | Wed, 13 Feb 2013 11:02:39 +0000 |
parents | |
children |
rev | line source |
---|---|
Dawn@4 | 1 function E = func_GetEnergy(y, F0, Fs, variables) |
Dawn@4 | 2 % E = func_GetEnergy(y, F0, Fs, variables) |
Dawn@4 | 3 % Input: y, Fs - from wavread |
Dawn@4 | 4 % F0 - vector of fundamental frequencies |
Dawn@4 | 5 % variables - global settings |
Dawn@4 | 6 % Output: Energy vector |
Dawn@4 | 7 % Notes: Calculates the energy, normalized for F0. This is done by using a |
Dawn@4 | 8 % variable length window consisting of 5 pitch periods, according to the F0 |
Dawn@4 | 9 % at a particular point in time. |
Dawn@4 | 10 % |
Dawn@4 | 11 % Author: Yen-Liang Shue, Speech Processing and Auditory Perception Laboratory, UCLA |
Dawn@4 | 12 % Copyright UCLA SPAPL 2009 |
Dawn@4 | 13 |
Dawn@4 | 14 N_periods = variables.Nperiods_EC; |
Dawn@4 | 15 sampleshift = (Fs / 1000 * variables.frameshift); |
Dawn@4 | 16 |
Dawn@4 | 17 E = zeros(length(F0), 1) * NaN; |
Dawn@4 | 18 |
Dawn@4 | 19 for k=1:length(F0) |
Dawn@4 | 20 ks = round(k * sampleshift); |
Dawn@4 | 21 |
Dawn@4 | 22 if (ks <= 0 || ks > length(y)) |
Dawn@4 | 23 continue; |
Dawn@4 | 24 end |
Dawn@4 | 25 |
Dawn@4 | 26 F0_curr = F0(k); |
Dawn@4 | 27 |
Dawn@4 | 28 if (isnan(F0_curr)) |
Dawn@4 | 29 continue; |
Dawn@4 | 30 end |
Dawn@4 | 31 |
Dawn@4 | 32 N0_curr = Fs/F0_curr; |
Dawn@4 | 33 |
Dawn@4 | 34 ystart = round(ks - N_periods/2 * N0_curr); |
Dawn@4 | 35 yend = round(ks + N_periods/2 * N0_curr) - 1; |
Dawn@4 | 36 |
Dawn@4 | 37 if (ystart <= 0) |
Dawn@4 | 38 continue; |
Dawn@4 | 39 end |
Dawn@4 | 40 |
Dawn@4 | 41 if (yend > length(y)) |
Dawn@4 | 42 continue; |
Dawn@4 | 43 end |
Dawn@4 | 44 |
Dawn@4 | 45 yseg = y(ystart:yend); |
Dawn@4 | 46 |
Dawn@4 | 47 E(k) = sum(yseg .^ 2); |
Dawn@4 | 48 |
Dawn@4 | 49 end |
Dawn@4 | 50 |