资源简介
用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
相关资源
- delphi源码-实现软件注册机
- 语音识别LD3320开发资料包含51代码
- DSP实验(10次实验有详细步骤)
- ADC0809的采样控制电路的实现.doc
- 触摸屏TPC7063E与S7 300 PLC之间MPI通信实
- SpringMVC文件上传与的实现.rar
- 语音信号处理 赵力
- 实验三 消息中间件应用开发:Active
- FPGA实现PID.v
- 计算机图形学 边填充算法实现代码
-
Actionsc
ript 1.0实现能跟随鼠标运动的 - CCS5.05.1可使用的license
- 基于蓝牙4.0的设备通信方案设计与实
- 基于PCIe的FPGA动态配置设计与实现
- SSM+Shiro+redis实现单点登陆
- 使用选择性重传协议实现UDP可靠通信
- 实现小波变换例子 upcoef 函数
- 图像二维小波变换的实现源代码
- 栈的实现及应用,六种基本算法
- 用汇编实现的学生成绩档案管理系统
- pb 实现仿BS界面 dw菜单 powerbuild
- 基于MIPS指令集的32位CPU设计与Verilog语
- python实现的ftp自动上传、下载脚本
- jQuery ajax实现简单登录验证
- 编程实现二维DCT变换
- 用Socket编程实现FTP
- gmsk调制在FPGA上实现
- 用51单片机实现G代码翻译
- dsp2812上128点FFTc程序以及其CMD文件
- DSP28335程序片内FLASH搬运至RAM运行的
评论
共有 条评论