正弦信号DSP(★)

时间:2019-05-12 01:04:15下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《正弦信号DSP》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《正弦信号DSP》。

第一篇:正弦信号DSP

基于DSP的正弦信号发生器的设计

1、绪论 1.1 课题背景

数字信号处理(Digital Signal Processing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。数字信号处理是一种通过使用数学技巧执行转换或提取信息,来处理现实信号的方法,这些信号由数字序列表示。在过去的二十多年时间里,信号处理已经在通信等领域得到了极为广泛的应用。

长期以来,信号处理技术—直用于转换或产生模拟或数字信号。其中应用的最频繁的领域就是信号的滤波。此外,从数字通信、语音、音频和生物医学信号处理到检测仪器仪表和机器人技术等许多领域中,都广泛地应用了数字信号处理技术。数字信号处理己经发展成为一项成熟的技术,并且在许多应用领域逐步代替了传统的模拟信号处理系统。而本文中基于DSP技术设计的正弦波信号发生器已被广泛地应用于通信、仪器仪表和工业控制等领域的信号处理系统中。1.2 课题内容

利用基于CCS开发环境中的C54x汇编语言来实现正弦信号发生装置。

2、设计原理

一般情况,产生正弦波的方法有两种:查表法和泰勒级数展开法。查表法是使用比较普遍的方法,优点是处理速度快,调频调相容易,精度高,但需要的存储器容量很大。泰勒级数展开法需要的存储单元少,具有稳定性好,算法简单,易于编程等优点,而且展开的级数越多,失真度就越小。

本文采用了泰勒级数展开法。一个角度为θ的正弦和余弦函数,可以展开成泰勒级数,取其前5项进行近似得:

x3x5x7x9sin(x)x3!5!7!9!x2x2x2x2 x(1(1(1(1))))23456789x2x4x6x8cos(x)12!4!6!8!x2x2x2x2 1(1(1(1)))2345678式中:x为θ的弧度值,x2f/fs(fs是采样频率;f是所要发生的信号频率)

3、设计方案

本设计采用TMS320C54X系列的DSP作为正弦信号发生器的核心控制芯片。

通过计算一个角度的正弦值和余弦值程序可实现正弦波,其步骤如下:

开 始初始化设置调用sin和cos程序计算0~45°的值Sin2α=2sinα*cosα求0~90°的sin值(间隔为1°)1.利用sinx和cosx子程序,计算0—45°(间 隔为0.5°)的正弦和余弦值

2.利用sin(2x)=2sin(x)cos(x)公式,计算0—90°的正弦值(间隔为1°)3.通过复制,获得0—359°的正弦值 4.将0—359°的正弦值重复从PA口输出,遍可得到正弦波

整个系统相应的软件流程图如右图所示。

图1 程序流程图

结 束正弦波重复向PA口输出重复得到0~359°正弦值

4、程序设计

4.1 产生正弦波程序清单sin.asm.title “sin.asm” //为汇编文件取名为“sin.asm”.mmregs //定义存储器映像寄存器.def _c_int00.ref sinx,d_xs,d_sinx,cosx,d_xc,d_cosx //定义标号 sin_x:.usect “sin_x”,360 //为“sin_x”保留360个存储空间 STACK:.usect “STACK”,10 //为堆栈保留10个存储空间 k_theta.set 286 //theta=pi/360(0.5deg)PA0.set 0 _c_int00.text //定义文本程序代码段 STM #STACK+10,SP //设置堆栈指针

STM k_theta,AR0 //AR0-->K_theta(increment)STM 0,AR1 //(AR1)=X(rad)STM #sin_x,AR6 //AR6→sin(x)STM #90,BRC //form sin0(deg.)—sin90(deg)RPTB loop1-1 //重复执行块语句(下条语句开始至 loop1-1)91次 LDM AR1,A LD #d_xs,DP STL A,@d_xs //(A)低16位→d_xs STL A,@d_xc //(A)CALL sinx // CALL cosx // LD #d_sinx,DP //DP LD @d_sinx,16,A //A=sin(x)MPYA @d_cosx //B= sin(x)*cos(x)STH B,1,*AR6+ //AR6 MAR *AR1+0 //loop1: STM #sin_x+89,AR7 //sin91(deg.)STM #88,BRC RPTB loop2-1 // LD *AR7-,A //((AR7))STL A,*AR6+ //(A)loop2: STM #179,BRC //sin180(deg.)(BRC)=179, STM #sin_x,AR7 //AR7 RPTB loop3-1 LD *AR7+,A //((AR7))NEG A // STL A,*AR6+ //Aloop3: STM #sin_x,AR6 //AR6 STM #1,AR0 //AR STM #360,bk //BKloop4: PORTW *AR6+0%,PA0 //PA0=*AR6+0%, B loop4 sinx:.def d_xs,d_sinx //.data //低16位→d_xc 调用sinx程序 调用cosx程序 ←d_sinx →2*sin(x)*cos(x)修改辅助寄存器AR1

—sin179(deg.)重复执行下条指令至loop2-1处90次 →A,然后AR7减去1 低16位→AR6

—sin359(deg.)重复执行180次 指向sin_x首地址 →A,然后AR7加1 累加器变负 低16位→AR6 指向sin_x ←01 ←360

向PA0输出数据 定义标号d_xs,d_sinx 定义数据代码段 table_s.word 01c7h //c1=1/(8*9).word 030bh //c1=1/(6*7).word 0666h //c1=1/(4*5).word 1556h //c1=1/(2*3)d_coef_s.usect “coef_s”,4 //为“coef_s”保留4个存储空间 d_xs.usect “sin_vars”,1 //为d_xs中sin_vars保留1个存

储空间

d_squr_xs.usect “sin_vars”,1 //d_temp_s.usect “sin_vars”,1 // d_sinx.usect “sin_vars”,1 //c_l_s.usect “sin_vars”,1 //.text // SSBX FRCT // STM #d_coef_s,AR5 //AR5 RPT #3 // MVPD #table_s,*AR5+ //table_s STM #d_coef_s,AR3 //AR3 STM #d_xs,AR2 //AR2 STM #c_l_s,AR4 //AR4 ST #7FFFh,c_l_s //7FFFh SQUR *AR2+,A //AR2 ST A,*AR2 // ||LD *AR4,B // MASR *AR2+,*AR3+,B,A // MPYA A // STH A,*AR2 // MASR *AR2-,*AR3+,B,A // MPYA *AR2+ //AR2 ST B,*AR2 // ||LD *AR4,B //为d_squr_xs中sin_vars保留1个

存储空间

为d_temp_s中sin_vars保留1个 存储空间

为d_sinx中sin_vars保留1个存储

空间

为d_xs中sin_vars保留1个存储 空间

定义代码开始段

设置FRCT=1以解决冗余符号位 指向d_coef_s首地址 重复下条指令4次

中的数复制到AR5指向 的单元

指向d_coef_s首地址 指向d_xs首地址 指向c_l_s首地址 →c_l_s

指向累加器A中的数值求其平方(A)左移16位→AR2(AR4)左移16位→B

从累加器A中减去(AR2)*(AR3)操作数与累加器A中高位相乘(A)高16位→AR2

从累加器A中减去(AR2)*(AR3)指向的数与累加器A的高16位相乘(B)左移16位→AR2(AR4)左移16位→B MASR *AR2-,*AR3+,B,A //从累加器A中减去(AR2)*(AR3)MPYA *AR2+ //与累加器A中高16位相乘 ST B,*AR2 //(B)左移16位→AR2 ||LD *AR4,B //(AR4)左移16位→B MASR *AR2-,*AR3+,B,A //从累加器A中减去(AR2)*(AR3)MPYA d_xs //d_xs指向的操作数与累加器A中高16位相乘 STH B,d_sinx //(B)高16位→d_sinx RET //cosx:.def d_xc,d_cosx //d_coef_c.usect “coef_c”,4 //.data //table_c.word 0249h //c1=1/(7*8).word 0444h //c1=1/(6*5).word 0aabh //c1=1/(3*4).word 4000h //c1=1/2 d_xc.usect “cos_vars”,1 //d_squr_xc.usect “cos_vars”,1 // d_temp_c.usect “cos_vars”,1 //d_cosx.usect “cos_vars”,1 //c_l_c.usect “cos_vars”,1 //.text // SSBX FRCT //FRCT=1 STM #d_coef_c,AR5 //AR5 RPT #3 // MVPD #table_c,*AR5+ // STM #d_coef_c,AR3 //AR3 STM #d_xc,AR2 //AR2 STM #c_l_c,AR4 //AR4 ST #7FFFh,c_l_c //7FFFh SQUR *AR2+,A //返回 定义标号d_xc,d_cosx 为coef_c保留4个存储空间 定义数据代码段 为d_xc中cos_vars保存1个存储单元 为d_squr_xc中cos_vars保存1个 存储单元

为d_temp_c中cos_vars保存1个存储

单元

为d_cosx中cos_vars保存1个存储单

为c_l_c中cos_vars保存1个存储单

定义文本代码段

以清除冗余符号位 指向d_coef_c首地址 重复下条指令4次

把table_c中的数复制到中AR5 指向d_coef_c首地址 指向d_xc首地址 指向c_l_c首地址 →c_l_c

求x的平方存放在累加器A中 ST A,*AR2 //(A)左移16位→AR2 ||LD *AR4,B //(AR4)左移16位→B MASR *AR2+,*AR3+,B,A //A=1-x^2/56,T=x^2 MPYA A //A=T*A=x^2(1-x^2/56)STH A,*AR2 //(d_temp)= x^2(1-x^2/56)MASR *AR2-,*AR3+,B,A //A=1-x^2/30(1-x^2/56)T= x^2(1-x^2/56)MPYA *AR2+ //B=x^2(1-x^2/30(1-x^2/56))ST B,*AR2 //(d_temp)= x^2(1-x^2/30(1-x^2/56))||LD *AR4,B //B=1 MASR *AR2-,*AR3+,B,A //A= 1-x^2/12(1-x^2/30(1-x^2/56))SFTA A,-1,A NEG A MPYA *AR2+ //B=1-x^2/2(1-x^2/12(1-x^2/30(1-x^2/56)))MAR *AR2+ RETD ADD *AR4,16,B //B=1-x^2/2(1-x^2/12(1-x^2/30(1-x^2/56)))STH B,*AR2 //cos(theta)RET.end 4.2 正弦波程序链接命令文件sin.cmd.cmd文件描述输入文件和输出文件,说明系统中有哪些可用存储器、程序段、堆栈及复位向量和中断向量等安排在什么地方。其中MEMORY段就是用来规定目标存储器的模型,通过这条指令,可以定义系统中所包含的各种形式的存储器,以及它们占据的地址范围;SECTIONS段说明如何将输入段组合成输出段以及在可执行文件中定义输出段、规定输出段在存储器中的位置等。MEMORY { PAGE 0: EPROM: org = 0E000h, len = 1000h VECS: org = 0FF80h, len = 0080h PAGE 1: SPRAM: org = 0060h, len = 0020h DARAM1: org = 0080h, len = 0010h DARAM2: org = 0090h, len = 0010h DARAM3: org = 0200h, len = 0200h } SECTIONS {.text :>EPROM PAGE 0 //文本代码段其实地址为0E000h,长度为 1000h.data :>EPROM PAGE 0 //数据代码段其实地址为0D000h STACK :>SPRAM PAGE 1 //堆栈起始地址为0060h,长度为0020h sin_vars :>DARAM1 PAGE 1 //标号为sin_vars段的起始地址为0080

长度为0010h coef_s :>DARAM1 PAGE 1 //标号为coef_s段的起始地址为0070h 长度为0010h cos_vars :>DARAM2 PAGE 1 //标号为cos_vars段的起始地址为0090h 长度为0010h coef_c :>DARAM2 PAGE 1 //标号为coef_c段的起始地址为0080h 长度为0020h sin_x : align(512){} > DARAM3 PAGE 1.vectors :>VECS PAGE 0 }

5、仿真与调试

5.1 CCS工程项目的调试

利用 CCS 集成开发环境,用户可以在一个开发环境下完成工程定义、程序 编辑、编译链接、调试和数据分析等工作环节。⑴ 创建工程(project)文件

选择 Project→New,在“Project”文本框中键入将要创建的工程项目名,本例工程项目名为“sin” ⑵ 向工程中添加文件

选择 Project→Add Files to Project,将 sine.asm文件自动添加到 Project→Source 中。用同样的方法 将 sine.cmd 文件添加到对应的目录中。⑶ 构建工程,工程所需文件编辑完成后,可以对该工程进行编译链接,产生可执行文件,为调试做准备。

选择 Project→Build,系统提示没有出错信息后,系统自动生成一个可执行文件,sine.out 文件。⑷ 载入可执行文件 选择 File→Load Program 载入编译链接好的可执行文件sine.out ⑸ 运行程序

选择 Debug→Run运行,可以通过查看内存表等方法,看到程序运行的结果。5.2 仿真结果

选择 View→Graph→Time/Frequence

得到的正弦波形如下图所示:

输出结果显示,在CCS图形观察窗口得到了频率稳定,信号干扰小,波形失真度较小的正弦信号。

6、心得体会

通过这次的课程设计使我进一步加深了对于DSP这门课程的学习以及对于平时所学内容的实际应用。在设计中发现问题和同学互相讨论研究,并在编程过程中进一步提高自身的创作、创新水平,扎实基础,扩展所学。在输入程序时发现编程确实是要求很认真细心的,如果稍有差错就会导致整个程序的错误,也由此体现了DSP这门课程的严谨性。相信在以后的学习中一定会更好的应用所学内容的。

第二篇:DSP语音信号处理

语音信号处理是研究数字信号处理技术和语音信号进行处理的一门学科,是一门新型的学科,是在多门学科基础上发展起来的综合性技术,它涉及到数字信号处理、模式识别、语言学。语音信号处理是研究用数字信号处理技术对语音信号处理的一门学科。处理的目的是要得到一些语音参数以便高效的传输或存储;或者是通过处理的某种运算以达到某种用途的要求。语音信号处理又是一门边缘学科。如上所诉,它是“语言语音学”与“数字信号处理”两个学科相结合的产物。

语音信号处理属于信息科学的一个重要分支,大规模集成技术的高度发展和计算机技术的飞速前进,推动了这一技术的发展。在数字音频技术和多媒体技术迅速发展的今天,传统的磁带语音录放系统因体积大、使用不便、放音不清晰而受到了巨大挑战。本次课程设计提出的体积小巧,功耗低的数字化语音存储与回放系统,可以有效的解决传统的语音录放系统在电子与信息处理的使用中受到的限制。

本文提出了语音信号处理课程建设的实验环节中的一些考虑,作为专业课程的学习,实验内容不能仅仅停留在验证性实验上,还应增加实验延伸的设计要求,是学生加深对理论分析认识的同时,强调培养学生的实际动手能力和知识综合运用能力。从而提高语音信号的教学和实验的质量。实验内容采用MATLAB编程实现,不仅易于语音信号处理的实现,更易引导学生完成实验延伸的设计。

第一章 绪论

1.1选题背景

在我们的现实生活中从磁带、录像带到CD、VCD、DVD;从黑白电视机、彩色电视机、高清晰度电视机到具有数字信号处理功能的电视机;从留声机、录音机到语音信箱;现在正出在模拟信息到数字信息的变革之中,传统的磁带语音录放系统因其体积大,使用不便,在电子与信息处理的使用中受到许多限制。

虽然,目前广播电视系统尚未实现真正的数字化,相信在不久的将来,真正的数字电视、数字收音机、数字收录机将进入家庭。所以,研究音频信号的数字化存储、处理和回放系统有着很重要的现实意义。

通过设计语音信号实验箱可以对语音信号实现各种形式的变换,因此学会对语音信号的处理,也可自行研究将此语音处理技术应用到现实生活中。

1.2课题意义

语音信号处理的一门比较实用的电子工程的专业课程,语音是人类获取信息的重要来源和利用信息的重要手段,通过语言相互传递信息是人类最重要的基本功能之一,语音是人类特有的功能,它是创造和记载几千年来人类文明史的根本手段,是人类最重要、最有效、最常用和最方便的交换信息的形式。

语音信号处理是研究用数字信号处理技术对语音信号进行处理的一门学科,它是一门新兴的学科,同时又是综合性的多学科领域刚也涉及面很广的交叉学科。

第二章 课程设计要求及系统原理

2.1 课程设计基本要求

(1)学会MATLAB的使用,掌握MATLAB的程序设计方法;

(2)掌握在windows环境下语音信号的采集方法;

(3)掌握数字信号处理的基本概念,基本理论和基本方法;

(4)掌握MATLAB设计方法;

(5)学会用MATLAB对信号进行分析和处理。

2.2 系统基本原理

语音采集原理是,人耳能听到的声音是一种范围为20Hz—20kHz,而一般语音频率最高为3.4kHz。语音的采集是指语音声波信号经麦克风和高频放大器转换成有一定幅度的模拟量电信号,然后再转换成数字量的全过程。

本次设计的基本原理是对语音的录音和放音进行数字化控制。其中,关键技术在于:为了增加语音存储时间,提高存储器的利用率,采用了非失真压缩算法对语音信号进行压缩后再存储,而在回放时再进行解压缩;同时,对输入语音信号进行数字滤波以抑制杂音和干扰,从而确保了语音回放的可靠质量。

通过设计一个GUI实验箱,并添加相应的控制控件,添加一个声音文件,通过MATLAB编程,使其通过各种按钮实现语音信号处理的各种功能,最后做成一个完整的语音信号处理实验箱。

第三章 设计方案论证

3.1 设计理论依据

3.1.1采样定理:

在进行模拟/数字信号的转换过程中,当采样频率fs.max大于信号中最高频率fmax的2倍时,则采样之后的数字信号完整的保留了原始信号中的信号,一般实际应用中保证采样频率为信号最高频率的5—10倍;采样定理又称奈奎斯特定理。

3.1.2采样频率:

采样频率是指计算机每秒钟采集多少个声音样本,是描述声音文件的音质、音调、衡量声卡、声音文件的质量标准。采样频率越高,即采样的间隔时间越短,则在单位时间内计算机得到的声音样本数据就越多,对声音波形的表示也就越精确,采样频率与声音频率之间有一定的关系,根据奈奎斯特理论,只有采样频率高于声音信号最高频率的2倍的时候,才能把数字信号表示的声音还原成为原来的声音,这就是说采样频率是衡量声卡采集、记录和还原声音文件的质量标准。

3.1.3采样位数与采样频率

采样位数即采样值或取样值,用来衡量声音波动变化的参数,是指声卡在采集和播放声音文件时候使用数字声音信号的二进制为数。采样频率是指录音设备在一秒钟内对声音信号的采样次数,采样频率越高声音的还原就越真实越自然。

采样位数和采样频率对于音频接口来说是最为重要的两个基本指标,也是选择音频接口的两个重要标准。无论采样频率如何,理论上来说采样的位数决定了音频数据最大的力度范围。每增加一个采样位数相当于力度范围增加了6dB。采样位数越多则捕捉到的信号越精确。对于采样率来说你可以想象它类似于一个照相机。显然采样率越高,计算机提取的声音越多,对于原始的还原也越加精确。

第四章 图形用户界面设计

4.1 图形用户界面概念

图形用户界面或图形用户接口是指采用图形方式显示的计算机操作环境由用户接口。与早期计算机使用的命令行界面相比,图形界面对于用户来说更为简便易用。

GUI是MATLAB提供的图形用户界面开发环境,提供了一系列用于创建图形用户界面的工具,从而简化界面布局和编程工作。

4.2用户界面设计

4.2.1 GUI设计模板

在MATLAB主窗口中,选择File菜单中的New菜单项,再选择其中的GUI命令,就会显示图形用户界面的设计模板。

MATLAB为GUI设计一共准备了四个模板,分别是Blank GUI、GUI with Uicontrols、GUI with Axes and Menu、Modal Question Dialog。

当用户选择不同的模板时,在GUI设计模板界面的右边就会显示出与该模板对应的GUI图形。

4.2.2 GUI设计窗口

在GUI设计模板中选中一个模板,然后单击OK按钮,就会显示GUI设计窗口,选择不同的GUI设计模式时,在GUI设计窗口中显示的结果是不一样的。

GUI设计窗口由菜单栏、工具栏、空间工具栏以及图形对象设计区等部分组成。GUI设计窗口的菜单栏有File、Edit、View、Layout、Tools和Help六个菜单项,使用其中的命令可以完成图形用户界面的设计操作。

4.2.3 GUI设计窗口的基本操作

(1)前面板的设计:在GUI设计窗口创建图形对象后,通过双击该对象,就会显示该对象的属性编辑器。如下图所示。例如,创建一个Push Button对象,并设计该对象的属性值。

图4-1 按钮属性编辑器

通过以上的按钮属性编辑器可以根据个人情况对按钮的名称、颜色、大小等方面的属性进行修改,使按钮在视觉上变的更加完美。

(2)按钮功能的实现:在GUI设计窗口创建按钮后,通过右键单击按钮,选择View callbacks下的callback对相应的按钮进行编程,使按钮实现相应的功能,如下图所示对按钮的响应功能进行设置。

图4-2 按钮功能编辑器

进入到按钮程序编辑窗口,通过编程即可实现按钮的相应功能,如下图:

图4-3 按钮的编程实现界面

通过对各个按钮控件的修改,和对m文件程序的添加就完成对GUI窗口的设计,最后得到的图形化操作界面如下图所示:

图4-4 图形化操作界面

4.2.4 语音的录入与打开

在MATLAB中,[y,fa,bits]=wavread(‘Blip’,[N1 N2]);用于读取语音,7

采样值放在向y中,fs表示采样频率,bits表示采样位数。[N1 N2]表示读取从N1点到N2点的值。

Suond(x,fs,bits);用于对声音的回放,向量y则就代表了一个信号也就是说可以像处理一个信号表达式一样处理这个声音信号。

第五章 课程设计的软件实现

5.1 部分函数语法格式

读wav文件: x=wavread(‘filename’)数组a及b中元素相乘: a.*b 创建图形窗口命令: figure 绘图函数: plot(x)坐标轴: axis([xmin xmax ymin ymax])坐标轴注解: xlabel(‘„’)ylabel(‘„’)图例注解: legend(‘„’)一阶高通滤波器: y=filter([1-0.09375],1,x)分帧函数: f=enframe(x,len,inc)x为输入语音信号,len指定了帧长,inc指定帧移,函数返回为nXlen的一个矩阵,每一行都是一帧数据。

5.2语音信号处理的相关函数

5.2.1语音信号的短时谱:

周期性声门波可表示为:

(5-1)其中,g[n]是声门波的单周期的波形,p[n]是间隔为P的周期采样序列。当u[n]通过线性非时变声道,且该声道的单位冲击响应为h[n]时,声道输出为:

(5-2)为了观察一段语音,需要降生到输出乘以一个一时刻τ 为中心的窗函数 w[n,τ] ,即得到:

(5-3)

这段语音信号的频域表达式为:

(5-4)

即语音信号的谱包络为

语谱图就是现实时变频谱幅度特征的图形表达式为:

(5-5)

将语音信号短时谱程序写入到MATLAB中得到单色语谱图的波形如下:

图5-1 语音信号单色语谱图

5.2.2 自相关方法估计语音信号的声道参数:

由均方预测误差最小的得到正则方程:

(5-6)

其中,(5-7)

在最佳解时的误差为

(5-8)

在自相关法中式5-6,式5-8变为

(5-9)

(5-10)由式5-9和式5-10可列出方程组式5-11

(5-11)

解方程组式5-9求出线性预测系数,通过误差式5-11可求出增益G

(5-12)

加窗后信号频谱图如下:

图5-2 加窗后信号频谱图

通过以上的方法,改变参数分别求得4极点模型频率响应和6极点模型频率响应,6极点波形如下图所示:

图5-3 六极点波形图

最后通过以上方法用一个函数分别实现以上三个功能,三个波形显示在一个界面,通过观察图形,查看它们之间的分别。三者比较所得到的波形如下:

图5-4 三者比较波形图

5.2.3 基音周期检测

数据为浊音语音信号speech1_10k(10000样点/秒)用25ms的汉明窗对语音信号speech1_10k进行加窗处理,并画出所得到的加窗信号的自相关函数,再用根据中心消波法及三电平中心消波法原理改进程序,最后对比中方法基音检测的效果并分析结果。

实验原理及方法

(1)自相关检测原理:对于离散的数字语音信号序列x(n),如果周期N,则自相关函数也是同周期的周期函数。即:x(n)=x(n+N)。清音信号没有周期性,他的自相关函数也没有周期。浊音新海具有准周期性。自相关基音检测正是利用这一性质对语音信号进行基音检测的。

(2)中心消波法检测原理:中心消波处理是使用如下图所示的中心消波函数进行处理的:

图5-5 中心消波检测图

(3)三电平消波法原理:为了减少自相关计算中的乘法运算,可以把上述中心消波以后的信号y(n)的自相关用两个信号的互相关代替,其中一个信号是y(n)另一个信号是对y(n)进行三电平量化产生的结果。且这个信号有三种可能的取值,因而这里的互相关计算只需要做加减法,而这个互相关序列的周期性与y(n)的自相关序列是近似相同的。

三电平法对语音信号处理得到的波形如下:

图5-6 三电平法波形图

中心消波法得到的波形如下图:

图5-7 中心消波法波形图

5.3 GUI实验箱操作界面设计

通过对各个控件的编程和对参数的设计,最后得到的GUI实验箱操作界

面如下图所示,通过界面上的各个按钮即可实现相应的功能。

图5-8 GUI实验箱操作界面

第六章 心得体会

通过本次课程设计完成了对语音信号的读取与打开,与课题的要求十分相符;初略的完成了界面的设计,但也存在相当的不足,达到了打开语音文件,显示已定波形。语音信号处理时语音学与数字信号处理技术相结合的交叉学科,将语音当做一种特殊的信号,即一种“复杂向量”来看待。也就是说,体现了数字信号处理技术。

本次课程设计时希望将数字信号处理技术应用与某一实际领域,这里就是指对语音的处理。作为存储与计算机中的语音信号,其本身就是离散化了的向量,我们只需要将这些离散的量提取出来美酒可以对其进行处理了。

本次课设,用到了处理数字信号的强有力工具MATLAB,通过MATLAB李的几个命令函数的调用,很轻易的在实际化语音与数字信号的理论之间搭了一座桥。

最后,还利用了MATLAB的另一强大功能——GUI界面设计。设计出了一个建议的用户应用界面,可以让人实现界面操作。

通过本次课程设计让我更加了解了语音信号处理在现实中的强大的应用空间,同时查阅了很多相关的资料,应用MTALAB软件来完成,熟练掌握了MATLAB软件,本次课程设计要求用GUI设计模块,查阅了很多资料,更加深刻的陆奥了了这方面知识。

本次课程设计,我明白了理论的学习需要在实践中才能得到巩固。在课程设计中,只有动手慢慢研究,才能真正了解MATLAB软件平台中可以直接设计数字滤波器的各个函数的调用,对设计GUI实验箱的所有函数的运用有了比较好的认识。

通过这个课程设计,我学到了很多MATLAB和语音信号的知识,提高了自己在语音信号设计方面的知识能力,动手能力和思维能力都得到了一定的提升,希望自己以后可以更多的继续学习这一门课程设计方面的知识。

附 录

1.源程序代码:

参考文献

[1] 刘庆华 陈紫强《基于MATLAB和DSP的语音信号处理课程的建设》 电气电子教学学报 2006 10(3):124-128 [2] 张力 《MATLAB在语音信号处理辅助教学中的应用》 电气电子教学学报 2005 27卷2期:96-99 [3] 邓立新 杨震《信息技术融入“语音信号处理”课程的教学实践》电气电子教学学报 2005 27卷5期:13-16 [4] 胡航,《语音信号处理》 哈尔滨工业大学出版社 2005年2月,第二版:135-137 [5] 张平,《MATLAB基础与应用》 北京航空航天大学出版社 2007,第二版:85-92 [6] 谢德芳 《数字信号处理》 北京科学出版社 2005,第一版

[7] 张雄伟 《现代语音处理技术及应用》 机械工业出版社 2006,第二版 [8] 吴家安 《语音编码技术及应用》 机械工业出版社 2006 第一版 [9] 刘幺和 宋庭新 《语音识别与控制应用技术》 科学出版社 2008 第二版

[10] 李昌立 吴善培 《数字语音编码实用教程》 人民邮电出版社 2004 第一版

[11] 姚天仁 《数字语音处理》 华中科技大学出版社 1992 第二版 [12] 朱敏雄 《计算机语音技术(修订版)》 北京航空航天大学出版社 2002 第一版

[13] 王炳锡 《语音编码》 西安电子科技大学出版社 2002 第一版

第三篇:DSP音频信号发生器

大学课程设计报告

音频信号发生器

设 计 人: 专

业: 班

级: 学

号: 指导教师:

二零一四年

付路 电子信息工程 电子111501 201115020104 宁爱平

目录

一. 引言-------------第2页 二.系统结构及原理----第2页 三. 硬件设计---------第3页

3.1 MMC/SD卡接口电路-----------------------------第3页 3.2 上位机和单片机通信---------------------------第4页 3.3 信号调理电路--第5页 四. 软件设计---------第7页

4.1 系统初始化---第7页 4.2 MMC/SD卡初始化------------------------------第7页 4.3 MMC/SD卡单块写数据--------------------------第8页 五. 结束语----------第11页

一. 引言

目前,单片机系统以价格低廉、开发环境完备、开发工具齐全、应用资料众多、功能强大且程序易于移植等优点而得到广泛应用。同时,随着信息化进程、计算机科学与技术以及信号处理理论与方法的迅速发展,需要的数据量越来越大,对数据存储也提出了更高要求。MMC/SD卡以其价格、体积、读取速度等特点成为现今大多数便携式嵌入式设备的首选。

二.系统结构及原理

音频信号发生器的系统结构如图1所示,它主要由8051F330单片机、MMC/SD卡存储器、RS232串行通信接口、上位机、液晶显示、键盘以及信号调理电路等部分组成。将写入MMC/SD卡中的音频数据存储在上位机,单片机通过RS232串行通信接口写入MMC/SD卡,以中断方式读取键盘接口命令,并根据命令控制选择相应的音频信号数据,再由信号调理电路输出不同频率和强度的音频信号,系统通过液晶显示模块显示信号频率、信号强度及信号类型。该系统突出的特点是上位机采用Lab Windows/CVI软件,通过RS232串行通信接口与单片机通讯;以文本格式存储在上位机的音频信息则通过RS232串行通信接口下载到MMC/SD卡。系统控制核心选用美国Cygnal公司的8051F330单片机,C8051F330微控制器采用独特的CIP-8051架构,对指令运行实行流水作业,大大提高了指令的运行速度;采用多功能存储卡-MMC/SD卡作为存储介质。MMC/SD卡内置控制电路,可应用于手机、数码相机、MP3等多种数字设备,反复记录30万次,具有较高的性价比;液晶显示屏采用OCM12864点阵液晶显示模块,由单片机时序控制,具有8位数据线、6条控制线和电源线。

三. 硬件设计

3.1 MMC/SD卡接口电路

MMC/SD卡在音频信号发生器系统中是以数字量形式存储音频信息。MMC/SD卡有两种工作模式,即MMC/SD模式和SPI模式。从实际应用角度出发,SPI模式设计简单,操作方便,但数据传输速率不如MMC/SD模式,本系统采用SPI模式。MMC/SD卡工作在SPI模式下,其各个引脚功能的定义,如表1所示。CS是MMC/SD卡的片选线,在SPI模式下,CS必须保持低电平有效;DI不但传输数据,还发送命令,传输方向是由单片机到MMC/SD卡;同样DO除了发送数据外还传送应答信号,传输方向是由MMC/SD卡到;SCLK是操作MMC/SD卡的时钟线。将C8051F330的相应交叉开关配置为SPI模式,与MMC/SD卡对应的引脚连接。针对SPI总线线路上增加了上拉电阻。MMC/SD卡与单片机接口电路。如图2所示。

单片机

3.2 上位机和单片机通信

上位机采用Lab Windows/CVI软件通过串口向单片机发送音频信息。单片机将接收到的信息数据写入MMC/SD卡。Lab Windows/CVI软件的音频信息是由WinHex软件将原始文件转换成16进制的数字量,该软件可对多种语音信号进行转换。上位机与单片机的通信是通过RS232串口通讯器件完成的。当上位机与音频信号发生器相距较远.不能直接用RS232器件将其连接时,可将RS232转换为CAN,通过CAN总线实现串口设备的网络互联。RS232标准电平采用负逻辑,规定+3 V~+15 V的任意电平为逻辑“0”电平,-3 V~-15 V的任意电平为逻辑“1”电平。而CAN信号则使用差分电压传输,2条信号线称为“CAN_H”和“CAN_L”,静态时均为2.5 V,此时状态表示为逻辑“1”,也可称为“隐性”;CAN_H比CAN_L高时表示逻辑“0”,称为“显性”。显性时,通常为:CAN_H=3.5 V,CAN_L=1.5 V。

RS232串口的帧格式:1位起始位,8位数据位,1位可编程的第9位(此位为发送和接收的地址/数据位),1位停止位。而CAN的数据帧格式:帧信息+ID+数据(分为标准帧和扩展帧两种格式)。

3.3 信号调理电路

存储在MMC/SD卡中的数据是音频信号发生器的源代码。单片机将这些数据从MMC/SD卡中读出,经过单片机内部数模转换,以模拟量的形式从P01输出。该模拟信号经信号调理电路可外接耳机或音响播放十几种音律。信号调理电路如图3所示。由P01输出的信号经LM324放大后,由多个LM324并联实现信号跟随和功率驱动。图中只画出了2个跟随器,实际应用中根据需要可以并联10多个信号跟随器。

四. 软件设计

4.1 系统初始化

系统初始化可完成C8051F330的I/O口、晶体振荡器、SPI总线和C8051F330片上串口的初始化设置。用C语言编写的程序代码如上:

4.2 MMC/SD卡初始化

MMC/SD卡上电后默认为MMC/SD模式,要使MMC/SD卡工作在SPI模式下,在MMC/SD卡初始化时,当片选线(CS)被拉低时发送复位命令CMD0,如收到应答信号01H,表示已将卡置为闲置状态;如收到应答信号不是01H,则表示出错。然后向MMC/SD卡发送命令CMD1,收到正确的应答信号00H之后,才会使MMC/SD卡进入SPI模式。MMC/SD卡初始化流程如图4所示。

MMC/SD卡协议是一种问答式协议。首先单片机发送CMD。接着由MMC/SD卡发送回应RES。MMC/SD卡的命令长度都是6字节,命令总是以左边的起始位开始,右边的结束位结束。其具体的命令格式如表2所示,MMC/SD卡的应答格式分为4种,分别是R1、R1b、R2和R3应答。

4.3 MMC/SD卡单块写数据

MMC/SD卡单块写数据主要实现C8051F330对MMC/SD卡的单块写操作。MMC/SD卡块的默认大小为512字节。当MMC/SD卡接收到单块写命令CMD24后,MMC/SD卡向单片机发送应答命令,并且等着单片机发送数据块。当应答命令R1为0时,说明可以发送512个字节数据。MMC/SD卡对接收到的数据块都通过一个l字节长的命令确认,当其低5位二进制数据为00101时,数据块才确认数据块写入MMC/SD卡。在数据块发送中,共发送515个字节数据,其中,第一个字节为0xFE,随后是512字节的用户数据块,最后是2个字节的CRC。单块数据写入MMC/SD卡的流程图如图5所示。

采用C语言编写的程序代码如下:

#include “scancode.h” #define TIM *(int *)0x24 #define PRD *(int *)0x25 #define TCR #define IMR #define IFR #define PMST *(int *)0x26 *(int *)0x0 *(int *)0x1 *(int *)0x1d

#define SPSA0 *(unsigned int *)0x38 #define SPSD0 *(unsigned int *)0x39 #define SPSA1 *(unsigned int *)0x48 #define SPSD1 *(unsigned int *)0x49 #define nMusicNumber 40

#define REGISTERCLKMD(*(unsigned int *)0x58)#define WAITSTATUS(*(unsigned int *)0x28)

ioport unsigned char port8000;ioport unsigned char port8001;ioport unsigned char port8002;ioport unsigned char port8007;#define CTRGR port8000 #define CTRKEY port8001 #define CTRCLKEY port8002 #define CTRLR port8007

void Delay(unsigned int nTime);void interrupt time(void);// 音符数据

unsigned int music[nMusicNumber][2]= { {182,480},{151,480},{135,480},{121,480},{135,480},{151,480},{182,480},{0,480}, {182,480},{151,480},{135,480},{121,480},{135,480},{151,480},{182,480},{0,480}, {182,240},{151,240},{135,240},{121,240},{135,240},{151,240},{182,240},{0,240}, {182,240},{151,240},{135,240},{121,240},{135,240},{151,240},{182,240},{0,240}, {182,1920},{151,1920},{135,1920},{121,1920},{135,1920},{151,1920},{182,1920},{0,1920} };unsigned int uWork;main(){

unsigned int uWork1;int j,nCount,nCount1,nScanCode;nCount=nCount1=0;REGISTERCLKMD=0;CTRGR=0;CTRGR=0x80;

CTRGR=8;CTRLR=0;

// 关闭东西方向的交通灯

CTRLR=0x40;// 关闭南北方向的交通灯 uWork1=CTRCLKEY;

// 清除键盘缓冲区

for(j=0;j

PMST = uWork1&0xff;IMR = 0x8;TCR = 0x412;TIM = 0;PRD = music[nCount][0];TCR = 0x422;IFR = 0x100;asm(“ rsbx j=0;while(j<1){

nCount1=0;nScanCode=CTRKEY;// 读扫描码 nScanCode&=0x0ff;// 低8位 uWork1=CTRCLKEY;

// 清除键盘缓冲区

INTM”);

// 频率设置

if(nScanCode!=0)

{ } nCount1++;Delay(music[nCount][1]/3*12);// 音长 nCount++;if(nCount>=nMusicNumber){ } if(music[nCount][0]==0)TCR=0x412;

// 静音 nCount=0;j++;if(nScanCode==SCANCODE_Enter)

break;else { PRD = music[nCount][0];// 切换音符 TCR = 0x422;} } }

void Delay(unsigned int nDelay){

}

void interrupt time(void){ SPSA0=1;

// set McBSP0's SPCR2 int i,j,k=0;for(i=0;i

}

uWork&=0xfffe;// set XRST=0 SPSD0=uWork;SPSA0=0x0e;// set McBSP0's PCR uWork=SPSD0;uWork|=0x2000;// set XIOEN=1, Enable IO,DX for output uWork^=0x20;SPSD0=uWork;

// DX=^DX 五. 结束语

根据MMC/SD卡的SPI协议,采用单片机实现与MMC/SD卡的接口,解决了嵌入式系统大容量数据存储问题,利用上位机可以方便的读取写入数据。本系统的存储速度可达20 Mb/s,完全满足信号发生器所需的下载速度和音频播放速度。所编写的MMC/SD卡驱动程序已经应用到嵌入式信号发生器系统中,实现了数据的安全、稳定的存储。相对于MMC/SD卡无论是读写速度还是存储容量都得到了极大提高。在SPI模式下,SD卡与MMC卡相兼容,即就是说SD卡程序也适用于MMC卡。

第四篇:DSP语音信号处理

目 录

第一章 绪

论.........................................................................................................1

1.1课程设计的目的及意义..................................................................................1 1.2设计要求..........................................................................................................1 1.3 研究内容.........................................................................................................1

第二章 语音信号处理理论基础........................................................................3

第三章

系统方案论证.....................................................................................5 第四章

GUI设计实现.....................................................................................6

4.1 图形用户界面概念.........................................................................................6 4.2用户界面设计..................................................................................................6

4.2.1 GUI设计模板........................................................................................6 4.2.2 GUI设计窗口........................................................................................6 4.2.3 GUI设计窗口的基本操作....................................................................6 4.2.4 语音的录入与打开................................................................................9 4.3课程设计的软件实现....................................................................................9

4.3.1语音信号的短时谱.................................................................................9 4.3.2 自相关方法估计语音信号的声道参数..............................................10 4.3.3 基音周期检测......................................................................................12 4.4 GUI实验箱操作界面设计............................................................................14 第五章 心得体会..................................................................................................15 参考文献...................................................................................................................16

语音信号处理是研究数字信号处理技术和语音信号进行处理的一门学科,是一门新型的学科,是在多门学科基础上发展起来的综合性技术,它涉及到数字信号处理、模式识别、语言学。语音信号处理是研究用数字信号处理技术对语音信号处理的一门学科。处理的目的是要得到一些语音参数以便高效的传输或存储;或者是通过处理的某种运算以达到某种用途的要求。语音信号处理又是一门边缘学科。如上所诉,它是“语言语音学”与“数字信号处理”两个学科相结合的产物。

语音信号处理属于信息科学的一个重要分支,大规模集成技术的高度发展和计算机技术的飞速前进,推动了这一技术的发展。在数字音频技术和多媒体技术迅速发展的今天,传统的磁带语音录放系统因体积大、使用不便、放音不清晰而受到了巨大挑战。本次课程设计提出的体积小巧,功耗低的数字化语音存储与回放系统,可以有效的解决传统的语音录放系统在电子与信息处理的使用中受到的限制。

本文提出了语音信号处理课程建设的实验环节中的一些考虑,作为专业课程的学习,实验内容不能仅仅停留在验证性实验上,还应增加实验延伸的设计要求,是学生加深对理论分析认识的同时,强调培养学生的实际动手能力和知识综合运用能力。从而提高语音信号的教学和实验的质量。实验内容采用MATLAB编程实现,不仅易于语音信号处理的实现,更易引导学生完成实验延伸的设计。

第一章 绪

1.1课程设计的目的及意义

在我们的现实生活中从磁带、录像带到CD、VCD、DVD;从黑白电视机、彩色电视机、高清晰度电视机到具有数字信号处理功能的电视机;从留声机、录音机到语音信箱;现在正出在模拟信息到数字信息的变革之中,传统的磁带语音录放系统因其体积大,使用不便,在电子与信息处理的使用中受到许多限制。

虽然,目前广播电视系统尚未实现真正的数字化,相信在不久的将来,真正的数字电视、数字收音机、数字收录机将进入家庭。所以,研究音频信号的数字化存储、处理和回放系统有着很重要的现实意义。

通过设计语音信号实验箱可以对语音信号实现各种形式的变换,因此学会对语音信号的处理,也可自行研究将此语音处理技术应用到现实生活中。

语音信号处理的一门比较实用的电子工程的专业课程,语音是人类获取信息的重要来源和利用信息的重要手段,通过语言相互传递信息是人类最重要的基本功能之一,语音是人类特有的功能,它是创造和记载几千年来人类文明史的根本手段,是人类最重要、最有效、最常用和最方便的交换信息的形式。

语音信号处理是研究用数字信号处理技术对语音信号进行处理的一门学科,它是一门新兴的学科,同时又是综合性的多学科领域刚也涉及面很广的交叉学科。

1.2设计要求

(1)学会MATLAB的使用,掌握MATLAB的程序设计方法;(2)掌握在windows环境下语音信号的采集方法;(3)掌握数字信号处理的基本概念,基本理论和基本方法;(4)掌握MATLAB设计方法;

(5)学会用MATLAB对信号进行分析和处理。

1.3 研究内容

1.理论依据

根据设计要求分析系统功能,掌握设计中所需理论(采样频率、采样位数的

概念,采样定理; 时域信号的FFT分析;数字滤波器设计原理和方法,各种不同类型滤波器的性能比较),阐明设计原理。2.信号采集

采集语音信号,并对其进行FFT频谱分析,画出信号的时域波形图和频谱图。3.构造受干扰信号并对其进行FFT频谱分析

对所采集的语音信号加入干扰噪声,对语音信号进行回放,感觉加噪前后声音的变化,分析原因,得出结论。并对其进行FFT频谱分析,比较加噪前后语音信号的波形及频谱,对所得结果进行分析,阐明原因,得出结论。4.数字滤波器设计

根据待处理信号特点,设计合适数字滤波器,绘制所设计滤波器的幅频和相频特性。5.信号处理

用所设计的滤波器对含噪语音信号进行滤波。对滤波后的语音信号进行FFT频谱分析。画出处理过程中所得各种波形及频谱图。

对语音信号进行回放,感觉滤波前后声音的变化。比较滤波前后语音信号的波形及频谱,对所得结果和滤波器性能进行频谱分析,阐明原因,得出结论。6.设计图形用户界面

设计处理系统的用户界面,在所设计的系统界面上可以选择滤波器的参数,显示滤波器的频率响应,选择信号等。

第二章 语音信号处理理论基础

语音采集原理是,人耳能听到的声音是一种范围为20Hz—20kHz,而一般语音频率最高为3.4kHz。语音的采集是指语音声波信号经麦克风和高频放大器转换成有一定幅度的模拟量电信号,然后再转换成数字量的全过程。

本次设计的基本原理是对语音的录音和放音进行数字化控制。其中,关键技术在于:为了增加语音存储时间,提高存储器的利用率,采用了非失真压缩算法对语音信号进行压缩后再存储,而在回放时再进行解压缩;同时,对输入语音信号进行数字滤波以抑制杂音和干扰,从而确保了语音回放的可靠质量。

通过设计一个GUI实验箱,并添加相应的控制控件,添加一个声音文件,通过MATLAB编程,使其通过各种按钮实现语音信号处理的各种功能,最后做成一个完整的语音信号处理实验箱。

语音检测算法是现在语音信号处理研究的一个热点。近些年来,语音信号处理技术伴随着人们对通讯技术升级的需求得到了迅猛的发展。IP电话已经走向大规模产业化应用,并以其低廉的成本和满意的话音质量成为通讯供应商竞争的利器,大有取代传统电话的趋势。语音识别技术也已经实现了与说话者无关的大词汇量连续语音识别,并试图从试验研究走向商用。说话者识别技术作为一个新一代的门禁安防技术也已经出现商业应用。很多单工的通讯设备可以通过语音检测技术的应用实现收发状态的自动转换而以比较小的代价达到双工设备的功能。语音检测技术作为这些语音处理算法中的核心预处理单元,成为这些技术能否走向成熟商业应用的关键技术之一。实际通讯环境中会遇到各种不同类型、不同强度的噪声。它们各自在时域或频域中有互不相同的特点,没有一致的统计参数。语音信号本身也是一个时变的复杂信号。不同的语言,不同的音位(语音中的最小发声单位)各不相同。

总之,实际中的噪声和语音信号都是复杂的时变信号。如果不是面向特定背景噪声的应用,通过寻找噪声的共同特征以构建一个噪声信号与语音信号的区分函数是不现实的。语音信号处理本身是一个涉及到传统数字信号处理、统计信号处理、模式识别与建模、发声学、语音语言学等多学科的综合技术。论文在前人研究的基础上,从语音信号的形制机理出发,对语音信号中的基本成分—轻音和浊音的特征进行了深入的研究。Source-Filter模型在语音信号建模中有着广泛的应用,论文在基于Source-Filter模型求取语音信号的LPC谱中发现,语音的短时稳定性(short time stationary)在LPC谱中有着不同于噪声信号的鲜明体现,从而提出了基于音位共振峰轨迹跟踪的语音检测新方法。论文对新算法与国际电信联盟(ITU)的G729B推荐语音检测标准算法进行了对比验证,证明在强背景噪声环境下新算法的性能有20%左右的提高。同时新算法也体现出比G729B更

强的背景噪声适应能力。在算法的实现中,局部大能量的噪声会形成LPC谱中的局部极大值点,它具有类似语音共振峰的特征。为了消除噪声极大值点对音位共振峰轨迹跟踪的不良影响,论文提出了一个共振峰的形态判别标准—音位共振峰的幅值峰谷比原则,并通过大量的试验研究确定了峰谷比的优化量值。试验证明,此方法是剔除局部噪声极值点的有效方法。论文工作将新算法在一个基于TI TMS320C6711的数字信号处理器平台上实时实现。在实现过程中,使用了幅值、步长的分段拟合和插值算法,大大降低了复杂数学函数的运算时间,满足了算法了实时性要求。

第三章

系统方案论证

在进行模拟/数字信号的转换过程中,当采样频率fs.max大于信号中最高频率fmax的2倍时,则采样之后的数字信号完整的保留了原始信号中的信号,一般实际应用中保证采样频率为信号最高频率的5—10倍;采样定理又称奈奎斯特定理。

一、采样频率是指计算机每秒钟采集多少个声音样本,是描述声音文件的音质、音调、衡量声卡、声音文件的质量标准。采样频率越高,即采样的间隔时间越短,则在单位时间内计算机得到的声音样本数据就越多,对声音波形的表示也就越精确,采样频率与声音频率之间有一定的关系,根据奈奎斯特理论,只有采样频率高于声音信号最高频率的2倍的时候,才能把数字信号表示的声音还原成为原来的声音,这就是说采样频率是衡量声卡采集、记录和还原声音文件的质量标准。

二、采样位数即采样值或取样值,用来衡量声音波动变化的参数,是指声卡在采集和播放声音文件时候使用数字声音信号的二进制为数。采样频率是指录音设备在一秒钟内对声音信号的采样次数,采样频率越高声音的还原就越真实越自然。

三、采样位数和采样频率对于音频接口来说是最为重要的两个基本指标,也是选择音频接口的两个重要标准。无论采样频率如何,理论上来说采样的位数决定了音频数据最大的力度范围。每增加一个采样位数相当于力度范围增加了6dB。采样位数越多则捕捉到的信号越精确。对于采样率来说你可以想象它类似于一个照相机。显然采样率越高,计算机提取的声音越多,对于原始的还原也越加精确。

第四章

GUI设计实现

4.1 图形用户界面概念

图形用户界面或图形用户接口是指采用图形方式显示的计算机操作环境由用户接口。与早期计算机使用的命令行界面相比,图形界面对于用户来说更为简便易用。

GUI是MATLAB提供的图形用户界面开发环境,提供了一系列用于创建图形用户界面的工具,从而简化界面布局和编程工作。

4.2用户界面设计

4.2.1 GUI设计模板

在MATLAB主窗口中,选择File菜单中的New菜单项,再选择其中的GUI命令,就会显示图形用户界面的设计模板。

MATLAB为GUI设计一共准备了四个模板,分别是Blank GUI、GUI with Uicontrols、GUI with Axes and Menu、Modal Question Dialog。

当用户选择不同的模板时,在GUI设计模板界面的右边就会显示出与该模板对应的GUI图形。

4.2.2 GUI设计窗口

在GUI设计模板中选中一个模板,然后单击OK按钮,就会显示GUI设计窗口,选择不同的GUI设计模式时,在GUI设计窗口中显示的结果是不一样的。

GUI设计窗口由菜单栏、工具栏、空间工具栏以及图形对象设计区等部分组成。GUI设计窗口的菜单栏有File、Edit、View、Layout、Tools和Help六个菜单项,使用其中的命令可以完成图形用户界面的设计操作。

4.2.3 GUI设计窗口的基本操作

(1)前面板的设计:在GUI设计窗口创建图形对象后,通过双击该对象,就会显示该对象的属性编辑器。如下图所示。例如,创建一个Push Button对象,并设计该对象的属性值。

图4-1 按钮属性编辑器

通过以上的按钮属性编辑器可以根据个人情况对按钮的名称、颜色、大小等方面的属性进行修改,使按钮在视觉上变的更加完美。

(2)按钮功能的实现:在GUI设计窗口创建按钮后,通过右键单击按钮,选择View callbacks下的callback对相应的按钮进行编程,使按钮实现相应的功能,如下图所示对按钮的响应功能进行设置。

图4-2 按钮功能编辑器

进入到按钮程序编辑窗口,通过编程即可实现按钮的相应功能,如下图:

图4-3 按钮的编程实现界面

通过对各个按钮控件的修改,和对m文件程序的添加就完成对GUI窗口的设计,最后得到的图形化操作界面如下图所示:

图4-4 图形化操作界面

4.2.4 语音的录入与打开

在MATLAB中,[y,fa,bits]=wavread(‘Blip’,[N1 N2]);用于读取语音,采样值放在向y中,fs表示采样频率,bits表示采样位数。[N1 N2]表示读取从N1点到N2点的值。

Suond(x,fs,bits);用于对声音的回放,向量y则就代表了一个信号也就是说可以像处理一个信号表达式一样处理这个声音信号。

4.3课程设计的软件实现

4.3.1语音信号的短时谱

周期性声门波可表示为:

(4-1)其中,g[n]是声门波的单周期的波形,p[n]是间隔为P的周期采样序列。当u[n]通过线性非时变声道,且该声道的单位冲击响应为h[n]时,声道输出为:

(4-2)为了观察一段语音,需要降生到输出乘以一个一时刻τ 为中心的窗函数 w[n,τ] ,即得到:

(4-3)

这段语音信号的频域表达式为:

即语音信号的谱包络为

(4-4)

语谱图就是现实时变频谱幅度特征的图形表达式为:

(4-5)

将语音信号短时谱程序写入到MATLAB中得到单色语谱图的波形如下:

图4-5 语音信号单色语谱图

4.3.2 自相关方法估计语音信号的声道参数

由均方预测误差最小的得到正则方程:

其中,在最佳解时的误差为

在自相关法中式4-6,式4-8变为

(4-10)由式4-9和式4-10可列出方程组式4-11 10

(4-6)(4-7)(4-8)(4-9)

(4-11)

解方程组式4-9求出线性预测系数,通过误差式4-11可求出增益G

(4-12)

加窗后信号频谱图如下:

图4-6 加窗后信号频谱图

通过以上的方法,改变参数分别求得4极点模型频率响应和6极点模型频率响应,6极点波形如下图所示:

图4-7 六极点波形图

最后通过以上方法用一个函数分别实现以上三个功能,三个波形显示在一个界面,通过观察图形,查看它们之间的分别。三者比较所得到的波形如下:

图4-8 三者比较波形图

4.3.3 基音周期检测

数据为浊音语音信号speech1_10k(10000样点/秒)用25ms的汉明窗对语音信号speech1_10k进行加窗处理,并画出所得到的加窗信号的自相关函数,再用根据中心消波法及三电平中心消波法原理改进程序,最后对比中方法基音检测的效果并分析结果。

实验原理及方法

相关检测原理:对于离散的数字语音信号序列x(n),如果周期N,则自相关函数也是同周期的周期函数。即:x(n)=x(n+N)。清音信号没有周期性,他的自相关函数也没有周期。浊音新海具有准周期性。自相关基音检测正是利用这一性质对语音信号进行基音检测的。

中心消波法检测原理:中心消波处理是使用如下图所示的中心消波函数进行处理的:

图4-9 中心消波检测图

三电平消波法原理:为了减少自相关计算中的乘法运算,可以把上述中心消

波以后的信号y(n)的自相关用两个信号的互相关代替,其中一个信号是y(n)另一个信号是对y(n)进行三电平量化产生的结果。且这个信号有三种可能的取值,因而这里的互相关计算只需要做加减法,而这个互相关序列的周期性与y(n)的自相关序列是近似相同的。

三电平法对语音信号处理得到的波形如下:

图4-10 三电平法波形图

中心消波法得到的波形如下图:

图4-11 中心消波法波形图

4.4 GUI实验箱操作界面设计

通过对各个控件的编程和对参数的设计,最后得到的GUI实验箱操作界面如下图所示,通过界面上的各个按钮即可实现相应的功能。

图4-12 GUI实验箱操作界面

第五章 心得体会

通过本次课程设计完成了对语音信号的读取与打开,与课题的要求十分相符;初略的完成了界面的设计,但也存在相当的不足,达到了打开语音文件,显示已定波形。语音信号处理时语音学与数字信号处理技术相结合的交叉学科,将语音当做一种特殊的信号,即一种“复杂向量”来看待。也就是说,体现了数字信号处理技术。

本次课程设计时希望将数字信号处理技术应用与某一实际领域,这里就是指对语音的处理。作为存储与计算机中的语音信号,其本身就是离散化了的向量,我们只需要将这些离散的量提取出来美酒可以对其进行处理了。

本次课设,用到了处理数字信号的强有力工具MATLAB,通过MATLAB李的几个命令函数的调用,很轻易的在实际化语音与数字信号的理论之间搭了一座桥。

最后,还利用了MATLAB的另一强大功能——GUI界面设计。设计出了一个建议的用户应用界面,可以让人实现界面操作。

通过本次课程设计让我更加了解了语音信号处理在现实中的强大的应用空间,同时查阅了很多相关的资料,应用MTALAB软件来完成,熟练掌握了MATLAB软件,本次课程设计要求用GUI设计模块,查阅了很多资料,更加深刻的陆奥了了这方面知识。

本次课程设计,我明白了理论的学习需要在实践中才能得到巩固。在课程设计中,只有动手慢慢研究,才能真正了解MATLAB软件平台中可以直接设计数字滤波器的各个函数的调用,对设计GUI实验箱的所有函数的运用有了比较好的认识。

通过这个课程设计,我学到了很多MATLAB和语音信号的知识,提高了自己在语音信号设计方面的知识能力,动手能力和思维能力都得到了一定的提升,希望自己以后可以更多的继续学习这一门课程设计方面的知识。

参考文献

[1]陈怀琛.MATLAB及在电子信息课程中的应用【M】.北京电子工业出版社.2008.1 [2]张文.基于MATLAB的语音信号的滤波域实现【M】.山西电子技术.2008.2 [3]徐靖涛.基于MATLAB的语音信号分析与处理【M】.重庆科技学院学报.2008.1 [4]张威.MATLAB基础与编程入门【M】.西安电子科技大学出版社,2006. [5]周渊,王炳和,刘斌胜.基于MATLAB的噪声信号采集和分析系统的设计【J】.噪声控制.2004(7):52-54.

[6]张雄伟,陈量,杨吉斌.现代语音处理技术及应用【M】.北京:机械工业出版社.2003

第五篇:简易正弦信号发生器的设计

实验六 简易正弦信号发生器的设计

一、实验目的1.进一步熟悉Quatus软件的使用方法;

2.掌握逻辑分析仪的使用方法;

3.掌握LPM-ROM的使用方法;

二、实验内容

定制LPM-ROM模块,并利用其设计一个简易的正弦信号发生器,该信号发生器由以下三部分组成:

(1)计数器或地址信号发生器;

(2)正弦信号数据存储器ROM(6位地址线,8位数据线),含有128个8位波形数据(一个正弦波形周期)。

(3)VHDL顶层程序设计

注意:本实验中未给正弦信号波形接D/A转换器,因而采用逻辑分析仪进行观察,具体观察方法见教材208页。

本实验中待测信号为ar和q。时钟选择clk;时能信号为en,高电平触发。

三、实验记录

1.VHDL语言程序

2.仿真波形

3.逻辑分析仪观察结果。

四、问题讨论

1.总结宏功能模块的应用环境,可实现哪些设计?

2.设计一个方波生成器。

下载正弦信号DSP(★)word格式文档
下载正弦信号DSP(★).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    实验五正弦信号发生器设计5篇

    实验五正弦信号发生器设计 一、实验目的 1.熟悉利用QuartusII及其LPM_ROM与FPGA硬件资源的使用方法; 2.掌握LPM模块的重要功能; 3.熟悉MegaWizard Plug-In Manager的使用方法。......

    EDA课程设计——基于DDS的正弦信号发生器设计(模版)

    顶层文件 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY DDS IS PORT(K:IN STD_LOGIC_VECTOR(9 DOWNTO 0); EN:IN STD_LOGIC; RE......

    DSP在音视频信号处理及消费电子产品 中的应用

    文献综述 题 目DSP在音/视频信号处理及消费电子产品中的应用 课程名称 DSP系统设计 一、 DSP的基本概念 DSP(digital signal processor)是一种独特的微处理器,是以数字信号来......

    DSP实验5利用SPTool工具分析离散时间信号

    实验5 利用SPTool工具分析离散时间信号 目标:利用sptool工具观察信号波形、频谱和滤波。 要求: 1. 系统采样率2048,产生噪声信号,观察信号波形和频谱; 设计低通滤波器去除高频分......

    基于DSP开关电源

    基于DSP的开关电源 摘要 本文以TMs320LF2407A为控制核心,介绍了一种基于DSP的大功率开关电源的设计方案。该电源采用半桥式逆变电路拓扑结构,应用脉宽调制和软件PID调节技术实......

    dsp作业

    .c图 实验二 #define UINT unsigned int UINT i,*p,*n; void main(void) { p=(UINT *)0x0300; for(i=0;i PROG PAGE 0 .cinit > PROG PAGE 0 //.switch > PROG PAGE......

    关于dsp心得体会

    关于dsp心得体会 篇一:dsp实验报告心得体会 TMS320F2812x DSP原理及应用技术实验心得体会 1. 设置环境时分为软件设置和硬件设置,根据实验的需要设置,这次实验只是软件仿真,可以......

    DSP实验报告

    实验0 实验设备安装才CCS调试环境 实验目的: 按照实验讲义操作步骤,打开CCS软件,熟悉软件工作环境,了解整个工作环境内容,有助于提高以后实验的操作性和正确性。 实验步骤: 以演示......