LPC解算的burg算法
声音的线性预测系数LPC的快速算法有很多种,其中Burg算法的流图如下:
C++语言实现的源代码如下:
1 double LPCBurg(const double x[]/*in wave data*/, size_t N, double a[]/*out LPC*/, size_t M) 2 { 3 std::vector<double> b1 (N, 0); 4 std::vector<double> b2 (N, 0); 5 std::vector<double> aa (M, 0); 6 7 // (3) 8 9 double gain = 0.0; 10 for(size_t j = 0; j < N; j++) 11 { 12 gain += x[j] * x[j]; 13 } 14 15 gain /= N; 16 if(gain <= 0) 17 { 18 return 0.0; // warning empty 19 } 20 21 // (9) 22 23 b1[0] = x[0]; 24 b2[N - 2] = x[N - 1]; 25 for(size_t j = 1; j < N - 1; j++) 26 { 27 b1[j] = b2[j - 1] = x[j]; 28 } 29 30 for(size_t i = 0; ; ++i) 31 { 32 // (7) 33 34 double num = 0.0, denum = 0.0; 35 for(size_t j = 0; j < N - i - 1; j++) 36 { 37 num += b1[j] * b2[j]; 38 denum += b1[j] * b1[j] + b2[j] * b2[j]; 39 } 40 41 if(denum <= 0) 42 { 43 return 0.0; // warning ill-conditioned 44 } 45 46 a[i] = 2.0 * num / denum; 47 48 // (10) 49 50 gain *= 1.0 - a[i] * a[i]; 51 52 // (5) 53 54 for(size_t j = 0; j+1 <= i; j++) 55 { 56 a[j] = aa[j] - a[i] * aa[i - j - 1]; 57 } 58 59 if(i == M-1) break; 60 61 // (8) Watch out: i -> i+1 62 63 for(size_t j = 0; j <= i; j++) 64 { 65 aa[j] = a[j]; 66 } 67 68 for(size_t j = 0; j <= N - i - 2; j++) 69 { 70 b1[j] -= aa[i] * b2[j]; 71 b2[j] = b2[j + 1] - aa[i] * b1[j + 1]; 72 } 73 } 74 75 return gain; 76 }
其中x为输入的语音帧数据,N为语音帧的大小,a为输出的LPC系数,N为需要解算的LPC系数阶数,返回增益gain。该函数返回的gain为均方差平方的均值,真实的预测增益G等于sqrt(gain*N)
转载于:https://www.cnblogs.com/goncely/archive/2012/12/27/lpc_burg.html
LPC解算的burg算法相关推荐
- 四旋翼姿态解算——互补滤波算法及理论推导
转载请注明出处:http://blog.csdn.net/hongbin_xu 或 http://hongbin96.com/ 文章链接:http://blog.csdn.net/hongbin_xu ...
- MiniFly微型四轴学习开发日志(三)——关于姿态解算的相关算法
目录 大致内容介绍 欧拉角与四元数 互补滤波算法的姿态解算 一些疑问 大致内容介绍 之前两篇日志当中提到了关于角度-角速度串级PID与定高Z轴PID配合对四轴进行姿态矫正的大概算法.但是对于测量而来的 ...
- 【计算机视觉】opencv姿态解算6 理论算法调研 PNP问题 5种算法
关于PnP(pespective-n-point)的一些方法 最小PnP问题 P3P问题中假设没有噪声,使用几何约束,可以解得相机的位姿.不具有唯一解. P4P问题中分为线性方法和基于P3P的方法. ...
- 四旋翼姿态解算——梯度下降法理论推导
转载请注明出处:http://blog.csdn.net/hongbin_xu 或 http://hongbin96.com/ 文章链接:http://blog.csdn.net/hongbin_xu ...
- Pixhawk之姿态解算篇(5)_ECF/EKF/GD介绍
一.开篇 很久没更新blog了, 最近研究的东西比较杂乱,也整理了很多东西,没有来的及更新,最近发现很多小伙伴都开始写blog了,在不更新就要"被落后了".兄弟们,等等我啊~~~ ...
- 用降群的方法来解算还原魔方的步骤C++
本文为我在做魔方机器人时用到的解算魔方的算法,参考了德国的Stefan Pochmann写的C++算法和网上找的一些降群的知识,对他的算法进行了理解和按照自己的需要进行了改动.以下给出这部分代码的源码 ...
- RoboMaster视觉教程(6)目标位置解算(PnP求解目标与摄像头间的相对位置)
RoboMaster视觉教程(6)目标位置解算(PnP求解目标与摄像头间的相对位置) 概览 算法原理 solvePnP的使用流程 实验:测量二维码相对于摄像头的位置 RoboMaster视觉程序中的位 ...
- STM32实现四驱小车(三)传感任务——姿态角解算
目录 一. 绪论 二. 惯性传感器测量原理 1. 三轴加速度计 2. 三轴陀螺仪 3. 三轴磁力计 三. 状态估计 1. 姿态估计 (1)线性互补滤波器 (2)非线性互补滤波器 (3)卡尔曼滤波器 2 ...
- 详解几种飞控的姿态解算算法
姿态解算是飞控的一个基础.重要部分,估计出来的姿态会发布给姿态控制器,控制飞行平稳,是飞行稳定的最重要保障.有关姿态解算的基础知识,这里笔者不会细细描述,有关这方面的资料,网上已经有很多.主要是先掌握 ...
最新文章
- libpython3.7m so静态库_Linux下编译安装python3.7
- SqlHelper中IN集合场景下的参数处理
- editor 插入图片之后将光标放到右侧_通过vscode插件自动上传剪贴板图片至aws s3
- 如何将两个虚拟机ping通?如何让虚拟机连网?
- [UML]UML系列——用例图Use Case
- 个人总结:网站优化之title、meta、keywords写法
- 靠一杯茶融资160亿
- 无边框Button(WPF)
- 还在找一款编辑友好,美观方便的开源wiki系统?安利一款超好用wiki
- CSR (英国蓝牙芯片制造商)
- 玩游戏显示服务器不稳定,FPS不稳定是什么原因?玩游戏FPS低怎么办?
- 晨会纪要081110
- GBIT51129-2015工业化建筑评价标准
- Android笔记-Felix
- 计算机文件自动备份到移动硬盘,电脑文件定时自动备份到移动硬盘,有什么方法?...
- 华为鸿蒙系统首发设备,华为鸿蒙系统首发设备 必须支持华为,早点甩掉安卓...
- vue 点击打开pdf
- Photoshop中裁剪工具的使用及扩展
- 晨枫U盘维护V2.0_512M被淹死的鱼修正版
- 软件开发中会使用到的图