• 大小: 10KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-28
  • 语言: C/C++
  • 标签:

资源简介

基于GMM的说话人识别(C代码),其中包括了GMM.C和MFCC.C,以及它们的头文件。

资源截图

代码片段和文件信息

/** @file
********************************************************************************

模块名: 高斯混合模型过程
文件名: gmm.c
相关文件: gmm.h
文件实现功能: 高斯混合模型过程相关函数的实现
作者: Dake
版本: V2010.09.01
编程方式: ANSI C语言编程
授权方式: Copyright(C) Dake
联系方式: chen423@yeah.net
生成日期: 2010-07-05
--------------------------------------------------------------------------------
多线程安全性: <是/否>[,说明]
异常时安全性: <是/否>[,说明]
--------------------------------------------------------------------------------
备注: 高斯混合模型:GMM={p[i] u[i][D] cMatrix[i][D]},i=0...M-1
--------------------------------------------------------------------------------
修改记录:
日 期        版本     修改人              修改内容
YYYY/MM/DD   X.Y      <作者或修改者名>    <修改内容>

*******************************************************************************/
#include 
#include 
#include 
#include 
#include “gmm.h“
#include “cluster.h“


#define DIFF_GMM_VALUE     1              //!< GMM归一阈值
#define IDENTIFY_VALUE    (-30000)        //!< 识别阈值
//#define IDENTITY_frame_NUM 100           //!< 识别帧数


static double getDistance(double * p1 double * p2);
static BOOL InitGMM(double ** X GMM * pGMM int train_frame_num int m); // 初始化GMM参数
static BOOL BuildGMM(GMM * pGMM GMM * Out double ** X int train_frame_num int m);
static double GMM_diff(GMM * gmm1 GMM * gmm2);
static double GMM_density(GMM * pGMM double * X int index); // 高斯密度函数


/** @function
********************************************************************************

函数名: InitGMMClass()
功能: 初始化GMM结构
用法: 由GMM结构的f_init调用
参数:
[OUT] pGMM: GMM结构指针
[IN] m: GMM的高期混合数
返回: 
调用:

*******************************************************************************/
void InitGMMClass(GMM * pGMM int m)
{
pGMM->m = m;
pGMM->p = NULL;
pGMM->u = NULL;
pGMM->cMatrix = NULL;
pGMM->f_CallocGMM = CallocGMM;
pGMM->f_FreeGMM = FreeGMM;
}


/** @function
********************************************************************************

函数名: CallocGMM()
功能: 为GMM结构内的指针分配内存
用法: 由GMM结构的f_CallocGMM调用
参数:
[OUT] pGMM: GMM结构指针
返回: 
调用:

*******************************************************************************/
void * CallocGMM(GMM * pGMM)
{
int i;
int m = pGMM->m;

pGMM->p = (double *)calloc(m sizeof(double));
if (!pGMM->p)
{
return NULL;
}
pGMM->u = (double **)malloc(m * sizeof(double *));
if (!pGMM->u)
{
free(pGMM->p);
return NULL;
}
pGMM->cMatrix = (double **)malloc(m * sizeof(double *));
if (!pGMM->cMatrix)
{
free(pGMM->p);
free(pGMM->u);
return NULL;
}
for (i = 0; i < m; ++i)
{
pGMM->u[i] = (double *)calloc(D sizeof(double)); 
if (!pGMM->u[i])
{
for(--i; i >=0 ; --i)
{
free(pGMM->u[i]);
free(pGMM->cMatrix[i]);
}
free(pGMM->p);
free(pGMM->u);
free(pGMM->cMatrix);
return NULL;
}
pGMM->cMatrix[i] = (double *)calloc(D sizeof(double));
if (!pGMM->cMatr

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

     文件      14131  2011-11-29 08:09  基于GMM的说话人识别(C代码)\gmm.c

     文件       1988  2011-11-29 08:09  基于GMM的说话人识别(C代码)\gmm.h

     文件      14763  2011-11-29 08:09  基于GMM的说话人识别(C代码)\mfcc.c

     文件       1804  2011-11-29 08:09  基于GMM的说话人识别(C代码)\mfcc.h

     目录          0  2015-01-12 16:28  基于GMM的说话人识别(C代码)

----------- ---------  ---------- -----  ----

                32686                    5


评论

共有 条评论