有很多小问题,可能因为基础不扎实,所以还请大侠们赐教。
1.语音分析之前要进行信号的预处理,包括A/D,预加重,分帧加窗,端点检测等。其中保存为.WAV格式就已经经过了采样和量化,即进行了A/D转换。预加重采用s=filter([1 -0.9375],1,x),分帧采用voicebox工具箱中的分帧函数enframe,y=enframe(s,hamming(framelen),framelnc ),端点检测是采用短时能量和短时过零率的双门限法,代码如下:
[x,fs,nbits]=wavread('aaaa.wav');
x=double(x);
x=x/max(abs(x)); %幅度归一化到[-1,1]
%参数设置
framelen=256; %帧长
framelnc=128; %帧移
amp1=10; %初始短时能量高门限,这是一个经验值
amp2=2; %初始短时能量低门限
zcr1=10; %初始过零率高门限
zcr2=5; %初始过零率低门限
maxsilence=6; %3*10ms=30ms语音段中允许的最大静音长度。如果语音段中的静音帧数未超过此值,则认为语音段还没结束。
%如果超过了该值,则对语音段长度count进行判断,若count
%跳到静音状态0;若count>minlen,则认为语音段结束。
minlen=15; %15*10ms=150ms语音段最短长度