//Calculate LPC coefficients coefficients based on autocorrelation
void corref(int ip,float cor[],float alf[])
{
int i,j;
float refi,alfsave,resid;
alf[1]=(-cor[1]);
alf[0]=1;
resid=1-cor[1]*cor[1];
for(i=2;i<=ip;i++)
{
refi=cor[i];
for(j=1;j<i;j++)
refi+=alf[j]*cor[i-j];
refi/=resid;
alf[i]=(-refi);
for(j=1;2*j<=i;j++)
{
alfsave=alf[j];
alf[j]=alfsave-refi*alf[i-j];
if(2*j!=i)
alf[i-j]-=refi*alfsave;
}
}
}
//Calculate LPC cepstrum based on alf
void alfcep(int ip,float alf[],float cep[],int n)
{
int m,i;
float ss;
m=0;
goto start;
next:
m+=1;
ss=0;
i=0;
goto step3;
step2:
ss-=alf[i]*cep[m-i];
step3:
i+=1;
if(i>ip) goto step4;
if(i<m) goto step2;
ss-=alf[m]*m;
step4:
cep[m]=ss;
start:
if(m<n) goto next;
for(m=2;m<=n;m++)
cep[m]/=m;
}
//Calculate mel-warped LPC cepstrum
void cepmel(float cep[],float mel[])
{
int k,n;
float u0[ORDER+2],u1[ORDER+2];
float alpha=ALPHA;
//Calculation mel[0]*
u0[ORDER+1]=0;
for(n=ORDER;n>=0;--n)
u0[n]=cep[n]+alpha*u0[n+1];
//mel[0]=u0[0];
//Calculation mel[1]*
u1[ORDER+1]=0;
for(n=ORDER;n>=0;--n)
u1[n]=((1-alpha*alpha)*u0[n+1]+alpha*u1[n+1]);
mel[1]=u1[0];
//Calculation mel[2],mel[3],......,mel[ORDER] *
for(k=2;k<=ORDER;++k)
{
for(n=0;n<=ORDER+1;++n)
u0[n]=u1[n];
for(n=ORDER;n>=0;--n)
u1[n]=u0[n+1]+alpha*(u1[n+1]-u0[n]);
mel[k]=u1[0];
}
}
main()
{
int rad[][]; //端点检测后的语音数据
float cor[ORDER+1]; //autocorrelation coefficients ORDER=14
float alf[ORDER+1]; //LPC
float cep[ORDER+1]; //LPC cepstrum
float mel[ORDER+1];
float mel_data[length][ORDER];
//mel-warped LPC cepstrum,length为端点检测后的每个语音数据的帧长
int mel_v=0;
//Auto-Correlation Calculation
correl(rad[count],cor,W_SIZE,ORDER);
//LPC Analysis Program
corref(ORDER,cor,alf);
//LPC Cepstrum Coefficient Calculation
alfcep(ORDER,alf,cep,ORDER);
alf[0]=cep[0]=cor[0]; //cor[0] is power
//MEL Cepstrum Coefficient Calculation
cepmel(cep,mel);
//printf("\n Frame %d :",count);
for(i=0;i<ORDER;i++)
{
mel_data[mel_v][i]=mel[i+1];
//printf("\nFrame %d: Mel[%d][%d]= %g",count,mel_v,i,mel_data[mel_v][i]);
}
}
LPCC.zip_LPCC_LPCC DSP
版权申诉
144 浏览量
2022-09-20
19:44:51
上传
评论
收藏 1KB ZIP 举报
weixin_42653672
- 粉丝: 93
- 资源: 1万+
最新资源
- WebCrawler.scr
- 【计算机专业毕业设计】大学生就业信息管理系统设计源码.zip
- YOLO 数据集:8种路面缺陷病害检测【包含划分好的数据集、类别class文件、数据可视化脚本】
- JAVA实现Modbus RTU或Modbus TCPIP案例.zip
- 基于YOLOv8的FPS TPS AI自动锁定源码+使用步骤说明.zip
- JAVA实现Modbus RTU或Modbus TCPIP案例.zip
- 基于yolov8+streamlit的火灾检测部署源码+模型.zip
- 测试aaaaaaabbbbb
- VID20240521070643.mp4
- Android系统原理与开发学习要点详解-培训课件.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈