声音的线性预测系数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算法相关推荐

  1. 四旋翼姿态解算——互补滤波算法及理论推导

    转载请注明出处:http://blog.csdn.net/hongbin_xu 或 http://hongbin96.com/ 文章链接:http://blog.csdn.net/hongbin_xu ...

  2. MiniFly微型四轴学习开发日志(三)——关于姿态解算的相关算法

    目录 大致内容介绍 欧拉角与四元数 互补滤波算法的姿态解算 一些疑问 大致内容介绍 之前两篇日志当中提到了关于角度-角速度串级PID与定高Z轴PID配合对四轴进行姿态矫正的大概算法.但是对于测量而来的 ...

  3. 【计算机视觉】opencv姿态解算6 理论算法调研 PNP问题 5种算法

    关于PnP(pespective-n-point)的一些方法 最小PnP问题 P3P问题中假设没有噪声,使用几何约束,可以解得相机的位姿.不具有唯一解.  P4P问题中分为线性方法和基于P3P的方法. ...

  4. 四旋翼姿态解算——梯度下降法理论推导

    转载请注明出处:http://blog.csdn.net/hongbin_xu 或 http://hongbin96.com/ 文章链接:http://blog.csdn.net/hongbin_xu ...

  5. Pixhawk之姿态解算篇(5)_ECF/EKF/GD介绍

    一.开篇 很久没更新blog了, 最近研究的东西比较杂乱,也整理了很多东西,没有来的及更新,最近发现很多小伙伴都开始写blog了,在不更新就要"被落后了".兄弟们,等等我啊~~~ ...

  6. 用降群的方法来解算还原魔方的步骤C++

    本文为我在做魔方机器人时用到的解算魔方的算法,参考了德国的Stefan Pochmann写的C++算法和网上找的一些降群的知识,对他的算法进行了理解和按照自己的需要进行了改动.以下给出这部分代码的源码 ...

  7. RoboMaster视觉教程(6)目标位置解算(PnP求解目标与摄像头间的相对位置)

    RoboMaster视觉教程(6)目标位置解算(PnP求解目标与摄像头间的相对位置) 概览 算法原理 solvePnP的使用流程 实验:测量二维码相对于摄像头的位置 RoboMaster视觉程序中的位 ...

  8. STM32实现四驱小车(三)传感任务——姿态角解算

    目录 一. 绪论 二. 惯性传感器测量原理 1. 三轴加速度计 2. 三轴陀螺仪 3. 三轴磁力计 三. 状态估计 1. 姿态估计 (1)线性互补滤波器 (2)非线性互补滤波器 (3)卡尔曼滤波器 2 ...

  9. 详解几种飞控的姿态解算算法

    姿态解算是飞控的一个基础.重要部分,估计出来的姿态会发布给姿态控制器,控制飞行平稳,是飞行稳定的最重要保障.有关姿态解算的基础知识,这里笔者不会细细描述,有关这方面的资料,网上已经有很多.主要是先掌握 ...

最新文章

  1. libpython3.7m so静态库_Linux下编译安装python3.7
  2. SqlHelper中IN集合场景下的参数处理
  3. editor 插入图片之后将光标放到右侧_通过vscode插件自动上传剪贴板图片至aws s3
  4. 如何将两个虚拟机ping通?如何让虚拟机连网?
  5. [UML]UML系列——用例图Use Case
  6. 个人总结:网站优化之title、meta、keywords写法
  7. 靠一杯茶融资160亿
  8. 无边框Button(WPF)
  9. 还在找一款编辑友好,美观方便的开源wiki系统?安利一款超好用wiki
  10. CSR (英国蓝牙芯片制造商)
  11. 玩游戏显示服务器不稳定,FPS不稳定是什么原因?玩游戏FPS低怎么办?
  12. 晨会纪要081110
  13. GBIT51129-2015工业化建筑评价标准
  14. Android笔记-Felix
  15. 计算机文件自动备份到移动硬盘,电脑文件定时自动备份到移动硬盘,有什么方法?...
  16. 华为鸿蒙系统首发设备,华为鸿蒙系统首发设备 必须支持华为,早点甩掉安卓...
  17. vue 点击打开pdf
  18. Photoshop中裁剪工具的使用及扩展
  19. 晨枫U盘维护V2.0_512M被淹死的鱼修正版
  20. 软件开发中会使用到的图

热门文章

  1. 聚焦:ZK-SNARK 技术
  2. 物质是世界,能量是本质
  3. 前端“智能”静态资源管理 - Onebox - 博客园
  4. vnc远程软件,四款值得使用的vnc远程软件推荐
  5. Kafka拉取某一个时间段內的消息
  6. LoRa:SX1278
  7. 文档数据防泄密需求分析
  8. 阿里云进入Iot Studio
  9. Word查找和替换通配符(完全版)
  10. Solaris下网卡绑定多个IP