语音信号的数字滤波处理.docx

上传人:b****6 文档编号:3343458 上传时间:2022-11-21 格式:DOCX 页数:16 大小:188.40KB
下载 相关 举报
语音信号的数字滤波处理.docx_第1页
第1页 / 共16页
语音信号的数字滤波处理.docx_第2页
第2页 / 共16页
语音信号的数字滤波处理.docx_第3页
第3页 / 共16页
语音信号的数字滤波处理.docx_第4页
第4页 / 共16页
语音信号的数字滤波处理.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

语音信号的数字滤波处理.docx

《语音信号的数字滤波处理.docx》由会员分享,可在线阅读,更多相关《语音信号的数字滤波处理.docx(16页珍藏版)》请在冰豆网上搜索。

语音信号的数字滤波处理.docx

语音信号的数字滤波处理

 

题目:

语音信号的FIR滤波器处理

 

组员:

班级:

指导教师:

成绩:

 

 

摘要:

DSP(DigitalSignalProcessing)也就是我们常说的数字信号处理,

它是利用计算机或专用处理设备,以数字形式对信号进行采集、变换、滤波、估值、增强、压缩、识别等处理,以得到符合人们需要的信号形式。

数字滤波是语音信号处理、图像处理、模式识别、频谱分析等应用的基本处理算法。

在数字信号处理中,滤波具有极其重要的作用。

数字滤波是谱分析、通信信号处理等的基本算法,它能够满足滤波器对幅度和相位的严格要求,解决了模拟滤波器所无法克服的电压漂移、温度漂移和噪声等问题,同时用DSP芯片实现数字滤波除了具有稳定性好、精确度高、不受环境影响等优点外,又有很高的可编程性和灵活性。

本文采用数字滤波器的设计基础及用窗函数法设计FIR滤波器的方法,用CCS2.0进行观察效果。

关键词:

FIR滤波MATLAB窗函数法CCS

 

1、设计目的

1.1掌握FIR数字滤波器的设计思路及方法步骤,学会设计各种低通、高通、带通滤波器。

1.2学会利用DSP技术课程以及其他有关先修课程的理论和生产实际知识去分

析和解决具体问题。

1.3熟悉汇编语言,学会用DSK/DEC5402CCS2.0软件编写C语言程序和汇编语言程序。

1.4培养自己对工程设计的独立工作能力。

2、设计要求

2.1设计一FIR低通滤波器,实现对语音信号的滤波。

2.2用语音信号去检验该滤波器,查看滤波效果。

根据老师的要求,我们自己拟定了滤波器的指标:

Fs=8000hz,Wp=1500Hz,Ws=2000Hz,通带波纹为0.01,阻带波纹为0.1,N=37。

3、课程设计内容

通过DSP处理器控制TLC320AD50采集音频信号,在CCS软件中分析音频信号的频谱图,使用Matlab设计相应的FIR低通数字滤波器得到滤波器H(z)的系数,然后根据这些系数,编写DSP程序(C语言或汇编)对已采集信号进行处理,最后在CCS软件中得到处理后音频信号的频谱图,比较滤波前后信号的频谱图。

4.FIR滤波器的设计

4.1滤波器的设计的原理介绍

FIR数字滤波器的单位取样响应是时宽有限的,即:

一个N阶的非递归型数字滤波器(FIR滤波器)的差分方程如公式1-1所示

1-1

差分方程式中的系数

等于单位取样响应的序列值h(n),其系统函数H(z)

可以表示为公式1-2所示的形式:

1-2

H(z)是的多项式,因此它的极点只能在Z平面的原点上。

FIR滤波器通常采用窗函数方法来设计。

窗设计的基本思想是,首先选择一个适当的理想选频滤波器(它总是具有一个非因果,无限持续时间脉冲响应),

然后街区(加窗)它的脉冲响应得到线性相位和因果FIR滤波器。

我们用

表示理想的选频滤波器,它在通带上具有单位增益和线性相位,在阻带上具有零

响应。

一个带宽wc

为了从

得到一个FIR滤波器,必须同时在两边截取

而要得到

一个因果的线性相位滤波器,它的

长度为N,必须满足公式1-3:

1-3

h(n)可以看做是hd(n)与窗函数w(n)的乘积,如公式1-4所示:

1-4

这种操作叫做加窗,其中根据w(n)的不同定义,可以得到不同的窗结构。

在频域中,因果FIR滤波器响应

和窗响应

的周期卷积得到,如公式1-5所示:

1-5

4.2FIR滤波器的基本结构

在式2.1.1中,若所有的ai均为0,则得FIR滤波器的差分方程:

(2.2.1)

对式(2.2.1)进行z变换,可得FIR滤波器的传递函数:

(2.2.2)

由此可得到FIR滤波器的结构如下图所示:

 

4.3FIR滤波器的特点

(1)即具有严格的线性相位,又具有任意的幅度;

(2)FIR滤波器的单位抽样响应是有限长的,因此滤波器性能稳定;(3)只要经过一定的延迟时,任何非因果有限长序列,因而能用因果系统来实现;(4)FIR滤波器由于单位冲击响应是有限长的,因而可用快速傅立叶变换(FFT)算法来实现过滤信号,可大大提高运算效率

5、FIR滤波器的Matlab设计

5.1FIR滤波器设计

FIR滤波器的设计方法很多,文中选取通常使用的用窗函数法。

FIR滤波器的设计问题在于寻求一系统函数

,使其响应

逼近滤波器要求的理想频率响应

5.2滤波器的Matlab设计

MATLAB被称为第四代计算机语言,又称为“草稿纸式”的语言,它具有不同于其他语言如Fortran、C语言等的特点,是边解释边执行的计算机语言。

MATLAB是一款具有强大的矩阵运算、数据处理和图形显示功能的软件,其输出结果可视化,编程效率极高,用极少的代码即可实现复杂的运行,因此它使工程技术人员摆脱了繁琐的程序代码,以便快速地验证自己的模型和算法。

fir1就是采用经典窗函数法设计线性相位FIR数字滤波器的函数,且具有标准低通,带通,高通,带阻等类型。

函数调用格式为:

b=fir1(n,wn[,'ftype',window])

式中,n为FIR滤波器的阶数,对于高通,带阻滤波器,n需取偶数;wn为滤波器截止频率,范围为0~1(归一化频率)。

对于带通,带阻滤波器,wn=[w1,w2](w1

0

‘ftype'为滤波器的类型:

缺省时为低通或带通滤波器;'high'为高通滤波器;‘stop'为带阻滤波器,'DC-1'为第一频带为通带的多带滤波器;'DC-0'为第一频带为阻带的多带滤波器。

window为窗函数列向量,其长度为n+1。

缺省时,自动取哈明窗。

MATLAB提供的窗函数有boxcar、hanning、hamming、bartlett、blackman、kaiser、chebwin,调用方式见上节。

b为FIR滤波器系数向量,长度为n+1。

FIR滤波器的传递函数具有下列形式:

技术指标为:

采用25阶低通滤波器,汉明窗(HammingWindow)函数,截止频率为1000Hz,采样频率为8000Hz,增益40db。

框图如下:

 

 

 

N

 

Y

 

MATLAB的人机交互软件设计

6、FIR滤波器的DSP实现

在用定点DSP器件设计数字滤波器时,一个重要的问题就是由于硬件字长精度有限,运算会出现溢出。

FIR滤波器可以用较少的阶数获得很高的选择特性,所用的存储单元少、运算次数少,具经济、高效的特点。

在相位要求不敏感的场合,如语音通信等,很适合用FIR滤波器。

典型DSP系统的构成:

输入输出

其中的输入信号可以是麦克风输出的语音信号、电话线的已调数据信号,可以是编码后在数字链路上传输或存储在计算机里的摄像机图像信号等输入号。

首先进行带限滤波和抽样,然后进行A/D转换成数字比特流,由耐奎斯特样定理可知为了保证信息完整抽样频率至少是输入带限信号最高频率的2倍。

之后输入DSP芯片的是以抽样形式表示的数字信号,DSP芯片对输入信号行处理,如进行一系列的乘累加操作,最后经过处理后的数字样值经D/A换成为模拟样值再经过内插和平滑滤波就得到了连续的模拟波形。

相应程序如下:

.title"ex2"

BSP.set1;当前使用McBsp1

;McBsp内存映射寄存器

SPSA0.set038h

SPSD0.set039h

DRR10.set021h

DRR20.set020h

DXR10.set023h

DXR20.set022h

SPSA1.set048h

SPSD1.set049h

DRR11.set041h

DRR21.set040h

DXR11.set043h

DXR21.set042h

SPSA2.set034h

SPSD2.set035h

DRR12.set031h

DRR22.set030h

DXR12.set033h

DXR22.set032h

;McBspSubaddressedRegisters

SPCR1.set00h

SPCR2.set01h

RCR1.set02h

RCR2.set03h

XCR1.set04h

XCR2.set05h

SRGR1.set06h

SRGR2.set07h

MCR1.set08h

MCR2.set09h

RCERA.set0ah

RCERB.set0bh

XCERA.set0ch

XCERB.set0dh

PCR.set0eh

.ifBSP=0

SPSA.setSPSA0

SPSD.setSPSD0

RDRR.setDRR10

RDXR.setDXR10

IMASK.set0010h

.endif

.ifBSP=1

SPSA.setSPSA1

SPSD.setSPSD1

RDRR.setDRR11

RDXR.setDXR11

IMASK.set0400h

.endif

.asgAR0,FIR_INDEX_P

.asgAR4,FIR_DATA_P

.asgAR5,FIR_COFF_P

WR_SUB_REG.macroval,addr;写McBsp控制寄存器

stmaddr,SPSA

nop

stmval,SPSD

nop

.endm

RD_SUB_REG.macroaddr,acc;读McBsp控制寄存器

stm#:

addr:

SPSA

nop

ldmSPSD,acc

nop

nop

nop

.endm

WAITTRX.macro;等待串口中断

WAITR?

RD_SUB_REGSPCR1,A

and#1<<1,A

bcWAITR?

AEQ

.endm

PROGREG.macroprogword;与AD50二次通讯

stm#01h,RDXR

WAITTRX

stm#:

progword:

RDXR

WAITTRX

.endm

wait.macro

STM#0008h,AR2

RPT*AR2

NOP

.endm

.mmregs

.global_c_int00

.sect".vectors"

RESETb_c_int00

nop

nop

.space19*4*16

BRINT0brecv

nop

nop

BXINT0btrans

nop

nop

.space4*4*16

BRINT1brecv

nop

nop

BXINT1btrans

nop

nop

.space4*4*16

K_FIR_BFFR.set16

coff_fir_table.sect"coff_fir"

.word6fh,0f3h,269h,50dh,8a9h,0c99h,0ff8h,11ebh,11ebh,0ff8h,0c99h,8a9h,50dh,269h,0f3h,64h

d_data_buffer.usect"fir_bfr",40

.text

_c_int00

ld#0h,DP

stm#7ffh,SP

ssbxINTM

ssbxSXM

st#2491h,SWWSR

st#0ffe0h,PMST

ST#0h,CLKMD

tst:

BITFCLKMD,#1h

BCtst,TC

ST#1087h,CLKMD

BITFCLKMD,#1h

RPT#0FFh

NOP

stm#5000h,ar7

stm#5000h,ar6

fir_init

stm#1,AR0

stm#coff_fir_table,FIR_COFF_P

stm#d_data_buffer,FIR_DATA_P

rptzA,#K_FIR_BFFR

stlA,*FIR_DATA_P

stm#(d_data_buffer+K_FIR_BFFR-1),FIR_DATA_P

stm#K_FIR_BFFR,BK

mcbsp_init;初始化McBsp串口

rsbxCPL

nop;cpllatency

nop;cpllatency

nop;cpllatency

ld#0,DP

ssbxINTM

ssbxSXM

WR_SUB_REG#0000H,SPCR1

WR_SUB_REG#0200H,SPCR2

WR_SUB_REG#000CH,PCR

WR_SUB_REG#0000H,SPCR1

WR_SUB_REG#0000H,SPCR2

WR_SUB_REG#0040H,RCR1;16BITs

WR_SUB_REG#0004H,RCR2;IgnoreFSafterthefirst

WR_SUB_REG#0040H,XCR1;16BITs

WR_SUB_REG#0004H,XCR2;IgnoreFSafterthefirst

ld100,A

wait

andm#0ff3fh,54h;setinterruptstocomefromserialportsnotDMA

;byclearingbits6and7inDMPREC

stm#0,RDXR

WR_SUB_REG#0001H,SPCR1;启动McBsp串口

WR_SUB_REG#0201H,SPCR2

ld100,A

wait

aic_init

stm#0h,IMR

ormIMASK,IMR;二次通讯初始化AD50

stm#0ffffh,IFR

PROGREG0301h

PROGREG0410h

ldRDRR,A

ldRDRR,A

stlmA,RDXR

stlmA,RDXR

rsbxINTM

nop

nop

nop

jsnop

nop

nop

bjs

recvldmRDRR,A;ADC采样数据经滤波后发送到DAC输出

stlA,*FIR_DATA_P+0%

rptzA,(K_FIR_BFFR-1)

mac*FIR_DATA_P+0%,*FIR_COFF_P+0%,A

andm#0fffeh,ah

sthA,RDXR

rsbxXF

rete

transrsbxXF

rete

.end

7、FIR滤波器的检验

7.1检验过程

编译生成*.out文件,选择File->LoadPrograme装入*.out文件,然后选择File->Data->Load装入*.dat文件并打开,在弹出的对话框中输入起始地址indata和长度300,数据类型为data。

7.2查看输入和输出

点击View->Graph->Time/Frenquency进入图形属性对话框进行设置,然后点击ok,即是下面的窗口:

7.3滤波前后语音信号的波形及其频谱

滤波前后波形对比图

滤波前后频谱对比图

比较滤波前后语音信号的波形图、频谱图,可以得出结论:

滤波前后语音信号几乎未变,回放信号的声音和原始信号的声音也几乎一致,这也说明本课题所设计的滤波器是合理的,它能对所采集的语音信号进行高效滤波。

遇到问题及解决方法

1)实验时,未做初始化设置直接进入,没有装入gel文件及相关参数,导致输入代码编译链接后不能载入程序。

解决方法:

初始化设置软件仿真cpu和硬件仿真cpu,并设置其中所用的gel文件,保存并退出启动dsp选择忽略进入编辑编译初始化界面,由软件仿真cpu进入编辑编译工具

8、心得体会

首先,是学习上的巩固。

一方面,通过复习课本和实验,对DSP的基础知识又有了很大的巩固。

其次,通过对用Mathlab实现FIR滤波器的设计,熟悉了matlab软件的一些相关的窗口函数以及相关功能的调用,如怎样实现窗函数的调用,怎样实现滤波,等等。

第二,增进了与同学的交流。

平常除了上课,大家也比较少接触。

而每次做课程设计的时候,大家总会互相探讨,发表自己的看法,帮忙解决遇到的问题,分享自己的心得,于是交流也就不由自主的变得相对频繁些了,感觉也就更亲切了。

第三,对FIR的滤波器性能和作用有了更深一层的了解。

FIR滤波器的应用十分广泛,当今许多信号处理系统和图像处理系统等都要求信号具有线性相位特性。

在这方面,FIR滤波器有十分独特的优点,运用mathlab语言,我们能够很容易的设计出具有严格线性相位的FIR滤波系统,以及比较容易的实现。

此外,我们还知道了FIR滤波器是永远稳定的,因为FIR滤波器的冲激响应是有限长序列,其系统函数为一个多项式,它所含的的极点多为原点。

 

 

9、参考文献

【1】.程佩青,数字信号处理,清华大学出版社

【2】.邹彦.DSP原理及应用[M].北京:

电子工业出版社

【3】.王宏,MATLAB6.5在信号处理中的应用,清华大学出版社

【4】.戴明桢.TMS320C54xDSP结构、原理及应用[M].北京航空航天大学出版社

【5】.胡圣尧.DSP原理及应用[M].东南大学出版社,2008.7。

【6】.清源科技.TMS320C54xDSP应用程序设计教程[M].机械工业出版社

 

附录FIR低通滤波器程序

fs=8000;

fp=1000;fc=1200;As=100;Ap=1;

wp=2*pi*fp/fs;

ws=2*pi*fc/fs;

Bt=ws-wp;

N0=ceil(6.6*pi/Bt);%求滤波器长度

N=N0+mod(N0+1,2);

wc=(wp+ws)/2/pi;

hn=fir1(N-1,wc,hamming(N));

hd=fft(hn,1024);

w_ham=(hamming(N))';

stem(w_ham);

title('哈明w(n)');

(注:

本资料素材和资料部分来自网络,仅供参考。

请预览后才下载,期待您的好评与关注!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1