过零率(Zero Crossing Rate)是在每个音框中,音讯通过零点的次数,具有如下特性:
1. 一般而言,杂讯的过零大于气音的过零率,而气音的过零率又大于有声音的过零率
2. 通常在断点侦测,估测气音的起始位置和结束位置
3. 可用来预估信号的基频,但很容易出错,所以必须先进行前处理
以下显示如何计算过零率tamia
范例 1输入:
clo all
waveFile='test.wav';
frameSize=256;
overlap=0;
[y, fs, nbits]=wavread(waveFile);
framedY=buffer(y, frameSize, overlap);
zcr1=sum(framedY(1:end-1, :).*framedY(2:end, :)<=0);
zcr2=sum(abs(diff(framedY>0)));
time=(1:length(y))/fs;
frameNum=size(framedY, 2);
frameTime=((0:frameNum-1)*(frameSize-overlap)+0.5*frameSize)/fs;
subplot(2,1,1);
plot(time, y);
title(waveFile);
用发展的眼光看中国
t(gca, 'xlim', [0, length(y)/fs]);
subplot(2,1,2);
plot(frameTime, zcr1, '.-', frameTime, zcr2, '.-');
legend('zcr1', 'zcr2');
t(gca, 'xlim', [0, length(y)/fs]);
title('过零率');
输出图形: consultant
pricetag
在下面这个范例中可以同时显示音量和过零率
范例2 输入
% 显示音量及过零率
recordViaMic=0; % 若要自行录音,将这个值改为 1
% 获取音频数据
if recordViaMic, % 自行录音
fs=16000; % 取样频率
duration=3; % 录音时间
waveFile='test.wav'; %音频文件名称
dataType='uint8'; % 解析度 8 bits/sample
nbits=8;
% 录音
fprintf('按任意键后开始 %g 秒录音:', duration); pau
fprintf('录音中...');
y=wavrecord(duration*fs, dataType);
fprintf('录音结束\n');
el % 读取音频文件
希望你幸福歌词waveFile='test.wav';
[y, fs, nbits]=wavread(waveFile);
y=uint8(y*(2^nbits)/2+2^nbits/2); %恢复到原先档案所记载的unit8整数值
end
% 绘制音频的时域数据
y=double(y); % 转成 double型文件
y=y-mean(y); % 零点校正
sampleNum=length(y);
time=(1:sampleNum)/fs;
figure;
subplot(4,1,1);apologize什么意思
traci binghamplot(time, y);
ylabel('Amplitude');
title(waveFile);
axis([min(time), max(time), -2^nbits/2, 2^nbits/2]);
% 音框设置
夏天英文frameSize=256;
overlap=84;
frameRate=fs/(frameSize-overlap);
framedY=buffer(y, frameSize, overlap);con是什么意思
frameNum=size(framedY, 2);
%计算音量
intensity=10*log10(mean(framedY.^2));
frameTime=(1:frameNum)*(frameSize-overlap)/fs;
subplot(4,1,2);
plot(frameTime, intensity);
economically