資源簡介
語音識別端點檢測Matlab代碼。
在復雜的環境下,從信號語音信號中分辨出語音信號和非語音信號,是語音處理很重要一個環節。語音端點檢測是從一段輸入語音信號中確定語音的起始點和結束點。正確的端點檢測可以減少不必要的計算量,提高語音識別的精度和減少識別時間。通常采用短時能量和短時過零率相結合的方法來尋找語音的開始幀和結束幀。
代碼片段和文件信息
function?[x1x2]?=?vad(x)
%幅度歸一化到[-11]
x?=?double(x);
x?=?x?/?max(abs(x));
%常數設置
frameLen?=?240;%幀長為240點
frameInc?=?80;%幀移為80點
amp1?=?10;%初始短時能量高門限
amp2?=?2;%初始短時能量低門限
zcr1?=?10;%初始短時過零率高門限
zcr2?=?5;%初始短時過零率低門限
maxsilence?=?8;?%?8*10ms?=?80ms
%語音段中允許的最大靜音長度,如果語音段中的靜音幀數未超過此值,則認為語音還沒結束;如果超過了該值,則對語音段長度count進行判斷,若countminlen,則認為語音段結束;
minlen?=?15;?%?15*10ms?=?150ms
%語音段的最短長度,若語音段長度小于此值,則認為其為一段噪音
status?=?0;?%初始狀態為靜音狀態
count?=?0;?%初始語音段長度為0
silence?=?0;?%初始靜音段長度為0
%計算過零率
tmp1?=?enframe(x(1:end-1)?frameLen?frameInc);
tmp2?=?enframe(x(2:end)??frameLen?frameInc);
signs?=?(tmp1.*tmp2)<0;
diffs?=?(tmp1?-tmp2)>0.02;
zcr?=?sum(signs.*diffs?2);
%計算短時能量
%amp?=?sum(abs(enframe(filter([1?-0.9375]?1?x)?frameLen?frameInc))?2);
a
- 上一篇:SINS卡曼濾波初始對準
- 下一篇:同步發電機的暫態仿真
評論
共有 條評論