声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2964|回复: 1

[编程技巧] 如何用Matlab对声卡采集到的声音信号进行延时?

[复制链接]
发表于 2006-11-30 09:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
求助:
1. 声卡信号的实时采集用什么函数?
2. 如何实现声卡采集到信号的延时?

谢谢各位!!!

[ 本帖最后由 ChaChing 于 2010-5-9 21:15 编辑 ]
回复
分享到:

使用道具 举报

发表于 2006-12-4 14:07 | 显示全部楼层
MATLAB有强大的音频处理函数和强大的数据处理功能,能够方便地产生各种波形的数据数组,同时通过音频处理函数又可以很方便的将数据数组传递给声音设备,并以特定的采样频率和传输比特位由声卡输出。本文以MATLAB6.5版和Waveterminal 192L声卡为例,介绍了实现T型波信号发生器的方法。
在进行通讯和DSP等试验过程中,信号源是不可缺少的一个工具,很多设备是使用信号源来模拟检测实际目标,来验证设备的功能及可靠性。通常,对于研制单一产品的厂家来说,需要某一固定的信号源即可,在市场上也可以找到性价比合适的产品。但对于某些开发人员来说,单一的信号源远远满足不了要求,他们可能需要各种频率、各种包络和精度的信号源来验证设计的可靠性。设计者通常很难找到完全符合要求的产品,而且价格一般也极为昂贵。此外,大多数信号源可能用一两天,从而造成极大的浪费。因此,自己研制出符合要求、高性价比的信号源成为很多厂家的选择。
使用硬件也可以完成过数字信号源的设计,其实现的大致思路是:先分析信号源的波形,对波形的一周期数据进行采样,存储到ROM中,再使用可编程逻辑器件对采样数据进行重复读取、A/D转换、滤波、放大;如想监测信号质量,对输出进行A/D转换,反馈到可编程逻辑器件进行分析、显示和校正。很多工程师会选择这样的设计思路,所得波形具有可靠性高、易于实现和精度高的优点。然而,是从选择思路、绘制原理图、设计电路板、制版、编程、调试和更改的整个设计周期可能达2、3个月之久,而用MATLAB和声卡去实现则更方便有效。
设计思路和软件实现方法
声卡是将音频输入数据转换为立体声输出的一种设备,输入信号同时也设定了声卡的采样频率和采样位数,普通声卡采样频率通常可选值为8,000Hz、11,000Hz、16,000Hz、22,000Hz和44,100Hz,而高性能的专业声卡的A/D采样频率最高可达96,000Hz,D/A转换频率最高可达192,000Hz。声卡的采样频率可以通过专业软件来进行更改和设置的。声卡输出位数为固定值,包括8位、16位和24位,这个参数标志声卡进行D/A转换时的转换精度,但要使输出信号更接近理想值,还需要高采样频率来做保障。
由于输出是一个T形波信号,具有一定的周期,在T形波以外输出零电平,因此界面设计(见图1)中应包括:中心频率、T形波上升段、平稳段、下降段时间间隔,T形波信号周期、采样频率的选择或输入/输出信号位数的选择,以及信号发送、演示、清除、发送暂停、继续和退出系统。其实还有很多软件可以对音频文件进行播放,因此又增加了一个按钮用于产生音频文件。将信号参数输入完全后,可以通过信号演示按钮对波形进行查看。对数据进行修改时,可先用信号清除按钮清空数据,或直接对数据进行修改,对信号发送暂停或继续也可进行控制。
a. 音频数据的产生方法
在应用界面中,共设置了中心频率、T形波上升段、平稳段、下降段时间间隔、T形波信号周期、采样频率和传输位共七个参数源,通过MATLAB强大的计算函数将其转换成声卡所能接受的音频数据向量、D/A采样频率以及数据向量的宽度。
Vs:一周期信号数据向量
Vup:上升段信号数据向量,
Vstb:平稳段信号数据向量,
Vdown:下降段信号数据向量;
Vs=[Vup,Vstb,Vdown]
Vup=sin(w×Pup),
Vstb=sin(w×Pstb),
Vdown=sin(w×Pdown),
w=2×3.1416×f。
Pup:上升段信号采样点,
Pstb:平稳段信号采样点,
Pdown:下降段信号采样点。
w:输出信号的角频率,
f:输出信号频率,由应用界面取得。
Pup=[0:point:tup-point]
Pstb=[tup:point:tup+tstb-point]
Pdown=[tup+tstb:point:tup+tstb+tdown-point]
Pt=[Pup,Pstb,Pdown]
point=1/fspl,为采样频率的倒数,中括号及内部数据表示由起始时间到结束时间以point为间隔而产生的数据向量,Pt为采样时间点。
b. 对T型波信号进行演示和信号清除
这两个功能分别由信号演示和信号清除两个按钮来完成,信号演示的实现方法是将采样时间点一周期信号数据向量使用plot函数,以二维图形的形式将信号显示在坐标轴上。坐标轴设置为自动调节,图形界面设置为系统菜单模式,这样可以方便对信号进行编辑、缩放和其它管理。信号清除只是在回调子函数中将中心频率、T形波上升段、平稳段、下降段时间间隔和T形波信号周期这5个文本框清零,并对坐标轴进行一个缺省设置,因此所显示的信号在座标轴中就会消失。
c. 对T型波信号进行发送、暂停和继续控制
信号发送是采用MATLAB“sound”函数,该函数的输入参量是音频数据向量、采样频率和转换位数,数据产生方法如上所述。由于信号是连续发送,因此需要使用一个循环对产生的音频信号向量反复读取发送,需要注意的是在函数sound后面需要加一个pause(T)语句,T的单位为秒,为一个信号的周期。加该语句是由于MATLAB是连续执行循环段语句的,并不管声卡是否已执行完一周期信号的D/A转换。发送暂停和发送继续是由一个全局变量对信号发送进行控制,当此全局变量为1时,发送继续,否则发送禁止,但应用此方法的缺点是信号并不能在暂停的时间点继续发送,而是从新的周期开始重复读取音频信号向量。
d. 输出波形文件和退出系统
这个功能由输出文件按钮来完成,是应用MATLAB的wavwrite函数将音频信号转换成.wav文件,文件中也包含了采样频率和数据宽度选项,增加此项的目的是为了能让更专业的音频处理软件对信号进行分析。通过执行应用程序和MATLAB的退出操作,使用“quit”命令退出系统。采用MATLAB的一点不足就是不




能将所有的M文件转换成能脱离MATLAB而独立运行的应用程序。
声卡输出波形分析
下面采用界面缺省参数输出信号,即信号周期为29.5kHz,上升段时间为15ms,平稳段时间为70ms,下降段时间为15ms,周期为1s,也可以推算出每周期有900ms是没有信号输出。对信号的采样波形如图2所示,经过仪器分析,时间误差可达到小于0.1ms。
对周期信号的傅立叶频谱分析如图3所示,信号的能量主要集中在29.5kHz的窄带范围内,是符合设计要求的。
信号的信噪比分析:通过对输出0伏值段分析即可判断信号信噪比和噪音信号类型,从而找出消除噪音的方法。对噪音波形进行局部放大,可看出此噪音为频率大于1M的锯齿波,波形如图4所示。
声卡输出噪音分析
Waveterminal 192L声卡的输出信号峰峰值为6V,而噪音信号的峰峰值为40mV,因而信噪比为20log(6000/40)=43.5dB,当数据宽度为8位时,D/A精度为1位;数据宽度为16位时,D/A精度为9位;数据宽度为24位时,D/A精度为17位。而Waveterminal 192L声卡的信噪比为104位,因此,噪音信号主要为电脑本身、电脑辐射和环境噪音。电脑本身的噪音主要来自于主机电源,声卡的电源信号取自计算机主板,因此主机电源的噪音会引入声卡。另外,接收T型波的设备,如被检验设备和示波器等,往往就放在主机旁边,主机的高频辐射会通过机箱缝隙而形成噪音。环境噪音是最容易被忽视的一个部分,因为这是一个频率仅有50赫兹的噪音分量,对于低频输出信号会有很大的影响。
降低噪音的解决方法
a. 通过消除噪声源来减小噪音分量
通过上述分析可知,噪音源主要来自于电脑本身、电脑辐射和环境噪音。选择信噪比较高的主机电源将会对消除噪音源起到重要作用。另外,测试设备再利用信号源时应尽量与主机保持1米以外的距离,以减少电磁辐射对设备的影响。对于环境噪音,当信号频率与50赫兹相差很大时可以忽略环境噪音对设备的影响,但当信号频率接近50赫兹时,应对被检测设备采取适当的屏蔽措施。
b. 采用滤波消除声卡输出的噪音
经实验测定,声卡输出的噪音大于1MHz,因此对于29.5kHz的T形波来说,通过滤波可以轻易地将噪音滤掉,同时还应考虑到环境噪音的影响,因此使用带通滤波器会得到更好的效果。当然,是否采取措施减小噪音,还应根据试验的要求决定,对于要求特别严格的信号源来说,靠MATLAB和声卡也是难以实现的。
本文小结
采用MATLAB和声卡来实现信号源,使设计者能快速实现多种方案,对信号源进行采集、分析和处理都带来了极大的方便。MATLAB有丰富的数据处理函数,可提供任意形式的数据源,同时也有很多音频处理函数支持声卡的运行。MATLAB强大的图形可视化功能可以做出友好的操作界面。使用这种方法实现信号源的不足是受采样频率的限制、噪音的影响较大,因此实际应用时还需使用专门的滤波仪器对输出信号进行处理。所以,用这种方案实现信号源,更适合与对输出信号质量要求不是很高,又需要在很短时间内得到一种或多种信号源的技术人员。
参考文献:
【1】 Shi Xiaohong, Zhou Jia, master GUI graph interface, Peking univ. press,2003.
【2】 Xue Dingyu, Chen Yangquan, System Simulation technology and application based on MATLAB/simulink, Tsinghua press, 2002.
【3】 Fan Yingle, Yang Shengtian, Li Tie, simulink application in detail of MATLAB, people's post-electronics press,2001.
【4】 James R.Armstrong F.Gail Gray,VHDL Design representation and Synthesis(Second Edition),China Machine Press,2002.
【5】 Hou Boting, Gu Xin,VHDL program and digital logic electronics design, XiAn electeonics science institute,1997.
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-19 18:38 , Processed in 0.052142 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表