• 大小: 345KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-11
  • 语言: C/C++
  • 标签: DTW  孤立词  

资源简介

基于DTW的孤立词语音识别代码,在VC6下编译可用

资源截图

代码片段和文件信息

#include “dtw.h“

double distance[DTWMAXNUM][DTWMAXNUM]; /*保存距离*/
//double dtwpath[DTWMAXNUM][DTWMAXNUM]; /*保存路径*/
#define SQUARE(x) x*x
/*****************************************************************************/
/* DTWDistance,求两个数组之间的匹配距离
/* AB分别为第一第二个数组,I,J为其数组长度,r为匹配窗口的大小

/* r的大小一般取为数组长度的1/10到1/30
/* 返回两个数组之间的匹配距离如果返回-1.0,表明数组长度太大了
/*****************************************************************************/
double DTWDistanceFun(double *Aint Idouble *Bint Jint r)
{
int ij;
double dist;
int istartimax;
int r2=r+ABS(I-J);/*匹配距离*/
double g1g2g3;
int pathsig=1;/*路径的标志*/

/*检查参数的有效性*/
if(I>DTWMAXNUM||J>DTWMAXNUM){
//printf(“Too big number\n“);
return -1.0;
}

/*进行一些必要的初始化*/
for(i=0;i for(j=0;j //dtwpath[i][j]=0;
distance[i][j]=DTWVERYBIG;
}
}

/*动态规划求最小距离*/
/*这里我采用的路径是 -------
                          . |
                        .   |
                      .     |
                    .       |
 */
distance[0][0]=(double)2*ABS(A[0]-B[0]);
for(i=1;i<=r2;i++){
distance[i][0]=distance[i-1][0]+ABS(A[i]-B[0]);
}
for(j=1;j<=r2;j++){
distance[0][j]=distance[0][j-1]+ABS(A[0]-B[j]);
}

for(j=1;j istart=j-r2;
if(j<=r2)
istart=1;
imax=j+r2;
if(imax>=I)
imax=I-1;

for(i=istart;i<=imax;i++){
g1=distance[i-1][j]+ABS(A[i]-B[j]);
g2=distance[i-1][j-1]+2*ABS(A[i]-B[j]);
g3=distance[i][j-1]+ABS(A[i]-B[j]);
g2=MIN(g1g2);
g3=MIN(g2g3);
distance[i][j]=g3;
}
}

dist=distance[I-1][J-1]/((double)(I+J));
return dist;
}/*end DTWDistance*/


///method   2////////////////////////////////////////////////////////////////////


/*****************************************************************************/
/* VectorDistance用于求两个向量之间的距离,欧氏距离
/* A和B是待求距离的两个向量
/*****************************************************************************/
double VectorDistance(double *vec1double *vec2int dim)
{
double total = 0.0;
double temp;
int i;



for(i = 0; i < dim; i++)
{
temp = vec1[i] - vec2[i];
total += SQUARE(temp);
}
total /= dim;
total = (double)sqrt(total);
return total;
}

double VDTWDistanceFun(double *Aint Idouble *Bint Jint rint dim)
{
int ij;
double dist;
int istartimax;
double g1g2g3;
int pathsig=1;/*路径的标志*/
int r2=r+ABS(I-J);/*匹配距离*/

if((r2>I-1)||(r2>J-1)){
return  2.0;//return -1.0;
}

/*检查参数的有效性*/
if(I>DTWMAXNUM||J>DTWMAXNUM){
//printf(“Too big number\n“);
return -1.0;
}

/*进行一些必要的初始化*/
for(i=0;i for(j=0;j //dtwpath[i][j]=0;
distance[i][j]=DTWVERYBIG;
}
}

/*动态规划求最小距离*/
/*这里我采用的路径是 -------
                          . |
                        .   |
                      .     |
                    .       |
 有可能有更好的前进路径,我没有细加论证,不过算法的数量级是一样的
 */
distance[0][0]=(double)2*VectorDistance(&A[0]&B[0]dim);
for(i=1;i<=r2;i++){
dis

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2260  2008-07-23 20:22  CVadMfccDtw\common.h

     文件       4862  2008-05-16 14:57  CVadMfccDtw\CVadMfccDtw.dsp

     文件        530  2008-05-28 10:35  CVadMfccDtw\CVadMfccDtw.dsw

     文件      58368  2008-07-23 20:22  CVadMfccDtw\CVadMfccDtw.ncb

     文件      50688  2008-07-23 20:22  CVadMfccDtw\CVadMfccDtw.opt

     文件        256  2008-07-23 20:10  CVadMfccDtw\CVadMfccDtw.plg

     文件       2560  2008-06-07 22:57  CVadMfccDtw\CVadMfccDtw.suo

     文件       7046  2008-06-07 22:56  CVadMfccDtw\CVadMfccDtw.vcproj

     文件       1427  2008-06-07 22:56  CVadMfccDtw\CVadMfccDtw.vcproj.8164481424F346B.Administrator.user

     文件       3907  2008-05-19 23:07  CVadMfccDtw\dtw.c

     文件        420  2008-05-19 23:27  CVadMfccDtw\dtw.h

     文件        880  2007-11-14 14:13  CVadMfccDtw\Init.c

     文件        172  2007-11-12 17:12  CVadMfccDtw\Init.h

     文件      15418  2008-05-29 13:49  CVadMfccDtw\ku\1.wav

     文件       8464  2008-05-28 10:53  CVadMfccDtw\ku\b.wav

     文件      20804  2008-05-19 23:11  CVadMfccDtw\ku\beijiaoda.wav

     文件       9826  2008-05-19 15:20  CVadMfccDtw\ku\beijing.wav

     文件       9642  2008-05-20 15:32  CVadMfccDtw\ku\china.wav

     文件      11494  2008-05-20 15:42  CVadMfccDtw\ku\computer.wav

     文件      24718  2008-05-19 23:28  CVadMfccDtw\ku\moai.wav

     文件      10914  2008-05-20 15:31  CVadMfccDtw\ku\M_china.wav

     文件      10560  2008-05-20 15:42  CVadMfccDtw\ku\M_computer.wav

     文件      11904  2008-05-20 15:33  CVadMfccDtw\ku\M_shanghai.wav

     文件      10698  2008-05-20 15:35  CVadMfccDtw\ku\M_xian.wav

     文件      26920  2008-05-20 15:27  CVadMfccDtw\ku\M_zhonghua.wav

     文件      65868  2008-05-20 15:42  CVadMfccDtw\ku\para.dat

     文件       8494  2008-05-20 15:40  CVadMfccDtw\ku\shanghai.wav

     文件      25018  2008-05-28 11:01  CVadMfccDtw\ku\w.wav

     文件      10386  2008-05-20 15:35  CVadMfccDtw\ku\xian.wav

     文件      18064  2008-05-19 23:13  CVadMfccDtw\ku\yuyin.wav

............此处省略23个文件信息

评论

共有 条评论