论文关键词:声卡 数据采集 MATLAB 信号处理 图2-1 典型数据采集系统的组成
而一般的外置式数据采集系统结构如图2-2所示。模拟信号由传感器采得经过信号调理模块送入数据采集硬件设备。在数据采集设备中完成A/D转换,包括采样、量化、编码,转化成数字信号后送入与之相连的PC机中。根据不同的要求,在PC机上利用MATLAB以及二次编程实现数据的实时分析与处理。用户可以通过人机交互界面修改、设定各项参数来控制数据采集硬件设备的工作状态,同时可以得到数据的采集与分析结果, 从而实现数据采集与分析的自动化。 ![]() 图2-2 一般的外置式数据采集系统结构 利用声卡在WINDOWS环境下开发数据采集系统时,由于受编程语言的限制,其数据分析与处理的功能非常有限。例如,为了对所采集的数据进行功率谱分析,则需要用户以VB或C语言来编写功率谱分析的子程序,这显然增加了开发的难度,并且也极不利于分析功能的进一步扩展。 而利用声卡作为A/D转换工具,经过衰减和取样电路得到的模拟信号送至声卡的线路输入端LINEIN,并利用MATLAB中提供的数据采集工具箱,可满足控制声卡进行数据采集的要求。用户通过调用MATLAB命令, 可对采集的数据进行分析和处理。 整个系统可分为数据采集和数据分析两大部分,以友好的图形界面与用户进行交互沟通。数据采集部分实现数据采集功能,根据用户选择的采样频率和预设的采样时间,从声卡获得用户需要的数据;数据分析部分对采集到的数据进行频谱分析。全部数据的时域和频域波形以图形方式直观地呈现于用户面前。此外,还提供保存数据以及回放数据的功能。 图2-3给出了基于MATLAB的数据采集系统的简图,主要部件数据采集工具箱提供了硬件驱动程序和MATLAB环境之间“对话”所需的硬件驱动程序适配器、数据采集引擎和M-文件函数. ![]() 图2-3 基于MATLAB的数据采集系统简图 硬件驱动程序适配器在硬件驱动程序和数据采集引擎之间交换属性数值、数据和事件;数据采集引擎用来存储各个设备对象,以及每个设备对象的属性值;对采集到的数据进行存储并且使不同事件同步;M-文件用来创建设备对象、采集或输出数据、配置属性值和检测数据采集状态和数据采集设备。 2.2 系统的特点和性能指标 现代数据采集系统发展到今天,一般来说具有如下主要特点: (1)现代采集系统一般都由计算机控制,使得数据采集的质量和效率等大为提高,也节省了硬件投资。 (2)软件在数据采集系统中的作用越来越大,增加了系统设计的灵活性。 (3)数据采集与数据处理相互结合的日益紧密,形成数据采集与处理系统,可实现从数据采集、处理到控制的全部工作。 (4)数据采集过程一般都具有“实时”特性,实时的标准是能满足实际需要;对于通用采集系统一般希望有尽可能高的速度,以满足更多的应用环境。 (5)随着电子技术的发展,电路集成度的提高,数据采集系统的体积越来越小,可靠性越来越高,甚至出现了单片数据采集系统。 (6)总线在数据采集系统中有着广泛的应用,总线技术它对数据采集系统结构的发展起着重要作用。 评价一个数据采集系统的性能有很多指标,但是一般采用以下几个比较常用的指标进行评价。 (1)系统分辨率 系统分辨率是指数据采集系统可以分辨的输入信号的最小变化量。通常可以用如下几种方法表示系统分辨率: 使用系统所采用的 A/D 转换器的位数表示系统分辨率; 使用最低有效位值(LSB)占系统满度值的百分比表示系统分辨率; 使用系统可分辨的实际电压数值表示系统分辨率; 使用满度值可以分的级数表示系统分辨率。 (2)系统精度 系统精度是指当系统工作在额定采集速率下,整个数据采集系统所能达到的转换精度。A/D 转换器的精度是系统精度的极限值。实际上,系统精度往往达不到A/D 转换器的精度。因为系统精度取决于系统的各个环节(子系统)的精度,如前置放大器、滤波器、模拟多路开关等。只有当这些子系统的精度都明显优于 A/D 转换器的精度时,系统精度才有可能达到 A/D 转换器的精度。系统精度是系统的实际输出值与理论输出值之差,它是系统各种误差的总和,通常表示为满度值的百分数。 (3)采集速率 采集速率又称为系统通过速率或吞吐率,是指在满足系统精度指标的前提下,系统对输入的模拟信号在单位时间内所能完成的采集次数,或者说是系统每个通道、每秒钟可采集的有效数据的数量。这里说的“采集”包括对被测物理量进行采样、量化、编码、传输和存储的全部过程。 (4)动态范围 动态范围是指某个确定的物理量的变化范围。信号的动态范围是指信号的最大幅度和最小幅度之比的分贝数。 2.3 系统常见的几种结构形式 (1)多通道共享采样/保持器和 A/D 转换器数据采集系统 这种系统构成如下图所示,这种结构形式采用分时转换工作的方式,多路被测信号共用一个采样/保持器和一个 A/D 转换器。当采样保持器的输出已充分逼近输入信号(按给定精度)时,在控制命令的作用下,采样保持器由采样状态进入保持状态,A/D 转换器开始进行转换,转换完毕后输出数字信号。在转换期间,多路开关将下一路信号切换到采样/保持器的输入端,系统不断重复以上的操作,可以实现对多通道模拟信号的数据采集。采样方式可以按顺序或随机进行。 ![]() 多通道共享采样保持器和 AD 转换器数据采集系统图 这种采集系统结构形式最简单,所用芯片数量少,适用于信号变化率不高、对采样信号不要求同步的场合。如果被测信号变化速率较慢,可以不用采样保持器,直接进行 A/D 转换。如果信号很弱而干扰噪声强,需要在系统电路中增加信号放大电路和滤波环节。 (2)多通道同步数据采集系统 ![]() 多通道同步型数据采集系统图 其结构如上图所示,也属于分时转换系统。 多路模拟输入信号共用一个 A/D 转换器,但是每个通道各有一个采样/保持器,在同一采样指令控制下对各路信号同步进行信号采样,得到各路信号在同一时刻的瞬时值。模拟开关分时将各路采样/保持器切换到 A/D 转换器上,进行模数转换。这些同步数据可以描述各路信号的相位关系,所以这种结构被称为同步型数据采集系统。 由于各路信号必须串行的在共用的 A/D 转换器中进行转换和计算,若采样信号回路过多时,这种采集结构的速度仍然较慢。 (3)多通道并行数据采集系统 ![]() 多通道并行数据采集系统框图如上图所示。这种结构形式中,每个通道都有自己的采样保持器和A/D转换器,经过A/D转换的数据经过接口电路送到计算机中。相对于前两种数据采集系统,这种结构形式的数据采集速度最快,但所用的硬件电路复杂,成本较高。 通用型模拟量数据采集模块则属于这一类的数据采集子系统。数据采集模块是属于单片机的智能器件,在整个数据采集系统中,每个模块可以认为是实时、并行地工作,每个模块仅完成几路信号的检测和采集,实时响应性能优。 (4)分布式数据采集系统 以上介绍的三种结构形式中,系统各部件之间的空间距离很近,逻辑上耦合程度紧密,都可以称之为数据采集系统。这种系统的优点是:结构简单,容易实现,能满足中小规模的集中数据采集的要求。在市面上均有成熟产品可供选用。系统的体积和设备量小,造价低。 由于工作原理、结构形式和性能设计等原因,这类系统也存在不少缺点: 因为系统结构不灵活,不易扩展,所以不适合大规模的数据采集应用场合。抗干扰能力差,尤其对于被测对象物理位置分散、传感器输出的微弱信号需要长距离传输时,所受的干扰不容忽视的。可靠性差。系统结构中某一部件出现故障会导致整个系统工作崩溃。由于各部件之间紧密耦合,导致系统的可扩展性和灵活性差。分布式数据采集系统是数据采集技术、计算机技术和通信技术综合和发展的产物,基于“分散采集、集中管理”的思想设计的系统结构形式,由若干个“数据采集点”和上位机以及通信接口组成。分布式数据采集系统结构如下图所示: ![]() 分布式数据采集系统图 处于分散部位的数据采集点相当于小型的集中数据采集系统,位于被测对象的附近,可独立完成数据采集和预处理任务,并将采集的数据转换为数字信号的形式传送给上位机,采用数据传输的方法可以克服模拟信号传输的固有缺陷。分布式数据采集系统的主要特点是: (1)系统适应能力强。因为可以通过选用适当数量的数据采集点来构成相应规模的系统,所以无论是大规模的系统,还是中小规模的系统,分布式结构都能够适应。 (2)系统可靠性高。由于采用了多个数据采集点,若某个数据采集点出现故障,只会影响某项数据的采集,而不会对系统的其他部分造成任何影响。 (3)系统实时相应性好。由于系统各个数据采集点之间是真正“并行”工作的,所以系统的实时相应性较好。 (4)另外,这种数据采集系统是用数字信号传输代替模拟信号传输,有利于克服常模干扰和共模干扰。因此,这种系统特别适合于在恶劣的环境下工作。目前对于大规模的数据采集场合一般都采用分布式结构,根据不同的数据采集工作原理、结构形式和性能特点,在本系统中采用集中式的数据采集器件作为数据采集终端,采用上下位的连接方式,最终组成整个数据采集系统。 3 MATLAB软件 3.1 MATLAB 简介 MATLAB 是美国MathWorks 公司开发的一种功能极其强大的高技术计算机语言和内容极其丰富的软件库,它适合于工程各领域的分析设计与复杂计算的软件,该软件包括基本部分和专业扩展两大部分.扩展部分称为工具箱,用于解决某一方面的专业问题.它以矩阵和向量的运算以及运算结果的可视化为基础,把广泛应用于各个学科领域的数值分析、矩阵计算、函数生成、信号处理、图形及图像处理、建模与仿真等诸多强大功能集成在一个便于用户使用的交互式环境中,为使用者提供了一个高效的编程工具及丰富的算法资源。对于信号处理和图像处理等数字处理领域,MATLAB 更是得天独厚,它丰富的M文件和强大的绘图可视功能为使用者带来了极大的方便, 被广泛的应用于信号与图像处理、控制系统设计、通信、系统仿真等诸多领域,尤其对初学者可起到事半功倍之效。 MATLAB是一种解释语言,所有的程序和指令都必须在MATLAB解释器中读入后才能运行,因而极大地限制了代码执行速度。MATLAB强大的计算功能只能在其平台上才能使用,也就是说,必需在安装了其解释器的机器上才能使用MATLAB的M文件,这样就给工程应用带来了很大不便。对于一般用户来讲,MATLAB只能作为离线的计算和分析工具,而不能作为实时的工程工具。幸运的是,开发MATLAB的MathWorks公司为广大的应用者提供了应用程序接口(API,ApplicationProgram Interface)和编译器(Compiler)。利用MATLAB和C语言交互,也可以开发基于MATLAB的数据采集系统。如果配上数据采集线路,该系统就可以作为一个虚拟仪器来使用。 3.2 数据采集工具箱及声卡简介 MATLAB 自带的数据采集工具箱(Data Acquisitiontoolbox, DAQ) 能更容易地将实验测得的数据进行分析和可视化操作。数据采集设备包括: 多媒体声卡、美国国家仪器E系列和1200 系列接口板、Hewlett-Packard-VXIE1432- 系列接口板及其他各种数据采集硬件设备。数据采集硬件设备的内部特性对MATLAB 的接口完全透明, 无论是使用一个或几个硬件设备, 数据采集工具箱都会向所有硬件设备提供单一和统一的接口。通过调用MATLAB 命令和函数可对与计算机兼容的数据采集硬件设备进行访问并对其属性进行可视化监控。 数据采集工具箱是一种建立在MATLAB环境下的M函数文件和MEX动态链接库文件的集合,包含3大区域的组件:M文件函数、数据采集引擎及硬件驱动适配器。它具有如下特点:是一种通过使用与PC机兼容的、即插即用的数据采集设备在MATLAB环境中的架构;支持模拟信号的输入输出以及数字信号的输入、输出,子系统还包括同步模拟输入输出的转换;支持声卡;事件驱动采集。 在MATLAB数据采集工具箱里集成了数据采集的M 文件格式的函数和MEX文件格式的动态链接库。其主要特征如下: (1)提供了将实时测量数据从数据采集硬件采集到MATLAB中的框架。 (2)支持模拟量输入(AI)、模拟量输出(A0)以及数字量I/0子系统,包括模拟量I/O实时变换。 (3)支持PC声卡和业界非常流行的数据采集设备如NI卡、并行口(LPT1-LPT3)、Keithley卡等。 (4)采用事件驱动模式进行数据采集。数据采集工具箱由3部分组成:M文件格式的函数、数据采集引擎和硬件驱动,如图3-1所示。这些组成部分使得MATLAB与数据采集硬件之间的信息传递成为可能。 ![]() 图3-1 数据采集引擎与硬件驱动 目前市面上的数据采集卡一般都包含了完整的数据采集电路和与计算机的接口电路,如NI公司的E系列数据采集卡、研华的数据采集卡等, 其价格是与性能成正比的,可以说比较昂贵。在采样频率要求不高的情况下,可以利用计算机的声卡作为数据采集的输入和输出。而如今声卡技术已经成熟,成本越来越低。一般的声卡都可以实现双通道、16 位、高保真的数据采集,采样率甚至可以达到48KHz。对于许多科学试验和工程测量来说,其样本量化精度和采样率是足够高的,甚至优于目前常用数据采集卡的性能。将其用于数据采集,性价比相当高。
声卡是一个非常优秀的音频信号采集系统,其数字信号处理器包括模数转换器(ADC) 和数模转换器(DAC) ,ADC 用于采集音频信号,DAC用于重现这些数字声音,转换率达到44.1KHz。声卡已成为多媒体计算机的一个标准配置,利用声卡进行采样与输出,就不需要购买专门的采集卡可以降低虚拟仪器的开发成本,且在音频范围内可以完全满足实验要求。 3.3 MATLAB在数据采集中的应用 数据采集工具箱集成于MATLAB中,所以在进行数据采集的同时,可以对采集的数据进行实时分析,或者存储后再进行处理,或者针对数据分析的需要对测试条件的设立进行不断的更新。应用数据采集工具箱提供的命令和函数可以控制任何类型的数据采集。例如,在硬件设备运行时,可以获取事件信息,评估采集状态,定义触发器和回访状态,预览数据以及进行实时分析,可以设置和显示所有的硬件特性以满足用户的技术指标。 4系统设计方案 声音信号的采集与分析处理在工程应用中是经常需要解决的问题,如何实时采集声音信号并对其分析处理,从而找出声音信号的特征在科学研究中是一项非常有意义的工作。 声卡是多媒体计算机系统中最基本、最常用的硬件之一,其技术发展已经成熟,它具有AD/DA转换功能,现已被广泛应用于声音信号采集和虚拟仪器系统的设计。MATLAB则是一种功能强大、计算效率高、交互性好的数学计算和可视化计算机高级语言,它将数值分析、信号采集与处理和图形显示有机地融为一体,形成了一个极其方便、用户界面友好的操作环境。本文所设计的声音信号采集与分析系统就是充分利用了声卡的AD/DA转换功能和MATLAB强大的数据处理功能,同时,该系统还是建立在MATLAB软件的图形界面实现的,因而使系统具有良好的交互性。 基于计算机声卡的数据采集系统有以下特点: (1)价格低廉。在数据采集时,所要采用的是模数转换芯片,对于某些应用场合,可以利用计算机上所附带的声卡实现数据采集任务。 (2)灵活性强。用户不仅可以进行实时监视和控制操作,还可以把数据保存到硬盘,供以后分析使用。在CPU足够快的条件下,还可以实时处理数据,动态显示波形的频谱、功率谱。另外在一台计算机上,可以插若干块声卡,组成多通道数据采集系统。 (3)频率范围较窄,不能测直流。由于受声卡的硬件限制,要得到较好的波形,输入信号的频率最好在100Hz~15kHz范围内。 总之,运用廉价的声卡,构成一个较高的采样精度,中等采样频率,且具有很大灵活性的数据采集系统,对于一些应用领域是一种很好的选择。 4.1 系统结构设计 MATLAB提供了一个数据采集工具箱(Data Acquisition Toolbox),在该数据采集工具箱中,有一整套的命令和函数,可用来直接控制与PC机兼容的数据采集设备进行数据采集,因此,利用MATLAB的这一工具箱便可进行声音信号的采集。然后在MATLAB中直接调用频谱分析函数、功率谱分析函数或数值分析函数等,就可以将采集到的声音信号分别进行频谱、功率谱分析等多种谱分析。因此,在MATLAB中可以很容易地实现信号采集与分析处理工作。 ![]() 图4-1系统实现的总体框图 从系统框图上看,整个系统结构简单,而且数据的后续分析方便,不需要再进行数据转移,而直接在MATLAB软件中完成分析处理工作。在该系统中,从硬件上来讲,只需必要的信号预处理电路和一台普通的多媒体计算机(或笔记本电脑)即可;从软件上来讲,则只需使用本文中所编制的程序,便可从声卡获取数据并保存为文件,然后再可根据实际需要进行数据分析处理。 4.2 系统功能设计
本系统由数据采集和数据分析两大部分组成,数据采集部分是实现信号采集功能,根据用户选择的采样频率和预设的采样样本数从声卡获得用户需要的数据。数据分析部分主要实现以下功能:(1)从信号采集部分获取数据,或者从数据文件读取数据;(2)实现将采集到的声音信号数据进行频谱分析,画出频谱图以图形方式很直观地反映出信号特征;(3)保存数据,包括保存所有数据和部分数据的功能,同时保存对应的频谱数据;(4)显示声音信号数据的时域图和频谱图;(5)其他功能。根据不同的需要,还可以进行修改,以选择合适的实验方案。 4.3 系统设计实现 声音信号采集功能的实现是由MATLAB控制计算机声卡将传感器得到的模拟信号转换为数字信号并存储在计算机中;而信号分析功能是将采集得到的数据进行时、频域分析和各项数值分析等。整个系统设计主要包括系统的硬件配置、编制程序实现数据采集、编制程序实现数据分析及系统的界面设计四部分。 4.3.1 声音信号采集的硬件配置 将声卡插入计算机的PCI插槽,安装好相应的驱动程序后,将声音传感器设备与声卡的模拟输入端连接起来,这就构建了声音采集的硬件设备,需要注意的是对声音传感器的选择,应选择音频专用电缆或屏蔽电缆以减小噪声信号的引入,最好能选择单向性声音传感器。在MATLAB的信号采集工具箱中有专门为声卡生成一个操作对象的函数,初始化该操作对象即能建立MATLAB与声卡的通信,并为已创建的声卡设备对象增加数据采集通道和触发方式。若缺省设置则系统采用一个数据通道、手动触发方式启动工作。进行数据采集时,根据所配置的声卡的工作特性和信号分析的设计要求,可设置相应的参数来控制声卡在数据采集时的行为,如采样频率、采样时间、预计模拟信号的输入/输出范围、采样的出发方式,采样点数据的存储等。另外需要注意的一点是采样频率是由声卡的物理特性决定的,实际应用中可以根据情况选择一个声卡支持的采样频率.MATLAB支持电平触发、事件触发和手动触发三种方式来启动数据采集工作。声音信号采集硬件配置的具体实现过程: sound=analoginput(‘winsound’);% ‘winsound’为声卡的驱动程序 channel=addchannel(sound,1);% 添加通道为单声道 set(sound, ‘SampleRate’,44100);% 设置采样频率为44100Hz set(sound, ‘SamplesPerTrigger’,22050);% 设置采样时间为0.5s set(sound, ‘TriggerType’, ‘manual’);% 设置触发方式为手工触发 ...% 其它的相关设置 4.3.2 数据采集 启动设备对象,控制声卡开始采集数据,采集过程中可以向声卡发送控制命令,如暂停采集、退出采集等。采集到的数据被暂时存放在计算机的内存中,理论上可采集的最大数据量是由计算机的内存量所决定的。同时, MATLAB能够记录采集设备的硬件属性、采集的启动时刻、采集时间、采样频率及采样通道等信息,如果采集过程中出现了错误,则出错的时刻、错误产生的来源等信息也都会被记录下来供后续工作参考。需要注意的是,执行完一次数据采集工作后应删除设备对象,将内存中的数据存储在硬盘上之后释放数据存储所占用的内存空间,以备下一次采集能有足够的内存空间存储新的数据,声音信号采集的实现程序为: start(sound);% 启动设备对象 try time=0;data=0; [data,time]=getdata(sound);% 获取采样数据 catch time=0;data=0;disp(‘A timeout occurred’); end stop(sound);% 停止设备对象 delete(sound);% 删除设备对象 4.3.3 数据分析 在设计该部分时,不仅要求实现能从数据采集部分直接获取数据,还需实现能从文件中读取以前所保持好的数据。之后,用户可以根据实际研究的需要,在MATLAB中调用频谱分析函数(periodogram等)、功率谱分析函数(psd等)或数值分析函数(fminbnd等),就可以将采集到的声音信号分别进行频谱、功率谱分析等多种谱分析,并且可方便地将分析结果以图形的形式显示出来,如图4-2所示。在研究蛋壳破损自动检测过程中,通过对所采集的蛋壳声音信号进行频谱分析,找出区分损壳蛋与好壳蛋的特征变量,从而实现蛋壳破损的自动检测。对所采集的声音信号进行频谱分析的程序为: ...% 获取采样数据 Px=abs(fft(data,512)) 2/512;% 对所采集的数据进行傅立叶变换 px=Px(1:256); s=60+10*log10(px); ...% 其它功能 ![]() 图4-2 声音信号的采集与频谱分析 4.3.4 系统界面设计 利用MATLAB软件中GUI模块进行设计,在MATLAB中可以方便地设计出基于对话框的图形用户界面,它提供了诸如编辑框、按钮、滚动条等图形对象,通过对这些图形对象的有机组合,再对相应的图形对象编写程序,就可以设计出界面友好、操作方便的系统软件。图4-2所示为声音信号采集与频谱分析系统的运行界面,还可再根据实际需要进行扩展。 建立基于声卡和MATLAB的信号采集与分析系统,能够实现信号采集、设备控制、数据分析以及结果显示等功能。实践证明该系统具有精度高、实时性好、性价比高、人机界面友好、升级修改简单等优点。在进行项目研究过程中,常常需要进行多次实验,采集大量的数据,并且要求对数据能实时地进行分析处理,该系统能很好地满足这种研究需要。此外,这一系统还可以扩展应用到其他相关的领域中,如在语音识别工作中可以用该系统采集语音信号并且加入语音处理的相关分析等。因此,该系统不仅具有良好的实用性,还可为其他的相关研究提供理论和应用基础。 语音信号分析处理系统一般由声电传感器(麦克风) 、数据采集卡、处理器(计算机) 、软件系统等几部分组成。商品数据采集卡(A/ D 板) 都包含了完整的数据采集电路和计算机接口电路,并同时提供驱动程序,产品和种类繁多,性能价格各异,价格一般都比较贵。PC 机的声卡本身就是一个廉价同时又非常优秀的语音信号采集系统,它采用直接内存读取方式传输数据,极大地降低了CPU 的占用率;不仅如此,声卡16 位的A/ D 转换精度比普通16 位A/ D 卡要高,能够满足语音信号采集分析要求。 5 应用设计 一、 对声卡产生的模拟输入对象(AI) 进行操作 声卡是MATLAB数据采集工具箱所支持的一种硬件,用声卡完成一个简单的数据采集过程,麦克风就成了数据采集系统中的传感器. 1)创建设备对象,这里创建的是一个声卡AI设备对象,硬件设备标示符为2. ai=analoginput(‘winsound’,2); 2)给设备对象添加通道,这里添加1个通道. addchannel(ai,1); 3)设定设备属性值,控制数据采集. freq=8 000; \采样频率8 000 Hz set(AI,SampleRate.freq) duration=2; \采样时间2 s set(AI,SamplesPerTrigger,duration*freq); 4)数据采集及结果处理.在这里首先将所采集到的数据进行快速傅立叶变换,然后转化成分贝,并显示结果的实数部分. start(ai); data=getdata(ai); fftdata= abs(fft(data)); mag =20*logl0(fftdata); mag= mag(1:end/2); 5)清除内存中的设备对象. delete(ai); clear ai; ![]() 图5-1 采样过程中没有对麦克风讲话 ![]() 图5-2 采样过程中对麦克风讲话 结果分析:图5-1是在采样过程中打开麦克风,但是没有对麦克风讲话的结果(对不同品牌、质量的声卡,结果可能有所不同),图5-2是在采样的过程中对麦克风讲话的结果.可以看出,讲话与否(传感器感受端的变化)改变了所采集到的数据的结果. 二、 直接利用MATLAB数据采集箱中提供的函数命令进行采集 一般的采样过程是对声卡产生的模拟输入对象(AI) 进行操作的,由于计算机配置和模拟通道的运用使得数据采集过程显得烦琐难以理解,有时还不易获得采样数据。实验过程发现一种更为简单实用的方法可以进行数据采集。在阐述之前,首先介绍一下MATLAB数据采集箱中的几条有关命令: wavrecord : wavrecord 利用Windows 音频输入设备记录声音,其调用形式为:wavrecord (n ,fs ,ch) 。利用Windows音频输入设备记录n个音频采样, 频率为fs Hz ,通道数为ch。采样值返回到一个大小为n*ch 的矩阵中。缺省时,fs = 11025 ,ch = 1。 waveplay: waveplay 利用Windows音频输出设备播放声音,其调用形为:waveplay(y ,fs) 。以采样频率fs向Windows 音频设备发送向量信号。标准的音频采样率有:8000、11025、22050 和44100Hz。 wavread :wavread 用于读取Microsoft 的扩展名为“.wav”的声音文件。其调用形式为: y = wavread (file) 。其作用是从字符串file 所指的文件路径读取wave 文件,将读取的采样数据送到y 中。Y的取值范围: [ -1 ,1 ] 。 sound:音频信号是以向量的形式表示声音采样的。sound 函数用于将向量转换为声音,其调用形式为:sound (y ,fs) ,作用是向扬声器送出向量y 中的音频信号(采样频率为fs) 。 应用上述所讲到的MATLAB数据采集箱提供的函数进行一次简单的语音信号的采集实验。记录5 秒钟的8 位音频语音信号并回放之, 采样频率设为11025Hz。 ﹥﹥fs = 11025 ; \ 设置采样频率 ﹥﹥y1 = wavrecord (5*fs ,fs ,‘uint8’) ; \ 进行无语音采集 ﹥﹥plot (y1) ; ﹥﹥y2 =wavrecord (5*fs ,fs ,‘uint8’) ; \ 开始采集8位语音信号,时间为5s ﹥﹥plot (y2) ; ﹥﹥wavplay(y2 ,fs) ; \ 回放所采集的语音 ﹥﹥sound (y2 ,fs) ; ﹥﹥y1 =fft (y2) ; \ 做信号的fft 变换 ﹥﹥plot (y2) ; ![]() 图5-3 无声音信号输入波形 ![]() 图5-4 有声音信号输入波形 ![]() 图5-5 声音信号傅里叶变换 图形分析:用户可以变换采样频率及采样时间,也可以不同的频率回放语音。感受不同函数在相同的频率下回放的语音信号是否一致。此例进行的是实时回放,若要事后回放则可用wavread 函数。从程序语言及实现上可看出此方法简便了许多,而且实验结果与传统方法得到的实验结果完全一致。图5-3为在采样过程中打开麦克风,但是没有对麦克风讲话的结果(对不同品牌、质量的声卡,结果可能不同) ,从图上可以看到除开始采样的极短一段时间内有个信号接收过程产生阶跃外,其余时间内波形都在很小的范围内平稳的波动。图5-4是采样过程中对麦克风讲话的结果,可以看出,讲话(传感器端接收到信号)改变了采集的数据的结果。从图5-4中看出波形发生了很大的变化,波形随声音信号的高低强弱而发生变化,可知计算机已经通过麦克风接收到了语音信号,说明信号采集工作成功。图5-5为对采集到的信号进行的快速傅立叶变换所得到的图形。 上面介绍的基于声卡和MATLAB的语音数据采集系统,具有实现简单、性价比和灵活度高的特点。经实例分析证明,利用该系统可实现在线连续采集语音信号并进行分析和处理。 应用前文所述的MATLAB 数据采集工具箱提供的命令函数和系统环境为Windows98 的计算机上的板载声卡进行简单数据采集。记录5s的16 bit音频语音信号并回放, 采样频率设为11025 Hz。 fs=11025 %设置采样频率 y1=wavrecord( 5*fs, fs, ‘unit16’) %进行无语音采集 plot( y1) %画出所采集到的信号的波形 y2=wavrecord( 5*fs, fs, ‘unit16’) %进行语音采集 wavplay( y1, fs) sound( y2, fs) %回放所采集的语音 图5-6是用MATLAB的DAQ工具箱中的命令函数的方法采集数据, 采样过程中传声器无语音输入;图5-7是用创建声卡设备对象的方法采集数据, 采样过程中传声器有语音输入。 ![]() 图5-6 传声器无语音输入 ![]() 图5-7 传声器有语音输入 |
|