声卡是一个非常优秀的音频信号采集系统,其数字信号处理器包括模数转换器(adc)和数模转换器(dac),adc用于采集音频信号,dac用于重现这些数字声音,转换率达到44.1khz。声卡已成为多媒体计算机的一个标准配置,利用声卡进行采样与输出,就不需要购买专门的采集卡可以降低虚拟仪器的开发成本,且在音频范围内可以完全满足实验要求。
3.3matlab在数据采集中的应用
数据采集工具箱集成于matlab中,所以在进行数据采集的同时,可以对采集的数据进行实时分析,或者存储后再进行处理,或者针对数据分析的需要对测试条件的设立进行不断的更新。应用数据采集工具箱提供的命令和函数可以控制任何类型的数据采集。例如,在硬件设备运行时,可以获取事件信息,评估采集状态,定义触发器和回访状态,预览数据以及进行实时分析,可以设置和显示所有的硬件特性以满足用户的技术指标。
4系统设计方案
声音信号的采集与分析处理在工程应用中是经常需要解决的问题,如何实时采集声音信号并对其分析处理,从而找出声音信号的特征在科学研究中是一项非常有意义的工作。
声卡是多媒体计算机系统中最基本、最常用的硬件之一,其技术发展已经成熟,它具有ad/da转换功能,现已被广泛应用于声音信号采集和虚拟仪器系统的设计。matlab则是一种功能强大、计算效率高、交互性好的数学计算和可视化计算机高级语言,它将数值分析、信号采集与处理和图形显示有机地融为一体,形成了一个极其方便、用户界面友好的操作环境。本文所设计的声音信号采集与分析系统就是充分利用了声卡的ad/da转换功能和matlab强大的数据处理功能,同时,该系统还是建立在matlab软件的图形界面实现的,因而使系统具有良好的交互性。
基于计算机声卡的数据采集系统有以下特点:
(1)价格低廉。在数据采集时,所要采用的是模数转换芯片,对于某些应用场合,可以利用计算机上所附带的声卡实现数据采集任务。
(2)灵活性强。用户不仅可以进行实时监视和控制操作,还可以把数据保存到硬盘,供以后分析使用。在cpu足够快的条件下,还可以实时处理数据,动态显示波形的频谱、功率谱。另外在一台计算机上,可以插若干块声卡,组成多通道数据采集系统。
(3)频率范围较窄,不能测直流。由于受声卡的硬件限制,要得到较好的波形,输入信号的频率最好在100hz~15khz范围内。
总之,运用廉价的声卡,构成一个较高的采样精度,中等采样频率,且具有很大灵活性的数据采集系统,对于一些应用领域是一种很好的选择。
4.1系统结构设计
matlab提供了一个数据采集工具箱(dataacquisitiontoolbox),在该数据采集工具箱中,有一整套的命令和函数,可用来直接控制与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(‘atimeoutoccurred’);
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=8000;\采样频率8000hz
set(ai,samplerate.freq)
duration=2;\采样时间2s
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);
clearai;
图5-1采样过程中没有对麦克风讲话
图5-2采样过程中对麦克风讲话
结果分析:图5-1是在采样过程中打开麦克风,但是没有对麦克风讲话的结果(对不同品牌、质量的声卡,结果可能有所不同),图5-2是在采样的过程中对麦克风讲话的结果.可以看出,讲话与否(传感器感受端的变化)改变了所采集到的数据的结果.
二、直接利用matlab数据采集箱中提供的函数命令进行采集
一般的采样过程是对声卡产生的模拟输入对象(ai)进行操作的,由于计算机配置和模拟通道的运用使得数据采集过程显得烦琐难以理解,有时还不易获得采样数据。实验过程发现一种更为简单实用的方法可以进行数据采集。在阐述之前,首先介绍一下matlab数据采集箱中的几条有关命令:
wavrecord:wavrecord利用windows音频输入设备记录声音,其调用形式为:wavrecord(n,fs,ch)。利用windows音频输入设备记录n个音频采样,频率为fshz,通道数为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的16bit音频语音信号并回放,采样频率设为11025hz。
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传声器有语音输入
中国论文网(www.lunwen.net.cn)免费学术期刊论文发表,目录,论文查重入口,本科毕业论文怎么写,职称论文范文,论文摘要,论文文献资料,毕业论文格式,论文检测降重服务。 返回电子论文列表