基于Matlab编写的语音端点检测(2)

2018-11-17 20:20

限,一个是较低的门限数值较小,对信号的 变化比较敏感,很容易超过;另一个是比较高的门限,数值较大。低门限被超过未必是语音 的开始,有可能是很短的噪声引起的,高门限被超过并且接下来的自定义时间段内的语音超

首先,可根据浊语音情况下短时平均幅度M的概率密度函数P(M/V)确定一个阈值参数MH, MH的值定得比较高。当一帧输入信号的M值超过MH时,就可以十分肯定该帧语音信号不是无声,而有相当大的可能性是浊音由N1’向前和N2’向后继续用短时过零率Z进行搜索。根据无声情况下短时过零率Z的均值,设置一个参数Z0,如果由N1’向前搜索时Z始终大于Z0的3倍,则认为这些信号仍属于语音段,直至Z突然下降到低于3Z0值时,这时可以确定语音的精确起点(为了保证可靠,由N1’ 向前搜索时间不超过25ms)。对终点做同样的处理。采取这一算法的原因在于, N1’以前可能是一段清辅音段(如f,s),它的能量相当弱,依靠能量不可能把他们与无声段区别开,而他们的过零率明显高于无声,因而能用这个参数来精确的判断二者的分割点,也就是语音真正的起点。

四、实验步骤及分步结果 1.界面设计

2.程序设计 (1).

①打开语音文件

function openbutton_Callback(hObject, eventdata, handles) clc;

axes(handles.wavaxes);cla reset;box

on;set(gca,'XTickLabel',[],'YTickLabel',[]); axes(handles.Energeaxes);cla reset;box on;set(gca,'XTickLabel',[],'YTickLabel',[]); axes(handles.Zerorateaxes);cla reset;box on;set(gca,'XTickLabel',[],'YTickLabel',[]); set(handles.T1edit,'string',0); set(handles.T2edit,'string',0); set(handles.T3edit,'string',0); %′ò?a′y′|àíμ?ó?ò????t

[filename,pathname]=uigetfile({'*.wav','All Wav Files'},'????ó?ò????t'); if filename == 0

return;%è?1???óD????D?μ????t£??ò·μ?? end

file=fullfile(pathname,filename);%???t??

[signal,fs,bit]=wavread(file);%?áè?????μ?ó?ò?êy?Y axes(handles.wavaxes) plot(signal)%??ê?2¨D?

handles.wavsignal=signal; %update handles structure guidata(hObject,handles);

②预处理

预处理程序

function prebutton_Callback(hObject, eventdata, handles) % hObject handle to prebutton (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) signal=handles.wavsignal;

signal=filter([1,-0.9375],1,signal);%?¤?ó????2¨ axes(handles.wavaxes) plot(signal)%??ê??¤?ó??oó2¨D? title('?¤?ó????2¨oóó?ò?2¨D?'); handles.wavsignal=signal; framelength=256;%′°3¤£?

framenumber=fix(length(signal)/framelength);%×ü??êy for i=1:framenumber;

framesignal(i,1:framelength)=signal((i-1)*framelength+1:i*framelength

);%·???′|àí end

handles.framesignal=framesignal; %Update handles structure guidata(hObject,handles);

③短时能量

短时能量

function Energebutton_Callback(hObject, eventdata, handles) % hObject handle to Energebutton (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) framesignal=handles.framesignal;

framenumber=size(framesignal,1);%??μ?êy?Yè?êy for i=1:framenumber; E(i)=0;

E(i)=sum(framesignal(i,:).^2);%?????ìê±?üá? end

axes(handles.Energeaxes) %c=[1 2 3 4 5 6 4 3 3 3 3]; plot(E);%???üá?????ê??ú?üá?′°?ú handles.E=E;

%Update handles structure


基于Matlab编写的语音端点检测(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:保温

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: