基于MATLAB的数据采集与分析系统设计

  论文关键词:声卡  数据采集  MATLAB  信号处理

基于MATLAB的数据采集与分析系统设计
  论文摘要:利用数据采集卡构建的数据采集系统一般价格昂贵且难以与实际需求完全匹配。声卡作为数据采集卡具有价格低廉、开发容易和系统灵活等优点。本文详细介绍了系统的开发背景,软件结构和特点,系统地分析了数据采集硬件和软件设计技术,在此基础上以声卡为数据采集卡,以MATLAB为开发平台设计了数据采集与分析系统。

本文介绍了MATLAB及其数据采集工具箱, 利用声卡的A/ D、D/ A 技术和MATLAB 的方便编程及可视化功能,提出了一种基于声卡的数据采集与分析方案,该方案具有实现简单、性价比和灵活度高的优点。用MATLAB 编制了相应软件,实现了该系统。该软件有着简洁的人机交互工作界面,操作方便,并且可以根据用户的需求进行功能扩充。最后给出了应用该系统采集数据的应用实例。

1绪论

1.1 课题背景

数据也称观测值,是实验、测量、观察、等的结果,常以数量的形式给出。数据采集,又称数据获取,就是将系统需要的所有对象的原始数据收集、归类、整理、录入到系统当中去。数据采集是管理系统使用前的一个数据初始化过程。数据采集技术广泛引用在各个领域。比如摄像头,麦克风,都是数据采集工具。

数据采集(Data Acquisition)是将被测对象(外部世界、现场)的各种参量(可以是量,也可以是化学量、生物量等)通过各种传感元件作适当转换后,再经信号调理、采样、量化、编码、传输等步骤,最后送到控制器进行数据处理或存储记录的过程。

被采集数据是已被转换为电讯号的各种物理量,如温度、水位、风速、压力等,可以是模拟量,也可以是数字量。采集一般是采样方式,即隔一定时间(称采样周期)对同一点数据重复采集。采集的数据大多是瞬时值,也可是某段时间内的一个特征值。准确的数据测量是数据采集的基础。数据测量方法有接触式和非接触式,检测元件多种多样。不论哪种方法和元件,都以不影响被测对象状态和测量为前提,以保证数据的正确性。数据采集含义很广,包括对连续物理量的采集。在计算机辅助制图、测图、设计中,对图形或图像数字化过程也可称为数据采集,此时被采集的是几何量数据。

在智能仪器、信号处理以及自动控制等领域,都存在着数据的测量与控制问题,常常需要对外部的温度、压力、流量、位移等模拟量进行采集。数据采集技术是一种流行且实用的技术。它广泛应用于信号检测、信号处理、仪器仪表等领域。近年来,随着数字化技术的不断发展,数据采集技术也呈现出速度更高、通道更多、数据量更大的发展态势。

数据采集系统是一种应用极为广泛的模拟量测量设备,其基本任务是把信号送入计算机或相应的信号处理系统,根据不同的需要进行相应的计算和处理。它将模拟量采集、转换成数字量后,再经过计算机处理得出所需的数据。同时,还可以用计算机将得到的数据进行储存、显示和打印,以实现对某些物理量的监视,其中一部分数据还将被用作生产过程中的反馈控制量。

数据采集系统是计算机测控系统中非常重要的环节,目前,有各种数据采集卡或采集系统可供选择,以满足生产和科研试验等各方面的不同需要,但由于数据源以及用户需求的多样性,有时并不能满足要求。特别是在某些应用中,需要同时高速采集多个通道的数据,而且为了分析比较各通道信号间的相互关系,常常要求所有通道的采集必须同步。现有的数据采集系统能够满足上述要求的比较少,且价格十分昂贵,体积较大,分量较重,使用十分不方便。

一般模拟量是通过各种数据采集卡进行数据采集。目前常用的是具有 ISA 总线、PCI 总线等接口形式的 A/D 采集卡,虽然数据传输率很高,但是还存在整个系统笨重,缺乏灵活性,不能实现即插即用,不适合小型、便携设备采用等缺点。另外这些类型的采集卡在计算机上安装比较麻烦,而且由于受计算机插槽数量、地址、中断资源的限制不可能挂接很多设备。因此,工程师们往往需要花费大量的时间和资源用于系统搭建。

随着现代工业技术的迅猛发展,生产规模的不断壮大,生产过程和制作工艺的日趋复杂,对自动测试和各种信息集成的要求也就越来越高。数据采集系统的好坏将直接影响自动测试系统的可靠性和稳定性,为了满足不同的测试需求,以及减少对资源的浪费,在系统的设计上应该尽量满足通用性和可扩展性。在高度发展的当今中,科学技术的突飞猛进和生产过程的高度自动化已成为人所共知的必然趋势,而它们的共同要求是必须建立在有着不断发展与提高的信息工业基础上。人们只有从外界获取大量准确、可靠的信息经过一系列的科学分析、处理、加工与判断,进而认识和掌握自然界与科学技术中的各种现象与其相关的变化规律,并通过相应的系统和方法实现科学实验研究与生产过程的高度自动化。换言之,生产过程的自动化面临的第一个问题就是必须根据从各种传感器得到的数据来检测、监视现场,以保证现场设备的正常工作。所以对现场进行数据采集是重要的前期基础工作,然后再对现场数据进行传输和相应的处理工作,以满足不同的需要。

  数据采集卡是中低端数据采集系统设计的必选产品。基于 ISA、PCI 的插卡式数据采集设备存在以下缺陷:安装麻烦;价格昂贵;受计算机插槽数量、地址、中断资源限制,可扩展性差;在一些电磁干扰性强的测试现场,无法专门对其做电磁屏蔽,导致采集的数据失真。而现代工业生产和科学研究的发展要求数据采集卡具有更好的数据采集、处理能力,传统的 CPU 已经不能满足这一要求。针对以上要求,本文将论述一种基于PC机的声卡技术,它安装容易,较低。只需利用计算机本身的软硬件资源,而不需添加其他任何设备即可构成数据采集与分析系统,使用MATIAB语言编制简洁的图形用户界面,该界面操作方便,并且可以根据用户的需求进行功能扩充。

硬件驱动程序适配器在硬件驱动程序和数据采集引擎之间交换属性数值、数据和事件;数据采集引擎用来存储各个设备对象,以及每个设备对象的属性值;对采集到的数据进行存储并且使不同事件同步;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与声卡的,并为已创建的声卡设备对象增加数据采集通道和触发方式。若缺省设置则系统采用一个数据通道、手动触发方式启动工作。进行数据采集时,根据所配置的声卡的工作特性和信号分析的设计要求,可设置相应的参数来控制声卡在数据采集时的行为,如采样频率、采样时间、预计模拟信号的输入/输出范围、采样的出发方式,采样点数据的存储等。另外需要注意的一点是采样频率是由声卡的特性决定的,实际应用中可以根据情况选择一个声卡支持的采样频率AB支持电平触发、事件触发和手动触发三种方式来启动数据采集工作。声音信号采集硬件配置的具体实现过程:

  sound=analoginput(‘winsound’);% ‘winsound’为声卡的驱动程序

  channel=addchannel(sound,1);% 添加通道为单声道

  set(sound, ‘SampleRate’,44100);% 设置采样频率为44100Hz

  set(sound, ‘SamplesPerTrigger’,22050);% 设置采样时间为0.5s

  set(sound, ‘TriggerType’, ‘manual’);% 设置触发方式为手工触发

  ...% 其它的相关设置

  结果分析:图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 的扩展名为“”的声音文件。其调用形式为: 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 传声器有语音输入