在matlab中怎样对声卡进行实时采集数据
对语音信号采集,有两种方法来实现。
方法一:采用对声卡产生一个模拟输入对象的方式进行采集。数据采集过程可以分为四步:
1) 初始化。Matlab将声卡等设备都作对象处理,其后的一切操作都不与硬件直接相关,而是通过对该对象的操作来作用于硬件设备,所以首先要对声卡产生一个模拟输入对象:
ai = analoginput (’winsound’) ;
ai ——Matlab 中的变量,它是一个模拟输入设备对象句柄,所有的数据采集过程都是通过对该句柄的操作来实现;
analoginput ( ) ——模拟输入设备对象建立函数,通过该函数将A/ D 转换硬件映射为Matlab workspace 中的一个模拟输入设备对象句柄;
winsound——声卡设备驱动程序,Matlab 软件内含该驱动程序。
2) 配置。给ai对象添加通道,设置采样频率。
addchannel (ai ,1);%添加通道
fs = 8000; %采样频率设置为8KHz
ai.SampleRate = fs ;%设置采样频率
3) 采样。启动设备对象,开始采集数据。
t = 2s ; %设定采样时间
start (ai); %启动设备对象
data = get (ai ,t *fs) ; %获得采样数据
4) 终止。停止对象并删除对象。
stop (ai) ;
delete (ai) ;
这样便完成了一次完整的数据采集过程,采样频率和采样时间都是由用户输入的,十分方便。
方法二:是直接利用MATLAB数据采集箱中提供的的函数命令进行采集,即wavrecord 。wavrecord是利用Windows 音频输入设备记录声音, 其调用格式为:
y=wavrecord(n ,fs ,ch ,dtype) ;
本命令是得到数字化的语音数据串,,可直接作为Matlab变量参与各种运算,式中n 为采样的点数,决定了录音长度;fs为采样频率,默认值为11025Hz,还可根据要求自己选择合适的采样率;ch为声道数,默认值为1,表示单声道,如果指定为2,则采样为双声道立体声数据;dtype为采样数据的存储格式,用字符串指定,可以是‘double’、‘single’、‘int16’、‘int8’,指定存储格式的同时也就规定了每个采样值量化的精度,int8 对应8 位精度采样,其他都是16 位采样精度。
使用Matlab 的wavread 函数也可以采集语音。不过wavread 函数只能读取计算机中已有的、扩展名为“.wav”的声音文件。其调用形式为: y=wavread (file)