Mercurial > hg > emotion-detection-top-level
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Code/Descriptors/Matlab/MPEG7/FromWeb/VoiceSauce/func_GetEnergy.m Wed Feb 13 11:02:39 2013 +0000 @@ -0,0 +1,50 @@ +function E = func_GetEnergy(y, F0, Fs, variables) +% E = func_GetEnergy(y, F0, Fs, variables) +% Input: y, Fs - from wavread +% F0 - vector of fundamental frequencies +% variables - global settings +% Output: Energy vector +% Notes: Calculates the energy, normalized for F0. This is done by using a +% variable length window consisting of 5 pitch periods, according to the F0 +% at a particular point in time. +% +% Author: Yen-Liang Shue, Speech Processing and Auditory Perception Laboratory, UCLA +% Copyright UCLA SPAPL 2009 + +N_periods = variables.Nperiods_EC; +sampleshift = (Fs / 1000 * variables.frameshift); + +E = zeros(length(F0), 1) * NaN; + +for k=1:length(F0) + ks = round(k * sampleshift); + + if (ks <= 0 || ks > length(y)) + continue; + end + + F0_curr = F0(k); + + if (isnan(F0_curr)) + continue; + end + + N0_curr = Fs/F0_curr; + + ystart = round(ks - N_periods/2 * N0_curr); + yend = round(ks + N_periods/2 * N0_curr) - 1; + + if (ystart <= 0) + continue; + end + + if (yend > length(y)) + continue; + end + + yseg = y(ystart:yend); + + E(k) = sum(yseg .^ 2); + +end +