• 大小: 2KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-14
  • 语言: 其他
  • 标签: DSP  实现  语音识别  

资源简介

用DSP实现的一个简单的语音识别系统,对初接触者很有帮助。

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include “lpc.h“

#define frameLEN 240 //帧长
#define frameSHIFT 80 //帧移
#define LPCFACTOR 10 //lpc阶数
#define LPCCFACTOR 10 //lpcc阶数
#define REALMAX 100000000

//////////////////////////////////////////////////////////////////
/// 函数功能:计算lpc系数
/// 参数含义: fData----一帧数据,输入参数
/// fResult---返回结果,输出参数
//////////////////////////////////////////////////////////////////
void lpc(float* fData float* fResult)
{
int ijk;
float r[LPCFACTOR+1];
float l[LPCFACTOR];
float a[LPCFACTOR][LPCFACTOR];
float e[LPCFACTOR];
float c[LPCFACTOR];
float d[LPCFACTOR];

for(i=0; i {
float sum=0.0;
for(j=0; jameLEN-i; j++)
{
sum += (*(fData+j)) * (*(fData+j+i));
}
*(r+i) = sum;
}


l[0] = r[1]/r[0];
a[0][0] = l[0];
e[0] = (1-squre(l[0]))*r[0];

for(i=1; i {
float sum=0.0;
for(j=0; j {
sum += (a[i-1][j])*(r[i-j]);
}
c[i] = sum;
l[i] = (r[i+1]-c[i])/e[i-1];
a[i][i] = l[i];
for(j=0; j {
a[i][j] = a[i-1][j]-l[i]*a[i-1][i-j-1];
}
e[i] = (1-squre(l[i]))*e[i-1];
}
for(k=0; k {
d[k] = a[LPCFACTOR-1][k];
d[k] = (-1)*d[k];
}
memcpy(fResult d sizeof(float)*LPCFACTOR);
return;
}


/////////////////////////////////////////////////////////////////
// 函数功能:由lpc得到lpcc
// 参数含义: lpcdata---lpc系数所在的内存首地址输入参数
// lpccdata---返回的lpcc系数,输出参数
/////////////////////////////////////////////////////////////////
void lpctolpcc(float* lpcdata float* lpccdata)
{
int mk;
float sum=0.0;
float tempData[LPCCFACTOR];
for(m=0; m {
sum = *(lpcdata+m);
for(k=0; k {
sum += (*(lpcdata+k))*tempData[m-k-1]*(1.0-(float)(k+1)/(m+1));
}
tempData[m]=sum;
}
for(m=LPCFACTOR; m {
sum=0.0;
for(k=0; k {
sum += (*(lpcdata+k))*tempData[m-k-1]*(1.0-(float)(k+1)/(m+1));
}
tempData[m]=sum;
}
memcpy(lpccdata tempData sizeof(float)*LPCCFACTOR);
return;
}

////////////////////////////////////////////////////////////////////////////////////
// 函数功能:对模板参数和样本参数进行dtw比较
// 参数含义: mobandata---模板参数数组,输入参数,大小为mbfrmcnt*LPCCFACTOR
// yangbendata---样本参数数组,输入参数,大小为ybfrmcnt*LPCCFACTOR
// mbfrmcnt---模板的帧数,输入参数
// ybfrmcnt---样本帧数,输入参数
// cmpresult---比较结果,输出参数,大小为mbfrmcnt*ybfrmcnt
////////////////////////////////////////////////////////////////////////////////////
float dtw(float* mobandata float* yangbendata int mbfrmcnt int ybfrmcnt)
{
int ijk;
float sumd1d2d3retvalue;
float paccd[50][50];
//生成帧匹配距离矩阵
float pd[50][50];
// float* pd = (float*)malloc(sizeof(float)*mbfrmcnt*ybfrmcnt);
for(i=0; i {
for(j=0; j {
sum=0.0;
for(k=0; k {
sum += squre((*(mobandata+i*LPCCFACTOR+k))-(*(yangbendata+j*LPCCFACTOR+k)));
}
pd[i][j]=sum;
// *(pd+i*ybfrmcnt+j) = sum;
}
}

//
// paccd = (float*)malloc(sizeof(float)*mbfrmcnt*ybfrm

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

     文件       4041  2006-11-04 13:37  DSP实现简单语言系统\用DSP实现的一个简单的语音识别系统\lpc.c

     目录          0  2007-05-09 11:57  DSP实现简单语言系统\用DSP实现的一个简单的语音识别系统

     目录          0  2010-04-02 15:49  DSP实现简单语言系统

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

                 4041                    3


评论

共有 条评论