再举一例,图2
代码在这里,仅仅修改几个参数而已。频率为100,500,800的三个正弦波,采样为10k,基音周期不理想,低于直接FFT
nt=4000;
fs=10000;
t=(0:nt-1)*1/fs;
f1=100;
f2=500;
f3=800;
x=0.6*sin(2*pi*f1*t)+0.8*sin(2*pi*f2*t)+1.2*sin(2*pi*f3*t);
x=x-mean(x); % 消去直流分量
x=x/max(abs(x)); % 幅值归一化
wlen=320; inc=80; % 分帧的帧长和帧移
overlap=wlen-inc; % 帧之间的重叠部分
T1=0.05; % 设置基音端点检测的参数
y = enframe(x,wlen,inc)'; % 分帧
fn = size(y,2); % 取得帧数
[voiceseg,vosl,SF,Ef]=pitch_vad1(y,fn,T1);
frameTime = frame2time(fn, wlen, inc, fs); % 计算各帧对应的时间坐标
lmin=fix(fs/1000); % 基音周期的最小值