void CWaveFileDlg::OnDetect() 
{
char ch[40];
char wave[20];
    GetDlgItemText(IDC_WAVEPATh,wave,20);
    GetDlgItemText(IDC_DETECTPATH,ch,40);
Speech speech;
speech.DetectPoint(ch,wave);
// TODO: Add your control notification handler code here

}
void Speech::DetectPoint(char ch[],char wave[])
{
short *Data;
int DataNum=0;
int *Frame_num;
int *Win;
    int StartPoint=0;
    int EndPoint=0;//对b1.wav Eh=150,El=30;Zh=200,Zl=40
float Eh=150,El=30;
int Zh=200,Zl=40;
int Flag=0;
Frame_num=new int[1];
Win=new int[1];
Data=new short[DataNum];
DataNum=TellFileLength(wave);
ReadFiles(Data,DataNum,ch);
    Window_Div(Frame_num,Win,DataNum,wave); FILE *fp=fopen("C:\\WaveFile\\DtectFile.txt","w");
    for(int i=0;i<*Frame_num;i++)
  {
  if(Flag==0)//0为静音段的标记
  {
  if((AvgEneger(Data+i*((*Win)/2),*Win)>El)||AvgEneger(Data+i*((*Win)/2),*Win)>Zl)
  {
  StartPoint=i;
  Flag=1;
      continue;
  }
  }
 if(Flag==1)//判断是否处在过度段,1为过度段的标记
 {
 if(AvgEneger(Data+i*((*Win)/2),*Win)<El&&AvgZeroRate(Data+i*((*Win)/2),*Win)<Zl)
 {
 Flag=0;
 StartPoint=0;
 continue;
 }
 else if((AvgEneger(Data+i*((*Win)/2),*Win)>Eh)||(AvgZeroRate(Data+i*((*Win)/2),*Win)>Zh))//判断是否处在语音段,2为语音段的标记
 {
 Flag=2;
 continue;
 }
 }
 if(Flag==2)
 {
 if(AvgEneger(Data+i*((*Win)/2),*Win)<El&&AvgZeroRate(Data+i*((*Win)/2),*Win)<Zl)
 {
 Flag=3;
 EndPoint=i;
 if((EndPoint-StartPoint<10)&&(EndPoint<*Frame_num-5))//如果语音段太短,则认为是噪声舍弃重新寻找开始与结束点
 {
 Flag=0;
 StartPoint=0;
 EndPoint=0;
 }
 else
 {
 fprintf(fp,"%d,%d\n",StartPoint,EndPoint);
//  for(int k=(StartPoint+1)*(*Win/2);k<=EndPoint*(*Win/2);k++)
//  fprintf(fp,"%d\n",*(Data+k));
 if(EndPoint<*Frame_num-5)
 {
 Flag=0;
 StartPoint=0;
 EndPoint=0;
 }
 else break;
 }
 }
 }
  }
delete Frame_num;
delete Win;
delete Data;
Frame_num=NULL;
Win=NULL;
Data=NULL;
    fflush(fp);
fp=NULL;
}