搜索
您的当前位置:首页正文

数据的采集与音频信号的频谱分析 课程设计

来源:六九路网


中北大学

课 程 设 计 说 明 书

学生姓名: 谢航飞 学 号: 1305014126 学 院: 信息与通信工程学院 专 业: 电子信息工程 题 目: 信息处理信息实践:

数据的采集与音频信号的频谱分析

指导教师: 王 玉 职称: 副教授

2016 年 1 月 22 日

中北大学

课程设计任务书

15/16 学年第 一 学期

学 院: 信息与通信工程学院 专 业: 电子信息工程 学 生 姓 名: 关炜 学 号: 1305014102

学 生 姓 名: 谢航飞 学 号: 1305014126

学 生 姓 名: 李庆 学 号: 1305014140

课程设计题目:信息处理信息实践: 数据的采集与音频信号的频谱分析 起 迄 日 期: 2016年1月4日~2016年1月22日

课程设计地点: 学院楼201实验室 指 导 教 师: 王 玉

负 责 人: 王浩全

下达任务书日期: 2016 年1 月 4 日

课 程 设 计 任 务 书

1.设计目的: (1)掌握USB总线或PCI总线的基本结构,了解基于USB总线或PCI总线A/D卡的通用结构; (2)掌握数据采集卡采集数据的过程和原理; (3)了解MATLAB的信号处理技术; (4)掌握MATLAB 实现音频信号的读取、保存、拼接与频谱分析。 2.设计内容和要求(包括原始数据、技术参数、条件、设计要求等): (1)查阅相关资料,撰写关于基于USB总线或PCI总线A/D卡的报告; (2)采用A/D卡采集信号发生器产生的信号; (3)采用MATLAB读取两个以上音频信号,截取各信号中的一段进行拼接,并进行频谱分析,并讨论不同的采样频率对频谱的影响; (4)保存拼接后的音频信号,并进行播放证实存储的正确性,同时对拼接后的信号进行频谱分析,并与原有信号的频谱作对比; (5)要求3位同学完成。 3.设计工作任务及工作量的要求〔包括课程设计计算说明书(论文)、图纸、实物样品等〕: (1)要求设计组的每个成员都要了解设计的要求和思路; (2)MATLAB数据处理部分要求有正确的运行结果及结果分析; (3)数据处理部分要求每位同学有自己的理解; (4)每位同学针对上述内容撰写设计说明书(每人1份)。

课 程 设 计 任 务 书

4.主要参考文献: 1 黄顺吉.数字信号处理及其应用.北京:国防工业出版社,1982 2 陈怀琛.MATLAB及在电子信息课程中的应用[M].北京:电子工业出版社.2008,1 3 赵知劲,刘顺蓝.数字信号处理实验.杭州:浙江大学出版社,2007 4 程佩青.数字信号处理教程.北京:清华大学出版社,2007 5 徐明远,刘增力.MATLAB仿真在信号处理中的应用.西安:西安电子科技大学出版社,2007 6 丛玉良,王宏志.数字信号处理原理及其MATLAB实现(第2版).北京:电子工业出版社,2009 5.设计成果形式及要求: 课程设计说明书 程序运行结果 6.工作计划及进度: 2016年 1月4日 ~ 1月6日:查资料,了解基于USB总线或PCI总线A/D卡的通用结构以及A/D采集卡的应用; 1月7日~ 1月20日:在老师指导下完成课程设计内容; 1月20日~ 1月22日:撰写课程设计说明书、答辩。 负责人审查意见: 签字: 年 月 日

目录

一、A/D卡设计 ...................................................... 1

1.1 基于USB总线的A/D卡 ....................................... 1 1.2 基于PCI总线的A/D卡 ....................................... 2

1.2.1 PCI的含义 ............................................. 2 1.2.2 PCI总线的基本结构 ..................................... 3 1.2.3 PCI的总线接口的含义 ................................... 5 1.2.4 PCI控制功能的实现 ..................................... 6 1.2.5 基于PCI的A/D卡的工作原理............................. 7

二、设计方案简介.................................................... 8 三、语音信号的采集 ................................................ 8

3.1 录音系统流程 ................................................ 9 四、语音信号的分析 ................................................ 9

4.1 语音信号时域分析 .......................................... 9 4.2 语音信号频域分析 ........................................... 10 五、程序设计及仿真图 .............................................. 10 六、语音信号的读取、拼接、保存与频谱分析........................... 11

6.1 设计条件及主要参数表 ....................................... 12 6.2 设计主要参数计算 ........................................... 12

6.2.2 采样频率对语音频谱的影响.............................. 22

七、心得体会....................................................... 25 八、参考文献....................................................... 25

一、A/D卡设计

1.1 基于USB总线的A/D卡 1.USB总线介绍

USB总线为通用串行总线,USB接口位于PS/2接口和串并口之间,允许外设在开机状态下热插拔,最多可串接下来127个外设,传输速率可达480Mb/S,P它可以向低压设备提供5伏电源,同时可以减少PC机I/O接口数量。USB是基于通用连接技术,实现外设的简单快速连接,达到方便用户、降低成本、扩展PC连接外设范围的目的。数据采集就是把来自各种传感器的信号数据实时地、准确地测量或汇集起来,用计算机进行实时处理或记录存储,实时完成测试和控制功能。数据采集系统结构通过微机的标准接口连接各种功能模块、仪器仪表和传感器,组成测量系统。 2.USB接口电路设计

图1.1 USB接口电路图

R3是上拉电阻器,它可使USB口的D+端上拉到DS2490S的VB端,表示USB主机系统是高速设备,同时这个上拉电阻器告诉主机有USB设备插入。该上拉电阻器的设置对适配器的影响很大,它的负载值和1-Wire网络的总长决定1-Wire总线电压上升到5 V的速度。经过实验测试选择R3的阻值为27 Ω±lO%。R1、R2为USB数据线保护电阻器。L、L2具有禁止高频干扰并且减弱EMI辐射的功能。LF33CV为3.3 V电压稳压器,与周围元件C1、C2组成强上拉部分,给EEPROM

第 1 页

或温度传感器等器件提供额外的电源。

3.USB接口的数据采集系统的设计实现

数据采集系统使用采集卡进行数据采集,然后经过A/D转换器供计算机加工处理。基于USB接口的数据采集与频谱分析系统本系统结构由硬件部分和软件部分组成,硬件部分主要有计算机、I/ O 接口设备. 计算机作为硬件平台的核心可采用台式机,系统采用的I/ O 设备为A/ D 数据采集卡,该采集卡是一种基于USB 总线数据采集产品,可与带USB 接口的各种台式计算机、笔记本电脑、工控机连接构成高性能的数据采集测量系统.整个系统主要由4部分组成:USB接口芯片及外围电路、控制电路、数据缓冲电路和A/D转换电路。USB接口芯片选择了Cypress公司的EZ-USB 2131Q,该芯片内嵌8051控制器,因此整个系统以EZ-USB控制器为核心,由EZ-USB经控制电路实现对A/D转换电路和数据缓冲电路的控制,模拟信号转换后的数据送入数据缓冲器,当数据缓冲器存满之后,通知EZ-USB控制器,由主机取出数据。 4.A/D转换电路

声卡是计算机对语音信号进行加工的重要部件,它具有对信号滤波、放大、采样保持、A/D和D/A转换等功能。系统中A/D转换芯片采用了MAXIM公司的MAX122,该芯片是12 b的高速的A/D转换器。在完全转换模式下,他的转换时间可以达到2.6μs,采样率为333 kS/s。MAX122有5种工作模式,在数据采集系统中,采用了模式2即连续转换模式。在这种模式下,每次转换需要13~14个时钟脉冲节拍,转换可以不间断地进行,但是需要提供开始转换使能信号,并且要保证使能信号和时钟信号同步,读信号和片选始终处于有效状态。数据输出使能信号一直有效,在转换结束时产生新的数据。

1.2 基于PCI总线的A/D卡 1.2.1 PCI的含义

PCI是由Intel公司1991年推出的一种局部总线。从结构上看,PCI是在

第 2 页

CPU和原来的系统总线之间插入的一级总线,具体由一个桥接电路实现对这一层的管理,并实现上下之间的接口以协调数据的传送。管理器提供了信号缓冲,使之能支持10种外设,并能在高时钟频率下保持高性能,它为显卡,声卡,网卡,MODEM等设备提供了连接接口,它的工作频率为33MHz/66MHz。PCI总线也支持总线主控技术,允许智能设备在需要时取得总线控制权,以加速数据传送。PCI总线是一种不依附于某个具体处理器的局部总线。

PCI是Peripheral Component Interconnect(外设部件互连标准)的缩写,它是目前个人电脑中使用最为广泛的接口,几乎所有的主板产品上都带有这种插槽。PCI插槽也是主板带有最多数量的插槽类型,在目前流行的台式机主板上,ATX结构的主板一般带有5~6个PCI插槽,而小一点的MATX主板也都带有2~3个PCI插槽,可见其应用的广泛性。 1.2.2 PCI总线的基本结构 1、PCI总线

PCI总线由HOST主桥或者PCI桥管理,用来连接各类设备,如声卡、网卡和IDE接口卡等。在一个处理器系统中,可以通过PCI桥扩展PCI总线,并形成具有血缘关系的多级PCI总线,从而形成PCI总线树型结构。在处理器系统中有几个HOST主桥,就有几颗这样的PCI总线树,而每一颗PCI总线树都与一个PCI总线域对应。

与HOST主桥直接连接的PCI总线通常被命名为PCI总线0。考虑到在一个处理器系统中可能有多个主桥,图1-1将HOST主桥x推出的PCI总线命名为x0总线,而将PCI桥x1扩展出的PCI总线称之为x1总线;而将HOST主桥y推出的PCI总线称为y0-yn。分属不同PCI总线树的设备,其使用的PCI总线地址空间分属于不同的PCI总线域空间。

2、PCI设备

在PCI总线中有三类设备,PCI主设备、PCI从设备和桥设备。其中PCI从设备只能被动地接收来自HOST主桥,或者其他PCI设备的读写请求;而PCI主设备可以通过总线仲裁获得PCI总线的使用权,主动地向其他PCI设备或者主存

第 3 页

储器发起存储器读写请求。而桥设备的主要作用是管理下游的PCI总线,并转发上下游总线之间的总线事务。

一个PCI设备可以即是主设备也是从设备,但是在同一个时刻,这个PCI设备或者为主设备或者为从设备。PCI总线规范将PCI主从设备统称为PCI Agent设备。在处理器系统中常见的PCI网卡、显卡、声卡等设备都属于PCI Agent设备。

在PCI总线中,HOST主桥是一个特殊的PCI设备,该设备可以获取PCI总线的控制权访问PCI设备,也可以被PCI设备访问。但是HOST主桥并不是PCI设备。PCI规范也没有规定如何设计HOST主桥。

在PCI总线中,还有一类特殊的设备,即桥设备。桥设备包括PCI桥、PCI-to-(E)ISA桥和PCI-to-Cardbus桥。PCI桥的存在使PCI总线极具扩展性,处理器系统可以使用PCI桥进一步扩展PCI总线。

PCI桥的出现使得采用PCI总线进行大规模系统互连成为可能。但是在目前已经实现的大规模处理器系统中,并没有使用PCI总线进行处理器系统与处理器系统之间的大规模互连。因为PCI总线是一个以HOST主桥为根的树型结构,使用主从架构,因而不易实现多处理器系统间的对等互连。

PCI桥可以连接两条PCI总线,上游PCI总线和下游PCI总线,这两个PCI总线属于同一个PCI总线域,使用PCI桥扩展的所有PCI总线都同属于一个PCI总线域。其中对PCI设备配置空间的访问可以从上游总线转发到下游总线,而数据传送可以双方向进行。 3、HOST处理器

PCI总线规定在同一时刻内,在一颗PCI总线树上有且只有一个HOST处理器。这个HOST处理器可以通过HOST主桥,发起PCI总线的配置请求总线事务,并对PCI总线上的设备和桥片进行配置。

在PCI总线中,HOST处理器是一个较为模糊的概念。在SMP(symmetric multiprocessing)处理器系统中,所有CPU都可以通过HOST主桥访问其下的PCI总线树,这些CPU都可以作为HOST处理器。但是值得注意的是,HOST主桥才是PCI总线树的实际管理者,而不是HOST处理器。在HOST主桥中,设置了许多寄存器,HOST处理器通过操作这些寄存器管理这些PCI设备。

第 4 页

4、PCI总线的负载

PCI总线的所能挂接的负载与总线频率相关,其中总线频率越高,所能挂接的负载越少。下文以 PCI总线和PCI-X总线为例说明总线频率、峰值带宽和负载能力之间的关系,如表1所示。 总线类型 PCI 66MHz 66MHz 133MHz PCI-X 266MHz 533MHz 1066MB/s 2131MB/s 1个插槽 1个插槽 266MB/s 266MB/s 533MB/s 1-2个插槽 4个插槽 2个插槽 总线频率 33MHz 峰值带宽 133MB/s 负载能力 4-5个插槽 表 1 PCI总线频率、带宽与负载之间的关系

如表所示,PCI总线频率越高,所能挂接的负载越少,但是整条总线所能提供的带宽越大。在PCI总线中,一个插槽相当于两个负载,接插件和插卡各算为一个负载,在表1中,33MHz的PCI总线可以挂接4-5个插槽,相当于直接挂接8-10个负载。

1.2.3 PCI的总线接口的含义

如图2所示,通过将PCI与LogiCore逻辑框图的连接,可以知道PCI各端口的含义。

PCI总线接口:

AD[31:0] 时分复用地址/数据信号,在帧信号有效的一个时钟AD[31:0]上的信号为地址信号。

C/BE[3:0] 命令/字节使能信号,在帧信号有效的第一个节拍,指示总线作业类型。

FRAMF由总线上设备驱动,指明传输的起始时间和终止时间,在该信号有效期间表示总线传输开始,当该信号无效时,传输的是最后一个数据节拍。

IRDY 由总线主设备驱动,读操作时表示总线传输开始,当该信号无效时,传输的最后一个数据节拍。

第 5 页

IRDY 由总线主设备驱动,读操作时表示已准备好接受数据,写操作时表示有效数据已经在数据上。

TRDY 由从设备驱动,读操作时从设备正在把有效数据放在数据总线上;写操作时表示从设备准备接受来自Host的数据。

DEBSEL 译码出的地址在该设备的地址范围内时,则该信号有效。 IDSEL 配置读、写期间由Host发出的片选信号。 STOP 从设备向Host表示停止目前信号的传送。

PAR 奇偶校验信号,它通过AD[31:0]和C/BE[3:0]进行奇偶校验。 PERR 该信号只报告数据奇偶校验错。

SERR 该信号只报靠地址奇偶校验错,或者特殊命令序列中的数据奇偶校验错。

INTR_A 表示PCI设备请求中断。 1.2.4 PCI控制功能的实现

PCI的控制功能通过控制器DMA来实现的,DMA由现行字节数寄存器、现行地址寄存器、基字节数寄存器、基地址寄存器、半满地址寄存器、全满地址寄存器、状态寄存器、读写缓冲器及控制寄存器和优先级编码器等组成。

1.DMA控制器的特点:

(1)现行地址寄存器、基字节数寄存器、基地址寄存器、半满地址寄存器、全满地址寄存器5个寄存器可由高层应用程序根据当前驱动程序分配的系统内存空间来灵活配置。当传送完规定的传送长度(字节数减到零时),结束当前DMA传送并自动重新对现行地址寄存器进行初始化,具有自动初始化能力。

(2)优先级编码器中的4个DMA请求源的优先级是固定的,不可以旋转。优先级按照从高到低依次为读缓冲器、STATUS_C(由状态寄存器C-D发出的)、写缓冲器、STATUS_D(由状态寄存器C-D发出的)。优先权编码器对4个DMA请求源进行优先级编码,并向LogiCore发出DMA请求信号。

(3)DMA数据传送有单字节传送和数据块传送两种方式。数据块传送方式可由用户初始化基字节寄存器来灵活设置一次传送的数据块长度。DMA控制器向系统缓冲区发送状态寄存器C-D中的信息时采用单字节传送方式。而传送读缓冲器和写缓存器中的数据时采用数据块传送方式并可由用户设置一次传送数据的

第 6 页

长度。此时每传送一个数据,地址指针加1,字节数据1。

(4)DMA控制器中读缓冲器和写缓冲器都是2KB。 2.DMA控制器基本工作原理

首先由高层应用程序根据采集卡的低层驱动程序分配的系统内存地址对基地址寄存器、半满地址寄存器、全满地址寄存器、状态寄存器、读写缓冲器和控制寄存器进行初始化。然后启动系统,开始工作。当读缓冲器的数据量不到半满或写缓冲器中接收到的数据量已超过半满或状态寄存器C-D有状态信息向高层报告时,则向优先级编码器发出相应的请求信号。DMA优先级编码器根据DMA请求对象的操作类型向DMA控制寄存器发出相应的控制信号。当DMA控制器检索到对应的控制信息发生变化时,向LogiCore发出DMA请求,并用基字节寄存器和基地址寄存器分别初始化现行字节数寄存器和现行地址寄存器。当计算机系统允许DMA控制器占用PCI总线时,则DMA控制器接管PCI总线,并在地址周期向LogiCore发出DMA读写命令,同时输出当前要对系统缓冲区操作的起始地址。在随后的数据周期中,从数据总线ADIO上输出或接收数据,同时修改地址指针(DMA支持隐含寻址)和字节计数器值,DMA控制器检测传送是否结束。如未结束则不停循环传送。当检测到字节计数器即将为零时,则向LogiCore发出COMPLETE信号,COMPLETE信号持续到字节计数器为零时,DMA控制器释放掉对PCI总线的控制权,使CPU恢复正常工作状态。

在DMA控制器中,状态寄存器C-D有两个DMA请求源STATUS_C和STATUS_D。其中STATUS_C在地址比较器检测到读缓冲器读完对应系统缓冲区一半空间或全部读守对应系统缓冲区数据时,置相应的状态信息并向优先级编码器发出STATUS_C请求信号。而STATUS_D在地址比较器检测到写缓冲器写完对应系统缓冲区数据、置相应的状态信息并向优先级编码器发出STATUS_D的请求信号。 1.2.5 基于PCI的A/D卡的工作原理

1、连接器介绍

信号连接器有通道信号,PCI总线接口,外触发,多卡扩展同步接口等4种,以下分别介绍。

通道信号接口:位于采集卡的尾部,信号用同轴电缆接入。一张采集卡最多只有4个通道,也可能少于4个通道,视用户的需求而定。

第 7 页

PCI总线接口:采集卡与上位PC机的数据和控制信号通信接口。其采用32位PCI总线。

外触发接口:用于接外触发信号用。

多卡扩展同步接口:用于多卡扩展。其传输的信号包括主卡的同步时钟源、触发以及状态信号。一般用16针带缆连接。

当启动采集后,A/D转换后的数据经锁存,然后保存于每通道独立的卡上存储器中。卡上存储器相当于环形缓冲,如果A/D转换的数据样点数超过了卡上存储器的最大容量,新数据会覆盖旧数据。这个过程是周而复始的,只有当触发条件满足后,门阵列开始计数,计数达到指定值(该值由采集长度决定)后,采集结束,卡上存储器保存了满足用户需要的采集数据。上位机通过PCI接口门阵列经由门阵列控制核心取得卡上存储器样点数据。

上过程每通道是独立进行的。每通道卡上存储器最多可存储8M样点,且此参数可由DIP开关设置。

二、设计方案简介

本实验通过应用MATLAB软件实现音乐信号的读取、拼接、保存与频谱分析。将信号源发出的信号强度按频率顺序展开,使其成为频率的函数,并考察变化规律,称为频谱分析。频谱分析主要分析信号是由哪些频率的正弦信号叠加得到的,以及这些正弦信号的振幅。

分析和处理音频信号,首先要对声音信号进行采集,MATLAB 的数据采集工具箱提供了一整套命令和函数,通过调用这些函数和命令,可直接控制声卡进行数据采集。Windows自带的录音机程序也可驱动声卡来采集语音信号,并能保存为WAV格式文件,供MATLAB相关函数直接读取、写入或播放。

本实验以WAV格式音频信号作为分析处理的输入数据,用MATLAB处理音频信号的基本流程是:先将WAV格式音频信号经wavread 函数转换成MATLAB列数组变量;再用MATLAB强大的运算能力进行数据分析和处理,如时域分析、频域分析、数字滤波、信号合成、信号变换、识别和增强等等;处理后的数据如是音频数据,则可用wavwrite转换成WAV格式文件或用sound函数直接回放。

三、语音信号的采集

第 8 页

配置好数据采集设备的参数后,使用start命令便可启动声卡开始语音信号的采集。采集到的数据被暂时存放在PC机的内存里,理论上可采集的最大数据量是由PC机的内存容量决定的,这一点相对于一般的数据采集系统而言有较强的优势。MATLAB还可以记录采集过程中出现错误,如出错的时间、错误产生的来源以及数据采集设备的状态等信息都会被记录下来作为以后工作的参考。 Matlab自带的数据采集工具箱里面,提供了专门用于语音采集的命令和函数。数据采集的硬件设备的内部特性对Matlab的接口完全是透明的,通过调用Matlab提供的语音采集函数和命令可以对其进行访问。而且,Matlab可以对其采集的数据进行实时的分析,也可在存储后再进行处理。 3.1 录音系统流程 数据采集:

数据采集程序要实现的任务就是用软件控制声卡采集输入的信号,并将其转换为数字信号(即我们常说的数据)提供给后续程序处理,它为后续程序提供了一个数据来源。在最后程序结束以后,将该音频文件保存为Wav文件存到计算机。

四、语音信号的分析

4.1 语音信号时域分析

MATLAB数据采集箱中提供的函数命令进行图像分析的函数命令: wavread :wavread 用于读取Microsoft 的扩展名为“.wav”的声音文件。其调用形式为: y = wavread (file) 。其作用是从字符串file 所指的文件路径读取wave 文件,将读取的采样数据送到y 中。Y的取值范围: [ -1 ,1 ] 。

sound:音频信号是以向量的形式表示声音采样的。sound 函数用于将向量转换为声音,其调用形式为:sound (y ,fs) ,作用是向扬声器送出向量y 中的音频信号(采样频率为fs) 。

将向量转换为声音,其调用形式为:sound (y ,fs) ,作用是向扬声器送出向量y 中的音频信号(采样频率为fs) 。

第 9 页

通过Wavread和plot(x)函数即可显示图像的时域波形。 4.2 语音信号频域分析

FFT即为快速傅氏变换,是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。 在MATLAB的信号处理工具箱中函数FFT和IFFT用于快速傅立叶变换和逆变换。函数FFT用于序列快速傅立叶变换,其调用格式为y=fft(x),其中,x是序列,y是序列的FFT,x可以为一向量或矩阵,若x为一向量,y是x的FFT且和x相同长度;若x为一矩阵,则y是对矩阵的每一列向量进行FFT。如果x长度是2的幂次方,函数fft执行高速基-2FFT算法,否则fft执行一种混合基的离散傅立叶变换算法,计算速度较慢。函数FFT的另一种调用格式为y=fft(x,N),式中,x,y意义同前,N为正整数。函数执行N点的FFT,若x为向量且长度小于N,则函数将x补零至长度N;若向量x的长度大于N,则函数截短x使之长度为N;若x 为矩阵,按相同方法对x进行处理。

五、程序设计及仿真图

Matlab对原始语音信号进行分析,得出它的时域波形和频谱如图5.1、5.2 程序:

[ x,fs,Nbits] =wavread('053.wav') ; t=0:1/fs:(length(x)-1)/fs;

sound(x,fs) ; %对加载的语音信号进行回放 figure(1)

plot(x) %做原始语音信号的时域图形

title('原始语音信号'); xlabel('time n'); ylabel('fuzhi n');

n=length(x); %求出语音信号的长度 y1=fft(x,n) ; %傅里叶变换 y2=fftshift(y1);

f=0:fs/n:fs*(n-1)/n; %得出频点 figure(2) subplot(2,1,1);

plot(abs(y2)) %做原始语音信号的FFT频谱图 title('原始语音信号FFT频谱') subplot(2,1, 2);

第 10 页

plot(f,abs(y2)); %绘制原始语音信号 title('原始语音信号频谱')

图5.1原始语音信号

图5.2原始语音信号频谱

六、语音信号的读取、拼接、保存与频谱分析

第 11 页

6.1 设计条件及主要参数表

频谱分析是为了我们能够知道一个混合信号中所有的分量信号的频率,从而我们可以得知信号的组成,一般我们用FFT来分析信号的的频率分量特征分析与提取。

实验首先找到三个wav格式的音频信号(02.wav,03.wav,04.wav),通过wavread 函数转换成MATLAB列数组变量。

其次,分别对三个wav音频信号进行截取并分别进行频谱分析。

再次,将截取的三段音频信号进行拼接(uu=[m0(1:250000,:); m1(1:250000,:);m2(1:350000,:)])

最后,保存拼接后的音乐信号(如图04.wav),并进行播放证实存储的正确性,同时对拼接后的信号进行频谱分析,并与原有信号的频谱作对比。得出实验结论。

利用FFT进行频谱分析:

若信号本身是有限长的序列,计算序列的频谱就是直接对序列进行FFT运算求得X(k),X(k)就代表了序列在0,2之间的频谱值。

幅度谱 X(k)2XR(k)XI2(k)

相位谱 (k)arctanXI(k) XR(k)若信号是模拟信号,用FFT进行谱分析时,首先必须对信号进行采样,使之变成离散信号,然后就可按照前面的方法用FFT来对连续信号进行谱分析。按采样定理,采样频率fs应大于2倍信号的最高频率,为了满足采样定理,一般在采样之前要设置一个抗混叠低通滤波

器。用FFT对模拟信号进行谱分析的方框图6.1如下所示。

抗混叠低通滤波器 采样T=1/fs N点FFT

图6.1 FFT对模拟信号进行谱分析

应用到的主要函数:wavread、wavwrite、sound 6.2 设计主要参数计算

第 12 页

语音的拼接:

语音信号与音乐信号的拼接主要由六部分构成:1、读取02.wav文件并分析;2、读取03.wav文件并分析;3、读取04.wav文件并分析4、读取05.wav文件分析5、将四个音频文件拼接分析后分析;6、保存拼接后的音频。分析部分主要利用快速傅里叶变换,得到其频谱,同时,还要获取每一段音频的长度参数(程序里面m0、m1、m2、m3),得到长度参数后,利用矩阵拼接,将四个音频拼接起来,再对齐分析。拼接的时候,应该注意到,m0,m1,m2和m3都是两行数据,应该同时将两行拼接,同时,拼接长度参数应该等于m0、m1、m2、m3和的长度。保存则用wavwrite函数保存。

程序: clear all; clc;

[m0,fs0,bits0]=wavread('02.wav'); %读取音乐信号 len0=size(m0,1);

f0=fs0*(0:(len0-1))/len0;%(得出频点) figure(1);

plot(m0); %原始音乐信号的波形图 title('原始音乐信号的波形图0'); figure(2); y0=fft(m0,len0);

plot(f0,abs(y0)); %原始音乐信号的频谱图 title('原始音乐信号的频谱图0'); sound(m0,fs0,bits0);

disp('按任意键读取下一段音频'); pause

[m1,fs1,bits1]=wavread('03.wav'); len1=size(m1,1);

f1=fs1*(0:(len1-1))/len1; figure(3);

plot(m1); %原始音乐信号的波形图

第 13 页

title('原始音乐信号的波形图1'); figure(4); y1=fft(m1,len1);

plot(f1,abs(y1)); %原始音乐信号的频谱图 title('原始音乐信号的频谱图1'); sound(m1,fs1,bits1); disp('按任意键进行拼接'); pause

[m2,fs2,bits2]=wavread('04.wav'); len2=size(m2,1);

f2=fs1*(0:(len2-1))/len2; figure(5);

plot(m2); %原始音乐信号的波形图 title('原始音乐信号的波形图2'); figure(6); y2=fft(m2,len2);

plot(f2,abs(y2)); %原始音乐信号的频谱图 title('原始音乐信号的频谱图2'); sound(m2,fs2,bits2); pause

[m3,fs3,bits3]=wavread('05.wav'); len3=size(m3,1);

f3=fs1*(0:(len3-1))/len3; figure(7);

plot(m3); %原始音乐信号的波形图 title('原始音乐信号的波形图'); figure(8); y3=fft(m3,len3);

plot(f3,abs(y3)); %原始音乐信号的频谱图

第 14 页

title('原始音乐信号的频谱图'); sound(m3,fs3,bits3); pause

[m4,fs4,bits4]=wavread('06.wav'); len4=size(m4,1);

f4=fs1*(0:(len4-1))/len1; figure(9);

plot(m4); %原始音乐信号的波形图 title('软件拼接音乐信号的波形图'); figure(10); y4=fft(m4,len4);

plot(f4,abs(y4)); %原始音乐信号的频谱图 title('软件拼接音乐信号的频谱图'); sound(m4,fs4,bits4); pause

uu=[m0(1:250000,:); m1(1:250000,:);m2(1:350000,:);m3(1:300000,:)];

len2=size(uu,1);

f2=fs0*(0:(len2-1))/len2; figure(11);

plot(uu); %拼接后音乐信号的波形图 title('Matlab拼接后音乐信号的波形图'); figure(12); y2=fft(uu,len2);

plot(f2,abs(y2)); %拼接后音乐信号的频谱图 title('Matlab拼接后音乐信号的频谱图'); sound(uu,fs0,bits0); disp('按任意键进行拼接'); pause

第 15 页

wavwrite(uu,fs0,bits0,'07.wav');

实验结果截图:

图6.2 原始语音信号02波形图

第 16 页

图6.3原始语音信号02频谱图

图6.4原始语音信号03波形图

第 17 页

图6.5原始语音信号03频谱图

图6.6原始语音信号04波形图

第 18 页

图6.7原始语音信号04频谱图

图6.8原始语音信号05波形图

第 19 页

图6.9原始语音信号05频谱图

图6.10软件拼接信号波形图

第 20 页

图6.11软件拼接信号频谱图

图6.12 matlab拼接后语音信号波形图

第 21 页

图6.13 matlab拼接后语音信号频谱图

频谱分析:

从图6.13中可以看出,采样点数为44100,频率主要集中在0-5000HZ的范围内。通过与图6.3 ,图6.5,图6.7,图6.9的对比来看,拼接后的语音频谱与拼接前保持不变。

6.2.2 采样频率对语音频谱的影响

[ x,fs,Nbits] =wavread('04.wav') ; [ x,fs,Nbits] =wavread('04.wav') ; fs=undefined;

t=0:1/fs:(length(x)-1)/fs;

sound(x,fs) ; %对加载的语音信号进行回放 figure(1)

plot(x) %做原始语音信号的时域图形 title('原始语音信号'); xlabel('time n'); ylabel('fuzhi n');

第 22 页

n=length(x); %求出语音信号的长度 y1=fft(x,n) ; %傅里叶变换 y2=fftshift(y1); %对频谱图进行平移 f=0:fs/n:fs*(n-1)/n; %得出频点 figure(2) subplot(2,1,1);

plot(abs(y2)) %做原始语音信号的FFT频谱图 title('原始语音信号FFT频谱') subplot(2,1,2);

plot(f,abs(y2)); %绘制原始语音信号 title('原始语音信号频谱')

修改其中采样频率fs,得出频谱图与还原语音 实验截图

采样频率fs=11025HZ

图6.14 采样率为11025hz时频谱图

第 23 页

采样频率fs=22050HZ

图6.15 采样率为22050hz时频谱图

采样频率fss=44100HZ

图6.16 采样率为44100hz时频谱图

第 24 页

分析:

满足奈奎斯特采样定理的前提下,采样频率越高,时域内信号分辨率就越高,采集到的信号就越接近原始信号,在频谱上的频带就越宽,有利于后期频域分析 相位分量的相位改变是不影响该波的频率成分和幅值大小,也就是说,在幅频内的本质是没有发生改变的,所以最终合成的波形幅值频谱是不会改变的。

七、心得体会

经历了本次课程设计,我们再次熟悉了matlab这一常用软件的使用方法,同时明白了我们在经过组内分工合作完成课程设计的同时,要更加注重自身的学习,不能只依靠队友。在知识点的方面,我学到了如何用matlab采集,处理,存储和拼接信号,并能进行频谱分析。

在做实验的过程中,我们遇到了很多问题,但都能够一一克服,起初在音频软件的采样率的设置上没有注意,导致代码写对图形一直有问题,后来在进行频谱分析当中对这一问题进行了反思,做到了发现问题然后想办法去解决问题。我想这是我收获最大的一点。以上是我本次课程设计的心得体会。

八 参考文献

1 黄顺吉.数字信号处理及其应用.北京:国防工业出版社,1982 2 陈怀琛.MATLAB及在电子信息课程中的应用[M].北京:电子工业出版社.2008,1

3 赵知劲,刘顺蓝.数字信号处理实验.杭州:浙江大学出版社,2007 4 程佩青.数字信号处理教程.北京:清华大学出版社,2007

5 徐明远,刘增力.MATLAB仿真在信号处理中的应用.西安:西安电子科技大学出版社,2007

6 丛玉良,王宏志.数字信号处理原理及其MATLAB实现(第2版).北京:电子工业出版社,2009

第 25 页

因篇幅问题不能全部显示,请点此查看更多更全内容

Top