周建芳, 陈 新
(福州大学 物理与信息工程学院,福建 福州350002)
计算机声卡是一种常用的数据采集卡。所谓“虚拟仪器”就是借助于计算机的软硬件平台,并配以少量辅助设备(或器件),构成功能适合用户要求的仪器。系统操作直观、方便、灵活,如同在真实仪器上的一样[1]。实验室虚拟仪器工程平台 (LabVIEW,Laboratory Virtual Instrument Engineering Workbench)是一个图形化编程系统,集开发、调试、运行于一体,广泛应用于数据采集与控制、测试等领域[2]。基于声卡的音频信号分析处理系统,是在LabVIEW环境下利用声卡采集信号并对信号进行分析与处理。系统价格低、实用性好,在实验室应用与工程测量中具有广阔的前景。
声卡适合于采集频率在20~20 000 Hz范围内的音频信号。LabVIEW提供了丰富的函数库和子例程,还有专用的代码库,开发的虚拟仪器系统灵活性高,功能强大。基于声卡的虚拟音频信号分析处理系统应该达到以下目标:被测音频信号由话筒采集,声卡实现A/D 转换,经LabVIEW开发的虚拟仪器进行时域分析、频域分析和啸叫抑制处理。且在系统中增加了录音与回放部分,可以直接调用做比对分析。系统框图如图1所示。
图1 系统框
LabVIEW是一个基于G语言(Graphics Language)的测试系统软件开发平台。LabVIEW将广泛的数据采集、分析与显示功能集中在同一个环境中,用户通过定义和连接代表各种功能模块的图标创建虚拟仪器。
LabVIEW平台开发的虚拟仪器软件包括两个方面:前面板和程序框图。前面板是模仿真实仪器的面板,用于设置输入和显示输出。前面板中放置的控件在程序框图中都有相应的对象。程序框图用 G语言编写。程序由端口、图框、节点与连线构成[2]。
作为语音信号与计算机的通用接口,声卡的基本工作流程如图2所示。
图2 声卡的基本工作流程
声卡具有16 位以上的量化精度,且价格低廉、兼容性好等优点,其主要技术参数包括:采样频率、采样位数和缓冲区大小[3]。设置缓冲区,可以有效地保证声卡与CPU的协调工作,一般使用的默认值是8KB(8192字节)。
在LabVIEW环境中有专门的声音子选板,集中在Sound VI下,有3大模块Sound Input、Sound Output和文件。声卡的参数设置由Sound Input模块中的SI CONFIG函数完成,提供与声卡相关的函数,这些函数节点直接与声卡驱动联系,能够快速对声卡进行访问和操作,执行性能高[4]。
根据VI结构化的特征,系统采用友好的图形界面与用户进行交互。系统的功能模块包括:音频采集与存储、时域分析、频域分析、啸叫抑制和录音与回放。以下对各功能模块进行简要说明[5]。
利用LabVIEW中相关的函数节点,可以实现对音频信号的采集与存储。根据设置的声音格式参数从声卡获得数据。采集到的数据及其特性以波形图呈现于用户面前,且采集结束后,可以播放采集到的.wav文件。
音频信号采集过程分为初始化配置声卡、采样、释放声卡。由LabVIEW提供的SI CONFIG函数、SI START函数、SI READ函数、SI STOP函数和SI CLEAR函数完成。程序运行前先对设备ID、每通道采样数、采样模式、声音格式参数进行设置。声卡可设置为单/双通道,则运行音频采集与存储程序将实现单/双通道的音频采集;而无信号输入时采集的是系统噪声。数据存储功能是通过 Sound File Write.vi(写入波形至文件)实现,在前面板要设置信号存储路径,一般为采集的音频波形文件命名时默认扩展名是.wav[6]。
音频时域分析.vi可直接调用音频采集和存储.vi所采集的信号文件或其他待测的音频文件,测量其时域参数并显示相应的波形图。LabVIEW提供了大量的信号时域分析函数,如平滑滤波、加窗函数等。由于话筒采集的音频信号中含有周围环境的噪声,因此需要对采集的数据作滤波处理。程序中选用带通滤波器函数,高、低截止频率可根据被测对象固有频率的大小合理选择。通过时域分析,可测得幅度周期平均值、峰峰值(波峰/ 波谷检测)、信号的平均频率、均方值、方差等参数。还可以利用LabVIEW强大的信号处理功能,对信号进行时域内其他分析。
对信号进行时域分析有时不能反映信号的全部特征,因此要对信号进行频域分析,LabVIEW提供了丰富的信号频域分析节点。通过Sound Input Read读取输入的声音波形,将波形输入到FFT Spectrum. vi模块、FFT Power Specstrum. vi模块和其他频谱测量模块,一般测量频谱需要对输入信号做加窗处理,常选择Hanning窗。通过频域分析模块后分别输出未加窗的幅频谱和相频谱、分析后的功率谱波形、加窗后的幅频谱。另外为了便于观察,还输出处理前的时域波形[5]。图3为一被测音频信号的频域分析图。
图3 音频频域分析
话筒拾音的音响系统,都有反馈啸叫的可能。实际测试对讲系统的双向通话时,嵌入式硬件终端的话筒与喇叭距离太近,喇叭输出的声音直接被话筒拾音而产生啸叫。话筒啸叫的危害很大,直接影响听者的情绪。啸叫时输出的声压很大,破坏效果,影响语音质量。
声反馈啸叫实际上是一个或多个音频频率点在声学路径上形成了正反馈,导致一个或多个音频频率点被过分放大后通过扬声器送出“刺耳”的周期频率声音。即原理是音频系统存在正反馈形成的振荡。啸叫产生模型是:传声器拾音——前置放大——功率放大——扬声器——声学直达或反射路径——传声器拾音。目前在扩声系统中对啸叫的抑制方法有很多,如移相法、移频法、均衡法等。虽然抑制啸叫手段有所不同, 但都是为了破坏声音信号正反馈而形成振荡。移频方式抑制啸叫的能力比较显著。移频就是移动频率,将音频信号的频谱整体搬移几个赫兹,从而破坏构成声反馈的条件,减小啸叫发生的可能性,从而显著提高扩声系统增益[7]。它适用于各种类型的扩声系统中,具有极大的实用价值。
LabVIEW环境下信号移频处理过程如下:输入信号——窗函数选择——FFT——截取双边谱——单边谱移位——重构双边谱——IFFT——输出信号[8]。程序中多次调用数组选板提供的数组函数[9]。如图4所示。
图4 信号移频处理逻辑框
图5 啸叫抑制部分程序框
硬件终端采集语音时,必须采集到一帧或多帧后才能实现编码、打包及解码。因此在啸叫抑制模块中先对采集的数据进行了信号分帧处理(每帧长320个字节)再移频。其中将信号移频处理功能部分的程序单独编制成为一个子VI,在需要时直接调用,简化程序框图,如图5所示。
录音与回放模块设置声卡参数后运行程序可实现音频的录入,以及设置录制声音的文件名保存路径,并开发有对于保存的数据文件读取程序,实现.wav格式文件的回放。回放移频处理后的文件,抑制啸叫效果明显。该程序也可增添其它功能。
以计算机声卡对音频信号进行采集分析处理,借助LabVIEW软件平台,设计开发的音频信号分析处理系统,实现了对音频信号的采集、时域分析、频域分析以及啸叫抑制处理等功能。实验测试中,系统运行平稳,操作方便,分析处理结果较理想。而且,系统充分利用LabVIEW数据分析处理能力强、界面友好等优点,降低开发成本,方便实用,具有一定的参考和工程应用价值[10]。
[1] 曲丽蓉,胡蓉,范寿康.LabVIEW、MATLAB及其混合编程技术[M].北京:机械工业出版社,2011.
[2] 郝张红,刘先勇,袁长迎,等.基于声卡的虚拟音频信号采集与处理[J].微计算机原理,2007,23(12):98-99.
[3] 李江全,刘恩博,胡蓉,等. LabVIEW虚拟仪器数据采集与串口通信测控应用实践[M].北京:人民邮电出版社,2010.
[4] 史剑锋,常国栋,李志刚.一种基于LabVIEW和MATLAB 的语音识别方法[J].信息安全与通信保密,2007(07):57-59.
[5] 高丙坤,高润柠,王静,等.基于 PC声卡和 LabVIEW的音频分析仪设计[J].实验室科学,2010,13(04):117-119.
[6] 蒋灵搏.基于 LabVIEW 的音频检测系统设计[J].仪器仪表用户,2011,3(28):78-90.
[7] 郝为强.扩声系统移频增音的PSpice仿真分析[J].电声技术,2006,12(03):13-16.
[8] 刘钢.快速傅立叶变换在声音均衡和频谱中的应用[J].通信技术,2008,41(07):250-251.
[9] 杨君,吕镜清.FFT滤波误差分析[J].通信技术,2010,43(06):235-237.
[10] 高阳,黄征,徐彻,等.基于高阶频谱分析的音频篡改鉴定[J].信息安全与通信保密,2008(02):94-96.