101科技资讯科技资讯SCIENCE&TECHNOLOGYINFORMATION2008NO.08SCIENCE&TECHNOLOGYINFORMATIONIT技术1基于PC机的信号采集系统1.1系统设计关键问题目前Pc机的外部扩展设备已经很齐全,windows一般带有的音频操作软件很全面,硬件方面只需一个可以将语音转换成电子信号的设备,比如麦克风。软件采用Matlab高级程序设计语言设计。Matlab是美国mathworks“”公司开发的演算纸式的程序设计语言,是一个跨平台的科学计算环境。它以其强大的计算和绘图功能、大量稳定可靠的算法库、简洁高效的编程语言以及庞大的用户群,成为数学计算工具方面事实上的标准。包括通信、信号处理、神经网络、自动控制等几乎所有的工程计算领域,Matlab都有相应的软件工具箱。最新的Matlab版本,不仅可以与C/C++、VC、VB等高级语言混合编程、互相调用,还可以调用计算机硬件设备,是目前最为流行的软件之一。为制作基于Matlab的信号采集系统提供了很好的条件。编程设计时要考虑以下3个关健问题:①录放音函数的选用。Matlab中有两个函数可以用于实现录音功能。使用wavrecord函数调用windows音频设备进行录音,主要用于实时语音采集。调用格式为x=wavrecord(n,fs,ch,dtype,得到数字化的语音数据串,可直接作为Matlab变量参与各种运算,式中n为采样的点数,决定了录音长度;fs为采样频率,默认值为11025Hz,还可根据系统要求自己选择合适的采样率;ch为声道数,默认值为1,表示单声道,如果指定为2,则采样为双声道立体声数据;dtype为采样数据的存储格式,用字符串指定,‘可以是double’‘、single’‘、intl6’‘、int8’,指定存储格式的同时也就规定了每个采样值量化的精度,int8对应8位精度采样,其他都是l6位采样精度。使用Matlab的wavread函数也可以采集语音。不过wavread函数只能读取计算机中已有的wav文件,也就是说,必须事先使用windows的录音机等设备把有关的语音资料录制并存储为wav文件。显然wavread不能用于实时的语音采集处理系统,另外,语音采样的频率和精度不能改变。回放时也有两个函数可以选用。可以使用sound函数,调用格式为sound(x,fs,其中x是采集到的数据序列,fs是采集时使用的采样频率。也可选用另一个函数wavplay,不过wavplay没有sound适应性强,只能用于windows平台。②语音分帧技术。语音信号的存储和处理都是按帧进行的。语音信号是一种非平稳信号,进行时频分析及其他各种处理时一般要采用短时分析技术,即把长时间的语音数据串分成10~30ms的短时帧。可以使用Matlab的enframe函数对采集的语音数据进行分帧。利用enframe函数对采集的连续语音信号分帧时,可以同时选择添加哈明窗或矩形窗以满足频谱分析等信号处理的要求。调用格式为Y=enframe(x,N,R,即把序列x分成若干个长为N的帧,R为相领帧移量,帧长减去帧移量即得相邻帧和重叠长度,得到的Y是一个以N为行的矩阵,总行数即总帧数决定于X、N、R之间的大小关系。实际应用,N由采样时间间隔和一帧持续的时间长决定;R一般小于N的一半,具体取值还要考虑窗的类型。③有无声的判决。有无声判决在采集系统中作用非常大,它决定了系统开始采集存储与否,也是采集结束与否的依据,还可以为语音增强处理提供噪声源。判决标准的选择非常关键。短时帧能量是常用的数据之一,其运算简单但是难以区分清音与宽带噪声;过零率是另一个常用判决数据,过零率的特点是可以有效区分清音和噪音但运算复杂。采用短时帧能量和过零率双重标准可以增加有无声判决的准确性,同时也可提高程序运行效率。1.2音频信号的采集方法在音频信号处理方面,下面介绍一种简单,实用,经济的适用于中低频的信号处理方法,如图1所示。采集时将随时间变化的力、位移、时间变化的电压信号,并将其降压处理,其变化范围在一1—1V之间以满足声卡的输人要求,然后就可以将两路信号直接连接到声卡的LINEIN接口上,利用Matlab环境下数据采集工具箱(DataAcquisition采集声音信号,为提高声音信号的质量,可对采样频率等属性进行必要的设置。在对声音进行录制过程中,不可避免地会夹杂一些噪音,需要通过滤波器才能过滤掉这些噪音。实际上,数字滤波器设计是信号处理工具箱一个重要的组成部分,可以根据频谱的特点和处理信号的目的组成部分,设计出...