資源簡介
語音多字的端點檢測,找出清濁分界,并以線的形式標出界線
代碼片段和文件信息
close?all
clear
clc
x=wavread(‘D:\文檔\語音信號處理\端點檢測\man.wav‘);%x是列向量
x=x-mean(x);
%幅度歸一化到[-11]
x?=?double(x);
x?=?x?/?max(abs(x));
begainvoice=[];
endvoice=[];
%常數設置
frameLen?=?160;
frameInc?=?40;
amp1?=?10;
amp2?=?3;
zcr1?=50;
zcr2?=?8;
maxsilence?=?4;?%?10*10ms?=?30ms
minlen?=?10;?%?10*10ms?=?100ms
status?=?0;
count?=?0;
silence?=?0;
%計算過零率
tmp1?=?enframe(x(1:length(x)-1)?frameLen?frameInc);
tmp2?=?enframe(x(2:?length(x))??frameLen?frameInc);
signs?=?(tmp1.*tmp2)<0;
diffs?=?abs(tmp1?-tmp2)>0.02;
zcr?=?sum(signs.*diffs?2);
%計算短時能量
amp?=?sum(abs(enframe(x?frameLen?frameInc))?2);
%調整能量門限
amp1?=?min(amp1?max(amp)/4);
amp2?=?min(amp2?max(amp)/8);
x=x(1:length(zcr)*frameInc);
%開始端點檢測
x1?=?0;
x2?=?0;
for?n=1:length(zcr)
????switch?status
- 上一篇:網上選課系統UML模型
- 下一篇:ieee33節點仿真及潮流計算.zip
評論
共有 條評論