据采集工具箱所支持的一种硬件,用声卡完成一个简单的数据采集过程,麦克风就成了数据采集系统中的传感器.
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 声音信号傅里叶变换
图形分析:用
上一页 [1] [2] [3] [4] 下一页