失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 音频信号特征提取(1):短时特征之短时能量 短时功率 短时过零率

音频信号特征提取(1):短时特征之短时能量 短时功率 短时过零率

时间:2020-04-19 16:37:30

相关推荐

音频信号特征提取(1):短时特征之短时能量 短时功率 短时过零率

特征提取(Feature Exaction)的重要性,就不用多说了。

对于音频信号,按时间分辨率、按局部or全局的观念、持续时间长短,或者爱怎么讲怎么讲,特征可分为长期(long-term)、中期(mid-term)、短期(short-term),也可以叫短时特征。术语翻译不统一,我也不专业。知道英文术语就好。

短时能量、功率是有点瞬时功率的概念,但又没有那么“瞬时”。大概是按帧在做计算。

短时功率在计算的时候,把每一帧的能量还要处理该帧的长度,量纲上等于[Watt]。

有时候,要把线性尺度的短时能量和短时功率换算成对数尺度,分贝(dB),还要对最大值进行归一化,换算成相对强度,让最大值为0dB。

短时过零率(short-term zero corss rate,st-ZCR),大概是从时域上描述信号频率吧,也是按帧计算。声母的ZCR高一些,韵母的要低一些。噪声的话,不太确定了。大概好像要是比韵母高。和声母,我还不太清楚。

大致的代码如下了。

短时能量。

function E = get_st_energy( x,fs,wlen_time,step_time,win_type,energy_unit )%function zcr = get_st_energy( x,fs,wlen_time,step_time,win_type,energy_unit )% 获取短时能量(没有除以帧长,所以不是计算的功率)。% 输入参数% x:语音信号 --> 单声道% fs:采样速率% wlen_time:窗口时间(s)% step_time:步进时间(s)% win_type:'hamming','hanning',...,默认'hamming'% energy_unit:'dB',以归一化的能量显示 (单位:dB)。否则是线性刻度。% 返回参数% E:短时能量(横坐标是帧序号)% 作者:qcy% 版本:v1.0% 版本说明:计算短时能量。% 如果分帧时,不能整除,则抛弃最后一帧,不予以计算% 时间:10月31日21:21:23wlen = round(wlen_time * fs);nstep = round(step_time * fs);if nargin < 5win = hamming(wlen);elseif nargin == 5if strcmp(win_type, 'hamming')win = hamming(wlen);elseif strcmp(win_type, 'hanning')win = hanning(wlen);elsewin = hamming(wlen);endelsewin = hamming(wlen);endnFrames = floor((length(x) - wlen)/nstep) + 1; % 总帧数E = [];for k = 1:nFramesidx = (k-1) * nstep + (1:wlen);x_sub = x(idx) .* win;E(k) = sum(x_sub.^2); end% 是否需要化成dBif nargin == 6if strcmp(energy_unit, 'dB') E = 10*log10(E/max(E)+eps);endendend

短时过零率。

function zcr = get_st_zcr( x,fs,wlen_time,step_time,win_type )%function zcr = get_st_zcr(x,fs,wlen_time,step_time,win_type )% 获取短时过零率。% 输入参数% x:语音信号 --> 单声道% fs:采样速率% wlen_time:窗口时间(s)% step_time:步进时间(s)% win_type:'hamming','hanning',...,默认'hamming'% 返回参数% zcr:短时过零率(横坐标是帧序号)%% 作者:qcy% 版本:v1.0% 版本说明:计算短时过零率。% 如果分帧时,不能整除,则抛弃最后一帧,不予以计算% 时间:10月31日21:08:22if(min(size(x))>1) % 如果不是单声道% ...endwlen = round(wlen_time * fs);nstep = round(step_time * fs);if nargin < 5win = hamming(wlen);elseif narmin == 5if strcmp(win_type, 'hamming')win = hamming(wlen);elseif strcmp(win_type, 'hanning')win = hanning(wlen);elsewin = hamming(wlen);endelsewin = hamming(wlen);endnFrames = floor((length(x) - wlen)/nstep) + 1; % 总帧数zcr = [];for k = 1:nFramesidx = (k-1) * nstep + (1:wlen);x_sub = x(idx) .* win;x_sub1 = x_sub(1:end-1);x_sub2 = x_sub(2:end);zcr(k) = sum(abs(sign(x_sub1) - sign(x_sub2))) / 2 / length(x_sub1); endend

以后,会把这两个特征用于语音端点检测中。

比如得到下面这张图。

如果觉得《音频信号特征提取(1):短时特征之短时能量 短时功率 短时过零率》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。