作者:桂。

时间:2017-03-26  10:12:07

链接:http://www.cnblogs.com/xingshansi/p/6621914.html


 【读书笔记05】

前言

西蒙.赫金的《自适应滤波器原理》第四版第三章,线性预测是Wiener Filter的应用,作为信号识别的特征以及信号编码的一种实现途径。本想着跳过这一章,但想着每一章多少记录一下,直到看到Kalman Filter,也就写写吧。主要包括:

  1)前向线性预测原理;

  2)线性预测应用实例;

内容为自己的学习笔记,如有不当之处,希望各位帮忙指出!

一、前向线性预测原理

以语音信号为例,声道模型的一种观点是:级联结构的共振峰模型。即:对于一般元音,可以用全极点模型,传输函数:

$H\left( z \right) = \frac{G}{{1 - \sum\limits_{i = 1}^p {{a_i}{z^{ - k}}} }}$

G为幅值因子,p为极点个数。

这里仅仅讨论全极点模型。对于输出$x(n)$和激励$u(n)$有差分方程:

$x\left( n \right) = \sum\limits_{i = 1}^p {{a_i}x\left( {n - i} \right) + Gu\left( n \right)}$

称系统

$\hat x\left( n \right) = \sum\limits_{i = 1}^p {{a_i}x\left( {n - i} \right)} $

为线性预测器。$\hat x\left( n \right)$是$x(n)$的估算值。$a_i$为预测系数(Linear Prediction Coefficient, LPC),$p$为对应阶数。

对应单点预测误差:

$e(n) = x(n) - \hat x\left( n \right) = x(n) - \sum\limits_{i = 1}^p {{a_i}x\left( {n - i} \right)} $

预测误差:

$\sum\limits_n {{e^2}(n)}  = \sum\limits_n {{{\left[ {x(n) - \sum\limits_{i = 1}^p {{a_i}x\left( {n - i} \right)} } \right]}^2}} $

对$a_i$求偏导即可实现求解,得出的方程组通常称为Yule-Walker方程。

二、应用实例

利用预测系数估计逼近系统响应$H$,可以用该系数表征语音的特性,也可以用逼近的$H$观察声道特性,同样可以进行共振峰提取,这些都可以看作说话人的特征。

给出代码:

clear all; clc; close all;
filedir=[]; % 设置数据文件的路径
filename='a.wav'; % 设置数据文件的名称
fle=[filedir filename] % 构成路径和文件名的字符串
[x,fs]=wavread(fle); % 读入语音数据
L=240; % 帧长
p=30; % LPC的阶数
y=x(8001:8000+L); % 取一帧数据
ar=lpc(y,p); % 线性预测变换
nfft=512; % FFT变换长度
W2=nfft/2;
m=1:W2+1; % 正频率部分下标值
Y=fft(y,nfft); % 计算信号y的FFT频谱
Y1=lpcar2ff(ar,W2-1); % 计算预测系数的频谱
% 作图
subplot 311; plot(y,'k');
title('一帧语音信号的波形'); ylabel('幅值'); xlabel('(a)')
subplot 312;
plot(m,20*log10(abs(Y(m))),'k','linewidth',1.5);
line(m,20*log10(abs(Y1)),'color','r','linewidth',2)
axis([0 W2+1 -30 25]); ylabel('幅值/db');
legend('FFT频谱','LPC谱',3); xlabel(['样点' 10 '(b)'])
title('FFT频谱和LPC谱的比较 p=4'); subplot 313;
plot(m,20*log10(abs(Y(m))),'k','linewidth',1.5);
line(m,20*log10(abs(Y1)),'color','r','linewidth',2)
axis([0 W2+1 -30 25]); ylabel('幅值/db');
legend('FFT频谱','LPC谱',3); xlabel(['样点' 10 '(c)'])
title('FFT频谱和LPC谱的比较 p=30');

对应结果图:

可以看出,信号的频谱由慢变化分量调制高频信号,对应时域就是卷积,而声道模型对应卷积的$h(n)$,p选择过小估计不准,选择过大容易过拟合,这么看来lpc说是预测其实本质也是拟合的问题,同样有Over-fitting. 得到LPC谱之后,可以利用峰值查找等方式,进行共振峰估计。

参考:

自适应滤波——线性预测(LPC)的更多相关文章

  1. 自适应滤波:最小均方误差滤波器(LMS、NLMS)

    作者:桂. 时间:2017-04-02  08:08:31 链接:http://www.cnblogs.com/xingshansi/p/6658203.html 声明:欢迎被转载,不过记得注明出处哦 ...

  2. 自适应滤波:维纳滤波器——FIR及IIR设计

    作者:桂. 时间:2017-03-23  06:28:45 链接:http://www.cnblogs.com/xingshansi/p/6603263.html [读书笔记02] 前言 仍然是西蒙. ...

  3. 自适应滤波:维纳滤波器——GSC算法及语音增强

    作者:桂. 时间:2017-03-26  06:06:44 链接:http://www.cnblogs.com/xingshansi/p/6621185.html 声明:欢迎被转载,不过记得注明出处哦 ...

  4. 自适应滤波:维纳滤波器——LCMV及MVDR实现

    作者:桂. 时间:2017-03-24  06:52:36 链接:http://www.cnblogs.com/xingshansi/p/6609317.html 声明:欢迎被转载,不过记得注明出处哦 ...

  5. 自适应滤波原理及simulink

  6. 自适应滤波:奇异值分解SVD

    作者:桂. 时间:2017-04-03  19:41:26 链接:http://www.cnblogs.com/xingshansi/p/6661230.html 声明:欢迎被转载,不过记得注明出处哦 ...

  7. 七中滤波方法测试matlab实现

    http://blog.163.com/xiaheng0804@126/blog/static/1205282120132129471816/ 创建两个混合信号,便于更好测试滤波器效果.同时用七中滤波 ...

  8. 自适应滤波器(Adaptive Filter)

    ======= Wikipedia的解释 ======= 自适应滤波器是能够根据输入信号自动调整性能进行数字信号处理的数字滤波器.作为对比,非自适应滤波器有静态的滤波器系数,这些静态系数一起组成传递函 ...

  9. Wellner 自适应阈值二值化算法

    参考文档: Adaptive Thresholding for the DigitalDesk.pdf       Adaptive Thresholding Using the Integral I ...

随机推荐

  1. 《浅谈架构之路:单点登录 SSO》

    前言:SSO 单点登录 “半吊子”的全栈工程师又来了,技术类的文章才发表了两篇,本来想先将主攻的几个系列都开个头(Nodejs.Java.前端.架构.全栈等等),无奈博客起步太晚,写博文的时间又没有很 ...

  2. 初学NodeJs

    1.在ecmascript部分node和js其实是一样的,比如数据类型的定义,语法结构,内置对象 在js中的顶层对象 window 在node中的顶层对象 global 注意:在node中也没有什么w ...

  3. node-webkit制作桌面应用

    心血来潮突然想用js尝试写桌面应用,突然发现我大js真的无所不能.在网上搜到了这么一个东东:node-webkit.用Node.js来进行系统资源的访问,用HTML+CSS完成页面的搭建.哇,一切突然 ...

  4. Winfrom 提示消息框公共类

    1.Winfrom项目经常会使用到消息提示,一般都使用MessageBox.Show方法,但是像错误提示,询问提示,警告提示写起来就有点复杂了,并且后面几种提示都带有图标,但是MessageBox.S ...

  5. YoMail 邮箱客户端的社会化之路,起于邮箱,不止于邮件

    你还记不记得上一次用邮箱处理私人事务是什么时候?从什么时候开始邮箱于你而言,唯一功能沦为了收取各种网站的验证信息? 电子邮件实际上非常适合于工作上使用,比起其他通信工具,或者社会化媒体,电子邮件在工作 ...

  6. 读书笔记 effective c++ Item 10 让赋值运算符返回指向*this的引用

    一个关于赋值的有趣的事情是你可以将它们链在一起: int x, y, z; x = y = z = ; // chain of assignments 同样有趣的是赋值采用右结合律,所以上面的赋值链被 ...

  7. v3学院带您一起学习FPGA

    本文为原创,转载请注明! 课程名称:双buffer乒乓操作项目概况:使用FPGA内部ram作为缓冲器,实现对外部数据流的缓存:为了提升数据的传输及处理速度,在此节课中将用到两个ram进行乒乓操作.结构 ...

  8. DOM基础(一)

    在我们刚刚学JavaScript的时候,就应该听说过,JavaScript是由三部分组成的.分别是ECMAScript,DOM和BOM组成的.ECMAScript是JavaScript的核心,它描述了 ...

  9. 通过JS将BSAE64生成图片并下载

    HTML:<div style="display:block;margin:0 auto;width:638px;height:795px;"><div id=& ...

  10. mac air 上的Linux命令训练(1)

    1.cat命令 作用: 读取一个文件的全部内容,并将它输出,如果将它输出到一个目标文件,目标文件将会被替换掉. 参数: -n : 加上行号输出 -b:加上行号,但是不加空白行,输出 -s:当遇到多行空 ...