线性预测分析

线性预测(Linear Prediction COding, LPC)可及精确地估计语音参数,其基本思想是一个语音的取样可用过去若干语音取样的线性组合来逼近。通过使得实际语音取样与LPC取样间差值的平方和最小,即进行LMS逼近,可决定唯一的一组预测系数。而他们就是线性组合中的加权系数。LPC用于语音信号处理,不仅有预测功能,而且提供了一个非常好的声道模型。利用其参数可以做很多如降低传输码率、解混响等。线性分析预测参数包括LPC、PARCOR以及LSP参数等多种。

线性预测分析的基本原理

LPC分析的基本原理是将被分析的信号用一个模型表示,即将信号看做一个模型的输出,这样就可以用模型参数描述信号。通常模型中只包含有限个极点而没有零点,此时系统函数为:

这种模型称为全极模型或AR模型。式中,各系数αi和增益G为模型参数,而αi是实数,称为LPC系数。这样信号可用有限数目参数构成的信号模型表示。LPC分析就是根据已知的信号s(n)对参数αi和G的估计。线性预测的基本问题是由语音信号直接决定一组预测器系数,在使预测误差在某个准则下最小,若采用LSME准则,就得到著名的LPC算法。

对于鼻音和摩擦音,声学理论表明,声道传输函数既有极点又有零点。如模型阶数O足够大,可用全极点模型金斯表示极零点模型。因为一个零点可以用多个极点近似,即:

如分母多项式收敛足够快,只要取前几项就可以,所以全极点模型为实际应用提供了合理近似。

根据上述模型化思想,可对语音信号建立模型,如下图所示,其中将声门激励、声道及辐射的全部谱效应简化为一个时变数字滤波器来等效,其系统函数为H(z):


对于语音信号,确定了LPC系数后,根据H(z)可得到其频率特性的估值,即LPC谱:

LPC谱的特点为:对浊音信号谐波成分处匹配效果要远好于谐波之间,这有LMSE准则决定,因而其反应的是谱包络。LPC谱可以很好的表示共振峰结构,而不出现二外的峰值和起伏。但当不满足全极模型假设是,如信号收到噪声污染,那LPC谱的质量也将下降。对LPC参数数字化时,应采取抗混叠措施。

在建立线性预测方程组时需要采用逆滤波法将原模型的非线性方程转化为线性的,根据LMS准则,线性预测过程就是找到一组预测系数,使得σ2e最小。LPC标准方程为:

其中

即由P个方程组成的有P个未知数的方程组,求解方程可得α^i。Φ(j,i)由输入语音决定。

短时预测均方误差En为:

因而最小均方误差由一个固定分量以及一个依赖于预测系数的分量组成。对应线性预测增益为G=√En。

为求解最佳预测器系数,需先计算Φ(i,j),再按LPC标准方程求出α^i。因而从原理上LPC分析非常直接了当,但计算Φ(i,j)及方程组的求解都十分复杂。常用的线性预测分析揭发有自相关和协方差法、格型法等。

线性预测分析的应用

LPC谱估计

LPC系数可认为是一个全极点滤波器系统函数分母多项式的系数,而该系统是声道响应、声门脉冲形状及抠鼻辐射的综合模拟。给定一组预测期系数喉,可得到全极点线性滤波器的频率特性。其频率特性曲线会在共振峰频率去出现峰值,因此LPC可以看做一种短时谱估计法。可以证明,若信号的s(n)为P阶AR模型,则:

式中,H(ejw)是模型H(z)的频率特性,简称为LPC谱。S为信号谱, |S(ejw)|2为其功率谱。因为语音信号并非AR模型,因此H只能是S的一个估计,但又因为一个零点可用无穷多个极点逼近,即极零模型可以用无穷高阶全极点模型逼近。因此,尽管语音信号作为ARMA(自动滑动平均)模型即零点模型,但只要阶数P足够大,总能用全极点模型谱以人一笑的误差逼近语音信号谱。基于以上讨论,参数P可有效控制所得谱的平滑度。下图给出不同阶数P的LPC谱。显然,P增加时更多的谱细节被保存。因为目的是只得到声门脉冲、声道辐射组合效应谱,因而P的选择应使得共振峰谐振点及一般普形状得以保持。P的选取原则是:保证有足够的极点模拟声道谐振结构。通常其在10以上时,短时谱的显著峰值部分基本可反映出来。

LPC复倒谱

LPC系数是线性预测分析的基本参数,可以将这些系数转换为其他参数,以得到语音的其他代替表示方法。LPC系数可表示为LPC模型系统冲激响应的复倒谱。
设由LPC得到的声道模型系统函数为:

设其单位冲击响应为h(n),则:

而后就可以按照求复倒谱的公式,求h(n)的复倒谱h^(n),该复倒谱称为LPC复倒谱。LPC复倒谱分析的最大优点是运算量小,仅为FFT用最小相位信号法求复倒谱的一半。LPC复倒谱系数也成为LPCC,是语音识别中常用的特征矢量。

总结一下,为估计语音信号的短时包络谱,已有三种方法:

  • 由LPC系数估计。
  • 由LPCC估计。
  • 先用最小相位信号法求复倒谱,再用低复倒谱窗取出短时包络信息。该方法用波形直接计算得到倒谱。为了与LPCC相区别,也成为FFT倒谱。

线谱对(LSP)分析

线谱对分析是一种频域参数分析方法,这种LPC方法求解的模型参数为线谱对(LSP, Line Spectrum Pair)。LSP在数学上等价于其他LPC参数,如αi。如将声道视为由P+1段声管级联而成,则LSP表示声门完全开启或完全闭合下声管的谐振频率。它也可以用于估计语音的基本特性。因为其为频域参数,因而与语音信号的谱包络的峰联系更为密切。同事LSP有良好的量化和差值特性,因而在LPC声码器中得到应用。目前,表示LPC参数最有效的方式为LSP,它的一些特性比其他系数更有吸引力。

LPC分析与格型法分析类似,也是以全极点模型为基础。线谱对分析的基本出发点是通过两个z变换P(z)和Q(z),将A(z)(误差传递函数)的P个零点映射到单位圆上,以使这些零点直接用频率w反应,而P(z)和Q(z)各提供P/2个零点频率。LSP参数的求解有代数方程式求根和DFT方法等。

Ref

现代语音信号处理[胡航 电子工业出版社] 第六章 线性预测分析

现代语音信号处理之线性预测分析相关推荐

  1. 《MATLAB语音信号分析与合成(第二版)》:第4章 语音信号的线性预测分析

    <MATLAB语音信号分析与合成(第二版)>:第4章 语音信号的线性预测分析 前言 1. 数据与函数路径设置 2. MATLAB仿真一:LPC的频谱分析 3. MATLAB仿真二:普通预测 ...

  2. 与语音信号处理有关的java书籍_MATLAB在语音信号分析与合成中的应用 中文pdf扫描版[198MB]...

    语音信号处理是数字信号处理的一个重要分支.本书含有许多数字信号处理的方法和MATLAB函数.全书共10章.第1-4章介绍语音信号处理的一些基本分析方法和手段,以及相应的MATLAB函数:第5-9章介绍 ...

  3. 语音信号处理第三章:

    语音信号处理第二章 语音信号处理第三章 语音信号处理第四章 语音信号处理第五章 语音信号处理第七章 语音信号处理第九章 语音信号处理第十章 语音信号处理第十二章 文章目录 1.数字化和预处理 1.1. ...

  4. 语音信号线性预测分析(MATLAB实战篇)

    文章目录 前言 基本概念 基本参数的求解及其用途 1.线性预测系数(LPC) 2.线性预测系数LPC的频谱 3.线性预测系数的倒谱LPCC 4.线性预测误差e(n)及其自相关 5.预测误差滤波器A(z ...

  5. Python语音基础操作--3.5线性预测分析

    <语音信号处理试验教程>(梁瑞宇等)的代码主要是Matlab实现的,现在Python比较热门,所以把这个项目大部分内容写成了Python实现,大部分是手动写的.使用CSDN博客查看帮助文件 ...

  6. 基于matlab的语音信号基本处理系统,基于matlab的语音信号处理及分析

    内容简介: 毕业设计 基于matlab的语音信号处理及分析(共19页,8147字) 引言 数字信号处理的主要研究对象是数字信号,且是采用运算的方法达到处理的目的的,因此,其实现方法,基本上分成两种实现 ...

  7. 语音信号线性预测分析

    语音信号线性预测分析 基本思想:一个语音取样的现在值可以用若干个语音取样过去值的加权线性组合来逼近(最小均方误差).线性预测最重要的优势在于它可以较为精确地估计语音的参数,而这些极少的参数可以正确地表 ...

  8. 基于matlab的音频信号处理系统,毕业设计-基于matlab的语音信号处理及分析

    资料简介 毕业设计 基于matlab的语音信号处理及分析(共19页,8147字) 引言 数字信号处理的主要研究对象是数字信号,且是采用运算的方法达到处理的目的的,因此,其实现方法,基本上分成两种实现方 ...

  9. 数字语音信号处理学习笔记——绪论(2)

    版权声明:本文为博主原创文章,未经博主允许不得转载.    https://blog.csdn.net/u013538664/article/details/25060123 1.2.2 语音编码 语 ...

  10. 《现代语音信号处理》(胡航著)第1-6章简介

    根据<现代语音信号处理>(胡航版)总大概列出前六章的内容,有些会有一些自己的理解和总结. 第一章 绪论 发展史和主要研究内容及发展. 第二章 语音信号处理的基础知识: 语音信号处理的基础知 ...

最新文章

  1. Dissecting BERT Part 1: The Encoder 解析BERT解码器(transformer)
  2. 关于 Ruby Ruby on Rails 的一些书及论坛网站
  3. zookeeper的ZAB协议学习
  4. vim 块操作、多文件操作、多窗口操作命令
  5. 牛客题霸 [ 换钱的最少货币数] C++题解/答案
  6. 结合使用嵌入式Tomcat和Maven tomcat插件
  7. 真的很OK!雷军成科创板大赢家 相关投资企业3家已上市
  8. [争什么! 掺在一起做撒尿牛丸啊! 笨蛋]ASP.NET Core 2.0 + EF6 + Linux +MySql混搭
  9. Python-Django中的那些命令
  10. 安装FlexPro和设置FlexPro许可证管理器
  11. 25.构造ICMP数据包
  12. 西门子PLC常用通信协议以及常用协议的区别(二)
  13. 蓝桥杯单片机数码管技巧
  14. 如何查看电子元器件的丝印信息
  15. oracle append parallel,大量数据快速插入方法探究[nologging+parallel+append]
  16. 使用GANs生成时间序列数据:DoppelGANger论文详解
  17. matlab求解一阶微分方程组
  18. 谷歌浏览器打开后同时弹出百度搜索和2345问题解决
  19. CIO40知识星球—20年数字化组织架构演进V4.0
  20. 什么是ERC20,ERC721?两者的区别是什么?

热门文章

  1. apache phoenix的JAVA JDBC操作
  2. [golang 易犯错误] golang 局部变量初始化:=的陷阱
  3. C++中使用初始化列表比在构造函数中对成员变量赋值更高效
  4. HDOJ_ACM_统计问题
  5. 04_使用域名访问后台管理系统(Nginx)
  6. 17_购物车删除商品与清空购物车
  7. 01_项目需求与实体分析(servlet+java bean+jsp的商城教程)
  8. Mac如何解决vi vim光标移动慢问题
  9. webpack5学习与实战-(十三)-postcss处理css3兼容性前缀
  10. vue-loader was used without the corresponding plugin. Make sure to include VueLoad……