实时音频采集(精选七篇)
实时音频采集 篇1
传声器阵列定位技术一直是国内外研究的热点, 在声目标检测、声源定位和语音增强等领域得到了广泛应用。空气中被动声定位技术[1]具有通视条件好、不受烟雾阻挡以及隐蔽性强等特点, 因此在军事领域也有较为广泛的应用。
在声阵列定位系统中, 声音采集部分的实时性和可控性直接影响到整个系统的实时性和稳定性[1]。为了得到精度高, 实时性好的声音信号, 需要采用高采样位数、转换速度快的A/D转换芯片组成采集电路, 尽可能高质量、高速度地采集信号, 成本较高。
DirectSound提供了强大的声音处理功能, 使得开发者在不需要知道声卡硬件细节的前提下开发出高性能的音频采集程序。本文以DirectSound音频组件为基础, 结合多通道声卡设计一组4通道实时声音采集系统, 同时讨论了利用DirectSound作为声音采集的声阵列定位系统。
2DirectSound基础[2]
DirectSound是微软公司开发的供DirectX编程人员引用的SDK平台音频组件, 它可以提供对声音设备的直接使用、低反应期混合以及硬件加速功能, 同时维持同已有设备驱动器的兼容[3]。DirectSound具有两个重要特性:速度快、可控性强。图1为DirectSound的件系结构。
DirectSound为声音实时仿真提供强大的API, 使开发人员绕开具体的硬件规范, 并充分利用硬件的加速功能, 达到最佳性能。在应用DirectSound进行声音捕获采集时, 是通过创建和管理相应的捕获缓冲区来实现的。为了控制相应的缓冲区, 用户常常需要在当前捕获位置到达缓冲区的某一点时通知程序, 用户可以使用通知接口的IDirectSoundNotify;SetNotificationPositions方法在缓冲区中设置任意数目的特定点, 以通知特定事件。
3声阵列定位系统
本文研究的传声器阵列定位系统是基于空间布放的4元传声器的圆形阵列, 采用DirectSound对声卡编程实现对声音信号的实时采集;信号处理采用时延估计算法, 时延估计算法的优点在于所需要的阵元少, 计算量小, 实时性较好。
本系统的组成主要包括三方面的内容:硬件系统、声音信号采集与定位显控程序以及声源阵列定位算法。下面对各方面内容作简单介绍。
3.1硬件系统
系统使用正四面体的传声器阵列阵形, 安装4个传声器阵元, 组成四元传声器阵列。4路传声器接收到的声音信号经过声卡采集后传送到计算机, 由计算机内相应的信号处理算法对接收到的信号进行计算, 调用显控程序将计算结果显示出来。整个硬件系统如图2所示。
在本系统中, 采用玛雅MAYA44 Pro声卡作为传声器信号采集的硬件接口。MAYA44 Pro是一款具有24bit/96KHz指标的4进4出专业音频声卡, 它具有PCI插槽设计, 可以和工控机或台式计算机直接连接。
3.2时延定位算法
利用目标运动时发出的噪声来确定目标的位置, 是被动声探测系统测定目标位置的基本原理[3]。系统以被动方式测出目标声源的参数, 利用声程差来确定目标方向和距离。
3.2.1 空间阵列定向数学模型
考虑空间任意分布的M元阵列[4], 阵元各向同性。分别用φ和θ表示远场中声源P的方位角和俯仰角, 如图3所示。如果用ri表示第i号阵元的位置, 则有undefined。
以1号阵元为参考阵元, 定义时延向量,
undefined (1)
式 (1) 中, τ1j 表示第j号阵元相对于第1个传声器阵元的时延量。定义远场的方向向量,
undefined
(2)
时延可以表示为:
undefined;
undefined
(3)
式 (3) 中, c为声速, R表示各个阵元到参考阵元的向量。可以通过各种时延计算法得到时延向量的估计值undefined, 则k的估计值可由式 (4) 给出
undefined (4)
把undefined转换为极坐标, 当阵列为空间三维分布时, 方位角和俯仰角分别为:
undefined
(5)
每间隔一定的时间就对目标的俯仰角和方位角进行一次估计, 从而完成对目标的跟踪[5]。
3.2.2 互相关时延估计算法
假设传感器M1、M2接收到的信号分别为undefined和undefined, undefined为目标声源信号, τ0为所要估计的时间延迟, undefined和undefined为加性噪声。假定undefined、undefined、undefined互不相关, 两传感器接收信号的模型为:
undefined
(6)
用来确定两相关信号之间的时延最直接的方法就是互相关函数法, 则undefined和undefined的互相关函数为:
undefined
由上述假设undefined、undefined、undefined互不相关, 可得:
undefined (8)
式 (8) 中, undefined表示为源信号undefined的自相关函数。从而可知, 当τ-τ0=0时, 两个接收信号的相关最大, 选择相关函数峰值点位置作为时延估计值[6]。
4 实验结果
为了测试此实时测向系统的性能, 在半消声室内进行了测试实验, 并同时针对单个目标的情况做了场外实验。
4.1半消声室内实验结果
在半消声室内, 背景噪声低, 测向较为准确。实验中间隔一段时间旋转阵列, 从图4可以看出声源方向的变化。
当声源位置发生移动时, 所测得的声源的方位角也发生明显的变化。在图4中横轴是时间轴, 单位为秒 (s) , 其中0s是当前时刻计算出来的方位角, 标定负时间值为以前时刻, 例如-10s所对应的角度是以前10s所计算出来的方位角。
在图4中大约-40s处出现的大的跳变, 这是由于声源转动过程中的陡动所引起的。
4.2场外实验结果
为了进一步检测系统的测向性能, 进行了外场实验。实验中, 目标声源为汽车从远处逐渐靠近阵列系统, 然后远离。图5为阵列系统第1路传声器采集到的汽车噪声信号, 可以看到汽车由远及近, 信噪比逐渐增加。
图6是在现场实时测向的截图。横轴是时间序列, 每点对应20ms左右数据的计算结果, 纵轴是方位角 (度) 。从图6可以看到, 在近处信噪比较高时, 测向精度较为准确, 测向的误差在±1度。但当目标在远处信噪声较低时, 并且存在其他干扰源时, 计算结果出现跳变, 这主要是此系统是针对单一声源定位。
5结束语
本文设计了一个实时被动声阵列定位系统, 使用DirectSound实现了声音的实时采集, 并具有计算能力强、实时性好的特点。通过外场实验对此系统的整体性能进行了检测, 实验结果表明:系统结构简单, 便于携带布放。在近处信噪比较高时, 侧向结果较好, 误差在±1度, 另外, 此系统工作稳定、可靠性强, 适用于野外作业。
摘要:DirectSound提供了强大的音频处理功能, 使得开发者在不需要知道声卡硬件细节的前提下开发出高性能的多媒体程序。本文结合笔者的开发实例, 详细阐述了使用DirectSound实现实时音频采集的方法, 并设计实现了基于时延估计算法的声阵列定位系统。
关键词:DirectSound,实时音频采集,时延估计
参考文献
[1]赵玉洁.声测定位技术的现状和发展趋势.声学与电子工程, 1993, (4) :37~41
[2]杨亦春.反直升机智能雷弹声复引信技术-时延估计、目标定位和识别及系统设计.南京理工大学, 2000 (1)
[3]朱春喜, 吴贵鲜.DirectX5/6高级多媒体程序开发.北京:北京航空航天大学出版社, 1999.4.
[4] C.H.Knapp, G.C.Carter.The generalized correlation method for estimation of time estimation of time delay.IEEE Trans.Acoust.Speech Signal Process.1976, Assp-24 (8) :320~327
[5]唐建生, 孙超, 钱汉明.基于时延估计的任意阵列单目标角跟踪试验研究.西北工业大学学报.
一种基于DSP的音频实时处理系统 篇2
随着VOIP的广泛应用以及多媒体通信技术的发展和成熟, 人们对互联网语音通信的音频品质提出了更高的体验要求。主流的视频会议系统由原先的14 kHz升级到22 kHz的音频带宽, 这也标志着语音通信已经真正转化为高品质音频通信的应用阶段。当然在基于互联网的音频通信中, 声学回声和噪声一直是影响音频质量的最为关键因素之一。
声学回声消除成为提升音频通信质量的一个非常重要的环节。声学回声消除采用了自适应滤波来估计回声产生的回路特征, 并不断修正自适应滤波器的系数, 使得估计值更加逼近真实回声, 最后从话筒信号中去除估计的回声, 以达到回音消除的目的。
声学回声具有信号冲激响应时间长, 特征分布范围广且多路径反射和时变的特点, 自适应滤波器在估计回声路径的过程中容易受到这些不确定因素的干扰, 当然外部环境的噪音也是一个重要的因素。
本系统结合多种已有信号处理算法, 有效提升了声学回声的双工能力和收敛速度, 并有效避免了使滤波器发散的多种因素, 提升了滤波器的处理效率。同时利用高速浮点DSP对回声消除和噪声消除进行了整体的实现。
系统采用了频域的MDF自适应滤波算法, 将MMSE Noise Suppressor和多个VAD添加到回声消除器中。在加入滤波器系数更新模块和非线性检测模块后, 使得系统在更恶劣的噪音环境下以及双方通话过程中, 一样具备良好的回声消除和噪音消除能力。整个核心运算部分均在频率域内完成, 也大大降低了运算量, 最后通过调整DSP的数据结构, 合理运用DSP的资源和指令加速, 实现了基于DSP的高效能实时音频处理器的设计。
1音频处理系统相关算法
1.1 声学回声消除
声学回声消除的基本原理是通过自适应滤波器估计声学回声路径的特征参数, 产生一个模拟的声学路径, 得出模拟的声学回声信号, 并从参考信号中减去此信号, 实现回声的消除。图1给出了一个最为常见的声学回声消除器AEC的原理图。
1.2 结合噪音消除和静音检测的回声处理系统
1.2.1 MDF滤波器基本结构和算法原理
MDF (Multi-delay Block Frequency Domain Adaptive Filter) [1]是一种将原有的多阶滤波器分为K个等分的子块, 在每个长度为N的子块能进行自适应滤波的方法。如此能降低多阶自适应滤波器大量的运算量。F表示对2N×2N的矩阵进行FFT变换[2], 若v表示信号帧序号, 而diag表示对角矩阵运算, 则:
undefined
假设实际路径产生的回声信号为y (v) , 通常也叫近端信号, 则:
undefined
式中, undefined, 它表示滤波器估计的第k个子滤波器的系数。
具体细节可以参考文献[1]。
1.2.2 改进的回声消除系统
如图2所示, 通过加入静音检测算法 (VAD) 对输入信号的状态进行判断, 不仅可以减轻实际的运算量, 也可降低噪音对自适应滤波器的干扰, 在一定程度上避免了滤波器发散的情况。同时加入MMSE Short-time Spectral Amplitude Estimator[3]替代了传统的非线性处理器 (NLP) 算法。在频域内对参与回声的频谱能量进行估计, 计算增益, 最后达到相对平滑的残余回声和噪音的处理。
通过对滤波器状态参数的跟踪, 根据滤波器当前是否正常收敛, 残余回声估计模块的输出结果会自动调节估计值的大小, 避免在滤波器正常收敛的情况下, 抑制残余回声导致处理后正常信号损失过多的问题。
图2中采用的静音检测算法 (VAD) 采用了同时检测短时能量与过零率的方法[4], 保证了判断的可靠性。在远端语音不存在的时候, 没有必要进行回声消除, 只需要进行本地的噪音消除, 若本地语音不存在则不需要做任何处理。
结合VAD系统更有效地减少了对噪音和回音估计的误差范围, 通过对滤波器系数更新的学习和调整功能使得在双方通话过程中音频信号具备更好的信噪比。通过非线性信号检测模块加强了整体消除回音的能力。
2基于DSP的音频处理系统实现
2.1 硬件平台
DSP的选型需要考虑运算速度、成本、硬件资源以及程序的可移植性等多个问题。由于算法的浮点特性, 本文采用了美国德州仪器 (TI) 的TMS320C6713B浮点DSP作为核心处理器, 通过使用JTEG标准测试接口、EDMA控制器、GIPO通用输入输出端口以及多通道音频缓冲串口 (McASP) 等主要片外设备来完成系统的设计。
TMS320C6713B可以工作在225 MHz主频上, 片内有8个并行处理单元, 分为相同的两组, 其体系结构采用甚长指令字 (VLIW) 结构, 单指令字长为32 b, 8个指令组成一个指令包, 总字长为256 b。L1支持4 KB的程序缓存以及4 KB的数据缓存, L2支持64 KB的缓存。32 b的外部存储器接口 (EMIF) 。与SDRAM等无缝连接, 可以寻址256 MB。
由于系统运行过程中需要实现的算法较多, 仅依靠TMS320C6713B的192 KB片内RAM来执行程序是很困难的。本文使用了EMIF的接口扩展了SDRAM作为算法和数据的存储区域。采用TLV320AIC23B实现音频输入和输出, AIC23支持48 kHz带宽、96 kHz采样率的双声道立体声A/D, D/A, 音频输入包括了麦克风输入和线路输入。
系统的硬件平台如图3所示。
2.2 基于DSP的软件实现
基于DSP的实时处理的实现, 本文将AIC23采集到的数据先存储到SDRAM中, 在需要处理的时候利用EDMA实现Ping-Pong 缓冲, 将待处理的数据分批搬运到片内存储器, 结合高速缓存和片内内存设计合适的数据结构, 并将数据对齐, 这样大大减小了数据搬移带来的开销。
DSP处理主流程图如图4所示。
基于Ping-Pong缓冲结构的音频处理流程如图5所示。
通过对音频处理算法中数据结构的调整和优化, 将Ping-Pong缓冲架构的数据进行合理的安排, 使得EDMA的数据传输和Process AEC线程更好地并行处理。将当前需要处理的麦克风信号和扬声器信号的数据保存在片内地址内, 并将回声消除中用到的FFT和扬声器参考数据均放在片内地址处理。将算法的其他辅助数据结构均放在SDRAM。这使得片内资源得到最大化利用, 并且很大程度地提升了整个系统的运算效率。
参考TI DSP相关优化资料, TI的编译器选项使用-mv6700, -O3, -oiO, -pm开关, 使得编译的代码能更多地利用TMS320C6713B的硬件资源和浮点指令, 参考了TI带的FFT加速函数, 结合实际算法做了局部的改进, 使得所有算法最终在TI TMS320C6713B上均能实时高效的运行。
3结论
声学回声消除以及噪音抑制等算法在多媒体通信的音频处理中起着至关重要的作用。
本文通过结合相关的自适应滤波器以及非线程处理和噪音抑制等算法, 并在基于TI的TMS320C6713B上实现和优化, 实现了高效率的声学回声、噪声消除实时处理系统。通过实际应用表明, 该系统对噪音消除可达40 dB以上, 对回音消除可达50 dB以上, 并具备良好的双工处理能力。目前在本系统的基础上已经延伸扩展出了多路输入/输出的专业数字音频处理器, 并实际应用在视频会议系统中, 取得了较好的体验效果。
摘要:声学回声消除器一直是视频会议系统不可缺少的组件。将回声消除算法结合噪音消除和静音检测算法等, 提出一种改进的实时音频处理系统方法, 并在TMS320C6713B上实现, 能够有效改善噪音、双工检测、非线性回声等导致自适应滤波器发散的问题。该系统在保证正常双工通话的同时, 对非线性回声的抑制有着明显的改善效果。
关键词:声学回声消除,噪音消除,静音检测,语音信号处理,DSP
参考文献
[1]SOO J S, PANG K K.Multidelay block frequency domainadaptive filter[J].IEEE Transactions on Acoustics, Speech, and Signal Processing, 1990, 38 (2) :373?376.
[2]COOLEY J W, TUKEY J W.An algorithm for the machinecalculation of complex Fourier series[J].Mathematics ofComputation, 1965, 19 (90) :297-301.
[3]EPHRAIM Y, MALAH D.Speech enhancement usingminimum mean-square error log-spectral amplitude estima-tor[J].IEEE Transactions on Acoustics, Speech and Sig-nal Processing, 1985, ASSP-33 (2) :443-445.
[4]何强, 何英.Matlab扩展编程[M].北京:清华大学出版社, 2002.
[5]DERKX R M M, EGELEMEERS G P M, SOMMEN P CW.New constraining method for partitioned block frequen-cy-domain adaptive filters[J].IEEE Trans.on Signal Pro-cessing, 2002, 50 (9) :2177-2186.
[6]BENESTY W H, BENESTY J, NAYLOR P A.An im-proved proportionatie multi-delayblock adaptive filter forpacket-switched network echo cancellation[C]//Proceed-ings of the 13thEuropean Signal Processing Conference, An-talya, Turkey:EUSIPCO, 2005.
[7]TI.TMS32C6000 Programmer′s guide[M].[S.l.]:TI, 2001.
[8]TI.TMS32C6000 CPU and instruction set reference guide[M].[S.l.]:TI, 2000.
[9]刘芳.数字语言学习系统实时、多点语音通信的实现[J].现代电子技术, 2010, 33 (9) :148-150.
实时音频采集 篇3
1 硬件概述
该系统采用美国Texas Instruments公司TMS320VC55X处理器,其继承了C54X系列的发展趋势,低功耗、低成本,在有限的功率条件下能够保持优良的性能。工作在0.9 V,其核的功率仅为0.05 W/MIPS,性能可达800 MIPS,对数字通信、语音处理等便携式应用提出的挑战提供了有效的解决方案[1]。以TMS320VC5509A为例,该芯片共有3个多通道缓冲串口,分别为McBSP0、McBSP1、McBSP2,每个串口接收和发送数据使用独立的时钟,支持连续传送,可直接与多媒体数字信号编码器的工业接口以及ADC/DAC接口实现无缝连接,通过CPU或DMA对16 bit寄存器访问实现通信,由DX引脚发送数据,RX引脚接收数据。通信时钟和帧同步有CLKX,CLKR,FSX以及FSR引脚来控制。TMS320VC5509A芯片提供6个通道DMA控制器,可独立于CPU完成4个标准接口的数据传输。每个通道可从一个数据源地址读取数据后写入另一个口或目标地址。特别指出5509芯片具有64 kB双访问RAM,其结构由8 个4 kB×16 位的块组成,允许两个端口同时访问,提高了系统速度[2]。
TLV320AIC23B是TI公司推出的一款高性能立体声音频编解码器,内置耳机输出放大器,支持MIC和LINE二选一的输入方式。输入和输出都具有可编程的增益调节功能。TLV320AIC23B的模/数转换器(ADC)和数/模转换器(DAC)集成在芯片内部,可以在8 ~96 kHz的采样率下,提供16 bit、20 bit、24 bit和32 bit的采样数据。ADC和DAC的输出信噪比分别可达90 dB和100 dB。AIC23B 通过外围器件对其内部寄存器进行编程配置,其配置接口支持SPI总线接口和I2C总线接口,如表1所示。
AIC23b数据传输格式支持右判断模式、左判断模式、I2C 模式和DSP 模式4 种方式,其中DSP 模式专门针对TI DSP设计。这两款芯片的I/O 电压兼容,从而使得二者可以无缝连接,因此,基于DSP和音频Codec芯片AIC23B构建的硬件系统是一种理想的语音信号处理系统。在语音信号处理系统中,AIC23 主频为12 MHz,A/D 和D/A 转换器的抽样频率为8 kHz[6],模拟音频信号由LINEIN/MICIN 输入到该芯片,这些参数需要通过McBSP1 对AIC23 进行配置实现。模拟音频信号通过A/D 转换、编码后,由数字音频接口传送给DSP 的串口McBSP0,并接收DSP处理后的数据,收到的数字音频信号经解码、D/A 转换后,从HEADPHO/LINEOUT 输出[4]。本系统采用DSP模式,如图1所示。
I2C总线协议是由Philips公司开发的两线式串行总线,用于连接微控制器及其外围设备,该协议已广泛地应用于数字通信系统硬件电路设计中。
AIC23B与微处理器的接口有两个,一个是控制口,用于设置AIC23B的工作参数,另一个是数据口,用于传输AIC23B的A/D、D/A数据。用I2C总线与AIC23B的控制口接口,对AIC23B的各个控制寄存器进行设置。McBSP的发送与接收时钟均由AIC23B提供。
在DMA应用中,可以赋予每个通道的bit流高低的优先级。每个DMA通道的同步事件为MCBSP串口收发事件,同时每个通道某个事件完成后可向CPU发送一个中断。用户可以编写代码修改寄存器配置,当DMA在进行数据传输时,只要用户使能该通道,就可将配置寄存器复制到工作寄存器中[5]。另外DMA支持自动初始化模式,可以在块传输过程中反复复制,连接示意图如图2所示。
2 软件系统设计
方案中两路麦克风输入数据,两路耳机输出数据。在此给出一路信号的接收处理发送过程,另一路信号设计思路相同。
在DARAM中开辟缓冲和处理单元,数据传输均采用DMA独立于CPU的方式。CPU只有在接收DMA触发中断后对数据进行处理,并将处理后数据拷贝到DMA发送缓冲。为保证整个传输过程中无数据丢失,DMA接收端采用半帧中断的方式接收数据。在数据载入过程中,可以选择两个区域进行操作,将数据区分为receive1与receive2用于保存载入的数据,同时开辟程序运行区process1和process2用于运行程序。当receive区域触发半帧中断,CPU读取receive1中的数据并将其复制到process1中,调用处理函数proc1,在CPU进行相关信号处理时,DMA继续将数据载入receive2,其满时触发整帧中断,DMA自动初始化将receive1覆盖。CPU此时即可将receive2中的数据复制到process2中,调用处理函数proc2,这样receive区域交替更新,即可实现程序的不间断运行。
每次中断服务程序的运行时间必须小于半帧中断的间隔时间。此方案可以保证系统的延时足够小。在使用该方案时,用户必须根据自己的需要设计合适的采样频率和缓冲数据区的大小。为提高系统稳定性,实验可以根据要求设计中断的优先级。系统软件设计如图3所示。
3 结束语
系统采用DSPVC5509作为核心处理器,充分利用了 DSP片上资源,采用独立于CPU的DMA实现了数据的实时采集处理以及发送,降低了总线占用率。设计的可更新缓冲区不仅符合DMA传输要求而且避免了数据丢失,实时更新减少了数据空间的浪费。另外该系统具有低功耗、稳定性高的特点,可以根据用户需求进一步扩展。
摘要:采用TMS320C5509A作为核心处理器,给出了一种利用DMA结合多通道缓冲串口McBSP组成的语音信号采集系统的实现方法。合理分配了数据缓冲空间,可靠稳定地实现数据的实时更新,完成双路立体声信号的实时采集、处理和发送。阐述了AIC芯片与DSP连接的配置和数据接口的设计方法,给出CODEC与DSP之间数据传输的程序示例。试验证明,该系统能够高精度、高稳定地完成音频信号的采集处理和发送任务,适用于个人便携式音频通信设备的驱动开发。
关键词:DSP,DMA,TLV320AIC23B,实时采集处理,缓冲更新
参考文献
[1]TI Conpration.TMS320VC5509 fixed-point digital signalprocessor data manual[M].Texas:TI Conpration,2001.
[2]刘向宇.DSP嵌入式常用模块与综合系统设计[M].北京:电子工业出版社,2009.
[3]丁玉美,高西全.数字信号处理[M].西安:西安电子科技大学出版社,2005.
[4]TI Conpration.Stereo Audio CODEC,8 to 96 kHz[M].Texas:TI Conpration,2001.
[5]王念旭.DSP基础与应用系统设计[M].北京:北京航空航天大学出版社,2001.
实时音频采集 篇4
对话嘉宾:
中兴云计算&IT经营部政企业务市场总监........钱敏
Polycom中国大区副总裁、中国区总经理.........李钢
在当前的IT行业, 云无疑是大家关注的焦点, 在视频会议领域也不例外。在“涉云”的热潮之下, 视频会议的发展也深受影响。本期《通信世界周刊》将与各专家从视频会议角度探讨云计算的应用服务。
复杂IT管理的解放
《通信世界周刊》:
云视频会议能为客户带来什么样的价值和影响?与现有视频会议模式相比, 其最大的区别在哪里, 优势何在?
钱敏:
云的技术对于视频会议的影响可分短期、长期两个角度。
从广义云概念出发, 传统的用户自建视频会议系统可看作企业自建的私有云, 从业务形态上, 已具有云管端模式。例如我们率先帮运营商实现的IMS多媒体会议系统则是典型的公有云的形态, 具备了分布式、自动化的特征, 所以云的概念对视频会议而言, 并不是新鲜词, 它本身就是一个云服务。
从狭义云的角度来讲, 通常是指云计算技术——虚拟化、分布式、自动化、SOA、云安全等作为技术在视频会议中的运用。那么云计算技术如何渗透到视频会议中去, 选用哪些技术来解决目前视频会议遇到的问题, 我认为需要围绕用户体验来进行, 不能盲目为了引入而引入。如虚拟桌面技术, 这是个很好的技术, 虽然可以解决长期以来困扰视频通信软终端发展的穿越防火墙、与电脑兼容性的问题, 但仍然需要攻克的是能不能把其延时降到最低。双向的视音频业务对实时性非常敏感。长远来看, 分布式、自动化、SOA的技术应用让用户开会变得像打电话一样方便。
我们的愿景是让大家随时随地享受身临其境的面对面视频业务, 就如云服务所提倡的随取随用理念, 特别是随着移动宽带、移动终端的发展, 人们期望更佳的用户体验。所以众多厂商也纷纷努力, 如采用H.264high profile编解码, 实现IVVR应用等, 在尽可能节省带宽、降低成本的同时, 使视频会议能够更随时随地的召开, 满足人们对人临其境, “幻”想成“真”的追求。
李钢:
云计算正在改变着各个相关行业的未来发展。云视频技术是云计算在视频服务方面的一种具体应用模式, 通过视频服务的“云”技术, 让用户从复杂的终端设备、硬件维护和难以管理的软件中解放出来, 让这一切复杂的东西交由云端的专业人员与专业的服务器去处理。简单来说, 云视频概念就是让现在的各种终端用户在享用视频体验的时候回归到像打开电视一样那么简单。
更广泛的用户参与
《通信世界周刊》:
在您看来, 云视频会议服务 (将) 为视频通信产业带来的最大改变是什么?
钱敏:
云计算的加入, 可以让更多的人能够享受视频会议服务。虽然视频会议多年保持高速增长, 但真正能应用并享受到该服务的仍是少数, 广大的中小企业还未完全进入这个领域, 很多中小企业仍停留于音频会议, 而这其中最大的收益者将是企业用户。例如刚起步企业, 没能力建设自己的视频会议服务系统, 但可以找云服务提供商来实现, 并且随着将来越多厂商来提供视频会议云服务, 将可能出现更多的企业转向并享受视频云服务。
李钢:
网络环境的日益成熟, 人们对于视频会议的要求也在不断提升, 视觉的舒适性、视频服务的功能全面性已经成为用户选购考虑的首要因素。基于云视频解决方案建设的视频会议运营平台, 将为用户提供更优的音视频、内容共享质量, 提供更全面的视频应用功能。
当前, 云视频运营平台需要支持多种接入方式、支持各种视频、音频终端的接入、支持UC融合, 全方位地为企业用户提供随时随地的“面对面”互联互通。
而云视频核心平台的录播功能将支持高清音频、视频、共享内容的录制功能;支持多路的并发高清录制;支持高清会议直播、多种方式的会议点播及回放功能;提供大规模的录制内容存储及FTP定时上传功能, 提供最稳定可靠的、最全面的录播服务。
与此同时, 云视频解决方案还需要与其他合作伙伴的UC解决方案无缝连接, 提供独特的联合解决方案, 实现视频会议及各种办公系统的灵活应用, 从而最大限度地保护企业的已有投资, 提供更灵活全面的视频会议应用模式。
提升用户体验是关键
《通信世界周刊》:
目前关于云视频会议服务, 业界存在部分质疑的声音, 认为在炒作概念, 对于这种观点您怎样看待?要推动云视频会议服务切实落地, 您认为产业链各方应该需要做出什么样的努力?
钱敏:
事实上没有云概念的时候, 产业已经朝着这个方向演变, 当云的概念开始迅速火热后, 大家便用“云”来包装。
实时音频采集 篇5
1 系统设计方案
整个系统对四路模拟音频信号同时进行采集,得到的信号在DSP中进行算法处理,其他音频模拟信号分帧进入A/D转换芯片等待转换。转换后得到的数字信号,分帧输入到DSP中进行滤波算法高速处理。采用DSP的Mc ASP完成数字音频信号的接收和发送功能,通过D/A转换成模拟音频信号,经过放大电路输出音频。设计方案如图1所示。
2 硬件电路设计
2.1 硬件芯片
2.1.1 音频处理器
TMS320DM642是美国德州仪器公司(TI)推出的一款面向数字多媒体应用的32位定点DSP芯片,它保留了C64x原有的内核结构,工作频率可以达到600 MHz,每秒可执行指令数4 800 MIPS。具有丰富的外设接口,其Mc ASP接口主要应用在多路音频处理中,提供可以完全独立工作的数据接收部分和数据发送部分。
2.1.2 音频转换芯片
TLV320AIC23B是美国TI推出的一款高性能的立体声音频Codec芯片,其内置输出放大器,并且输出和输入都具有可编程增益调节。在该芯片内部高度集成了模数转换(ADC)和数模转换(DAC)部件,可以在8~96 K范围内采样,ADC和DAC的信噪比分别可达到90 d B和100 d B。同时,TLV320AIC23B具有低功耗的特性,回放模式下功率仅为23 m W,省电模式下小于15 m W[3]。
2.2 TLV320AIC23B和TMS320DM642的接口
TLV320AIC23B与DSP处理器的接口有两个,一个是控制口,用于设置TLV320AIC23B的工作参数,另一个是数据口,用于传输TLV320AIC23B的A/D、D/A转换数据。在系统中,将TMS320DM642的Mc ASP的帧同步配置成Burst模式,与TLV320AIC23B数据口接口;使用IIC总线与TLV320AIC23B的控制口接口。其硬件连接如图2所示。
图2中Mc ASP接口与4片TLV320AIC23B芯片连接,完成4路音频信号的采集。MODE引脚接地,把4片TLV320AIC23B中的U1、U3的NCS引脚接地,另两片U2、U4的NCS引脚接VCC。为了使用TLV320AIC23B的IIC接口配置内部寄存器,需要额外采用1片SN74CBT3257对4片TLV320AIC23B的IIC接口分别控制,SN74CBT3257的端口选择信号由TMS320DM642的GPIO引脚输出[4]。Mc ASP的AXR[1]、AXR[3]、AXR[5]、AXR[7]分别为4路的数据输入,AXR[0]、AXR[2]、AXR[4]、AXR[6]为数据输出,4个通路的帧同步信号、发送与接收时钟是共用的。
2.3 TLV320AIC23B的数据口
TLV320AIC23B的数据口有四种工作方式,一般采用DSP和IIS两种模式。其区别仅在于DSP的Mc ASP帧同步信号的宽度。前者的帧同步信号宽度可为一个位长,后者的帧宽度必须为一个字长。系统中采用DSP模式,实现数据接口的无缝连接。当Mc ASP为从模式时,Mc ASP的接收时钟与帧同步信号都由TLV320AIC23B提供;当Mc ASP为主模式时,Mc ASP产生所有的信号。并采用EDMA访问数据端口、读写音频数据,Mc ASP接口的发送事件或接收事件产生时,EDMA自动接收或发送数据,无需CPU的参与。其在DSP模式的时序如图3所示。
2.4 TLV320AIC23B的控制口
TLV320AIC23B芯片的控制端口信号包括片选引脚NCS、控制端口时钟信号引脚SCLK、控制端口数据信号引脚SDIN和控制端口模式选择引脚MODE。其控制端口支持三线SPI协议和两线IIC协议,两类接口选择由MODE引脚状态决定。在系统中,将MODE引脚接地,配置为IIC接口。使用IIC总线对TLV320AIC23B配置的时,IIC总线选择7位地址的寻址方式,并由于TLV320AIC23B只有写操作无读操作,因而其通讯协议为每个WORD的前7-Bit为寄存器地址,后9-Bit为寄存器内容[5,6]。每片TLV320AIC23B只有两个不同的IIC从设备地址,由NCS引脚状态决定,当NCS引脚为低电平或高低平时,芯片的IIC设备地址分别为0011010和0011011,即一个IIC总线只能配置两片TLV320AIC23B。因此,系统采用多路信号开关SN74CBT3257把TMS320DM642的IIC总线切换成两路IIC总线实现对4片TLV320AIC23B的配置。
3 软件设计
DSP的软件设计的主要任务是初始化和实现语音处理算法。在开发DSP应用程序时,可以在CCS环境下编程,利用TI提供的相关驱动程序,这样可以节省开发时间,降低程序开发难度[7]。
3.1 配置IIC总线
利用CSL库中的IIC_open函数和宏进行复位并返回总线句柄,然后利用总线句柄和总线控制器的值组成结构体作为IIC_config的参数配置总线,以满足控制接口的配置[8]。
3.2 TLV320AIC23B的初始化
在设计音频处理程序时,需要配置TLV320AIC23B的控制寄存器。ANAPATHREG寄存器用于控制模拟音频通道,模拟音频信号来自麦克风,则该寄存器的值设为0x0015;模拟信号时音频信号,该寄存器值设为0x0011。DIGIFREG寄存器用于设置音频接口工作模式,将工作模式设置为DSP模式,其值为0x0043。SAMPLERATEREG寄存器用于设置A/D、D/A的采样率,设SAMPLERATEREG的值为0x000D,将A/D、D/A的采样率都设置为8 KHz。
3.3 Mc ASP的初始化
在使用Mc ASP串口时,需要考虑很多因素,如时钟源、数据引脚、数据格式、数据传输模式等[9]。Mc ASP的配置可以通过设置各个控制寄存器来进行,设置PFUNC寄存器,使能Mc ASP的各引脚;设置PDIR寄存器,配置Mc ASP口引脚的输入、输出方向;设置AFSXCTL寄存器,设置时钟和数据格式;设置XFMT寄存器,高16位为有效掩码;设置XTDM寄存器中的XTDMS0和XTDMS1字段有效。设置SRCTL寄存器,配置串行器引脚。
3.4 音频信号处理算法
音频信号经过A/D转换采用之后,混合进入大量量化噪声和机器噪声,在DSP中使用滤波算法处理除掉信号中的干扰成分。为了保证信号的线性相位和稳定性,采用FIR滤波。对采集的音频信号处理后利用CCS3.3在计算机上实时显示,图4和图5分别为滤波前后的时域波形和频域波形。
通过图4和图5可以看出,输入的音频信号通过设计好的硬件电路,将采集到的数据经过算法处理程序,在时域和频域上,原始波形上的不规则毛刺得到了平滑。算法处理程序有效去除了混入的干扰信号。
4 结束语
设计了TMS320DM642和4路音频芯片TLV320AIC23B的接口电路,并给出了软件设计方法。实现了DSP对TLV320AIC23B的配置和数据通信,完成对4路音频信号的A/D转换采集,并对其中一路信号进行了FIR滤波处理。在CCS3.3上调试后,实现了处理后的音频信号的回放。处理后的语音清晰、稳定,可以满足各种嵌入式产品的语音需求。
参考文献
[1]胡涛,陈超.TLV320AIC23B与TMS320DM642的接口设计[J].仪表技术与传感器,2006(6):36-37.
[2]张杰,顾德英,李成铁.基于DSP的音频信号采集和处理设计[J].仪器仪表学报,2005,26(8):704-706.
[3]Texas Instruments Inc.TLV320AI23B data manual,2003:1-3.
[4]王跃宗,刘京会.TMS320DM642DSP应用系统设计与开发[M].北京:人民邮电出版社,2009.
[5]李倩然,周南.TMS320DM642与TLV320AIC23B通信的接口设计[J].电声技术,2010,34(11):45-47.
[6]黎泽清,王明泉,李博.基于DSP与TLV320AIC23B的音频处理系统[J].动化与仪表,2009,24(8):57-60.
[7]齐敏,王玲,韩韬.基于TMS320DM642的实时语音处理系统[J].电声技术,2009,33(1):65-67.
[8]Texas Instruments Inc.TMS320C6x Chip Support LibraryAPI Reference Guide,2004:1-15.
实时音频采集 篇6
语谱仪是语音处理研究中重要的观测、分析设备, 它对语音信号进行各种信号变换和处理后, 将其频谱或是诸如共振峰位置、Mel倒谱特性等变换域的特征参数显示出来。这些变换域特征对于语音识别、说话人识别、语音编码及合成等具有重要的意义[1,2]。最早的语谱仪是基于模拟电子技术的独立设备, 但今天完全可以利用PC机的硬件条件和计算能力, 通过软件开发, 实现一台基于操作系统提供的软硬件能力的虚拟语谱仪[3]。出于语音处理研究的需要, 我们已经实现了这样一台虚拟语谱仪, 它能够实时地把语音信号的波形和它的变换域特征在屏幕上同时显示出来。本软件利用了PC机的声卡来进行语音信号的采集, 其硬件性能已经可以满足语音信号数字化时对采样率和量化精度的要求。为了实现这一功能, 需要在程序中对声卡的硬件进行操作, 这是通过Direct Sound接口编程来实现的。
Direct X是微软基于COM规范设计的用于多媒体硬件的API接口, 而Direct Sound是其中的音频组件[4]。Direct X通过硬件抽象层HAL屏蔽了不同型号的硬件设备的具体细节, 通过软件模拟层HEL给开发人员提供了统一规范的调用接口, 这一设计使得基于Direct X的程序可以用最小的安装和配置的复杂性实现最大的硬件兼容性。同时Direct X能够提供相当全面、灵活的底层硬件访问和控制的能力, 比如Direct Sound可以对音频采集或播放的格式、定时等进行精确的控制, 还可以提供混音、硬件加速、3D处理等很多硬件功能。另外COM接口的效率很高, 程序运行的速度很快[5]。因此Direct Sound技术是我们的首选实现途径。
基于Direct Sound的音频信号采集的编程实现可以概括为如下三步:1、Direct Sound初始化及有关工作参数的配置。2、启动工作线程进行缓冲区的读取操作, 信号采集就是在这一步实现的。3、结束工作线程, 进行资源释放等清理工作, 结束音频采集。
1 Direct Sound的初始化设置
Direct Sound的初始化按次序包括如下几个步骤:
1.1 硬件设备的枚举。
调用API函数Direct Sound Capture Enumerate, 它将返回一个回调函数DSEnum Callback的函数指针, Direct Sound在系统中每找到一个可用的硬件设备就回调该函数一次, 向应用进程返回该设备的GUID及设备描述字符串。在DSEnum Callback的自定义实现中程序可以将多个设备描述形成一个列表供用户选择, 并记录其GUID用于相应硬件的COM接口的创建。1.2 COM接口及输入缓冲区的创建。
调用Direct Sound Capture Create函数来创建一个Direct Sound Capture对象。Direct Sound Capture Create函数接受选定的音频采集硬件设备的GUID作为输入, 返回一个指向COM接口IDirect Sound Capture的指针。接着调用该接口的Create Capture Buffer (LPCDSBUFFERDESC p BDS, LPDIRECTSOUNDCAPTUREBUFFER p DSC, NULL) 方法来创建输入缓冲区 (即采集缓冲区, Capture Buffer) 对象, 其中p BDS是输入参数, 指定所要创建的输入缓冲区的大小和格式, 它是一个结构指针, 该结构中最重要的两个成员一是dw Buffer Bytes, 它指定缓冲区的大小;二是lpwfx Format, 它指向一个WAVEFORMATEX结构, 设定了缓冲区的数据格式[6]。以下是一个wfx的实例, 它设定了语音处理研究中常用的音频信号采集格式:
如果所要求的缓冲区大小和指定的格式能够被硬件支持, Create Capture Buffer调用返回的参数p DSC就是创建成功的输入缓冲区对象的接口指针。
1.3 设置缓冲区通知。
首先用接口标识IID_IDirect Sound Notify调用输入缓冲区对象的Query Interface方法, 取得其IDirect Sound Notify接口的指针。然后调用IDirect Sound Notify::Set Notification Positions (DWORD num, LPCDSBPOSITIONNOTIFY pos) 来设置通知点。一般都会在缓冲区内的不同位置设置数个通知点, 具体个数由num参数指定, 而pos参数指向一个长为num的DSBPOSITIONNOTIFY的数组, 数组元素类型为结构DSBPOSITIONNOTIFY, 每个元素对应一个通知位置, 其成员为:
其中dw Offset指定该通知点距缓冲区头部的偏移量, h Event Notify指定该通知点将触发的信号量的句柄, 信号量可用API函数Create Event创建。
2 流式缓冲区访问
从编程的角度来说, 语音采集的关键就是硬件连续不断地将音频数据写入输入缓冲区, 而应用进程不断地从输入缓冲区读出数据的过程。由于语音是一个实时信号, 该输入缓冲区采用了流式缓冲区, 当写入操作到达缓冲区尾部要溢出时, 又从其头部开始写入, 即一个首尾相连的环形存储结构。这种新数据不断覆盖旧数据的循环要求在Direct Sound的写入操作和应用进程的读取操作之间建立一种同步机制, 否则如果读取快于写入, 会把同样的数据读取两次以上;如果写入快于读取, 数据会在应用进程还没有读出之前就被覆盖掉。虽然基于多媒体定时器的简单方案也能在一般情况下实现正确的读取时间控制, 但Direct Sound提供了一种基于信号量通知的同步机制, 我们设计的语谱仪软件就采用了这种更加安全和高效的方案。
2.1 读、写位置指针与缓冲区通知的同步机制。
在音频信号采集的过程中, Direct Sound维护两个位置指针, 即相对于缓冲区头部的两个偏移量, 其位置可调用IDirect Sound Capture Buffer::Get Current Position函数获得。如图1所示, 其中读指针指向当前可以被应用进程安全读取的数据块的最后一个字节, 写指针指向当前正在从硬件拷贝进缓冲区的数据块的最后一个字节。随着信号采集的进行, 读、写指针平行地向后移动, 写指针总是领先于读指针。从读指针到写指针之间是底层硬件正在操作的存储区, 其中的数据是不稳定的、无效的;而从写指针到读指针之间的缓冲区是应用进程可以读取的有效数据。就信号采集来说, 读指针提供了同步机制, 每当读指针移动到一个通知点位置时, 对应的信号量将被触发, 从而通知应用进程去读取相应的数据块。由于从写指针到读指针之间的有效数据的长度难以预测, 而且也不一定符合语音处理中的某些特定要求, 因此在我们的语谱仪设计中设置了4个通知点, 将缓冲区分为等长的4段, 每段长度是语音帧字节长度的整倍数。当每个通知点到达时, 只读取距该点之前2个段 (一半缓冲区长度) 的那一段的数据 (如图1所示) 。为了防止该段数据与无效数据块可能的重叠, 需要检查写指针的位置是否侵入了该段。如果侵入必须减小本次读取的数据长度, 不过根据多次实验, 我们发现在正常的设置下, 无效数据块不超过缓冲区总长的1/5到1/10, 侵入的情况在我们的测试中从未发生过。
2.2 事件驱动的采集线程。
事件驱动同步机制的具体实现方式为[7]:首先, 应用进程要调用Create Thread函数来创建一个完成采集的工作线程, 我们把该线程的入口函数定义为:DWORD WINAPI Record Thread (LPVOID lpv Data) , 它是专门负责读取输入缓冲区的, 其流程如图2所示。lpv Data指针一般指向一个结构变量, 该结构的成员是一些变量或控件的指针, 以实现采集线程与其它模块的通信。等待与录音有关的事件触发是调用Msg Wait For Multiple Objects函数来实现的, 该函数的计时器到参数应赋值为INFINITE以实现无限等待, 这样在录音过程中, 除了通知点到达引起事件触发外, Record Thread线程一直被Msg Wait For Multiple Objects函数挂起等待, 并不占用CPU时间。当通知点到达时才去读缓冲区, 具体是哪个通知点到达可以根据Msg Wait For Multiple Objects返回的事件序号来确定。停止采集事件是在停止按钮的响应代码中调用Set Event函数人工触发的。
2.3 缓冲区访问
在Direct Sound下对缓冲区的访问不是像通常那样提供一个指向物理内存的固定指针, 因为物理上的音频输入缓冲区可能位于声卡的板载内存上, 出于硬件屏蔽Direct Sound不会向应用程序提供该物理内存的指针, 而是提供它在系统内存中的映像的指针。同时在多任务环境中该映像的位置可能在音频采集过程中被系统调整, 因此这个指针是临时的, 每次对输入缓冲区的访问都要通过调用Direct Sound Capture Buffer对象的Lock函数重新获得该指针。Lock函数的输入参数包括要读取的数据块的偏移量及长度, 输出参数是该数据块的首指针及长度。注意由于该数据块可能发生了环绕, 即其范围超出缓冲区尾部重新回到头部, 因此Lock返回的指针及长度共有两对, 如果其中第二对指针及长度返回值为NULL, 则没有发生环绕, 只需要第一对即可;反之则发生了环绕, 此时欲读取的数据块实际上分成了两小块, 第一对指针及长度指向位于缓冲区尾部的那一块, 第二对指针及长度指向位于缓冲区头部的那一块。当输入缓冲区中的某部分数据被Lock函数锁定后, 必须在写指针移动到该块数据之前调用Unlock函数解锁, 否则可能会发生某些异常错误, 因此通常应用程序紧接着Lock之后会使用Copy Memory之类的函数把锁定的数据拷贝到别处去处理, 然后立即解锁。
3 结论
虽然本文所述的技术是用于语音采集的, 但基于声卡的信号采集技术在虚拟仪器的开发中具有一定的应用优势。从硬件性能的角度来说, 目前一些专业声卡可以在多个输入通道上实现192KHz的采样率及24bit的量化精度, 这对于很多应用场合已经足够了。如果需要更多的信号采集通道可以在PC机全部的PCI接口上安装多块声卡来实现。同时作为大量生产的消费类电子设备, 声卡的价格也低于类似性能的专业采集卡[8]。从软件的角度来说, 应用本文介绍的Direct Sound技术并与Visual C++结合, 其编程的高效率、代码的可维护性以及所开发的软件的稳定性、兼容性是专业采集卡提供的开发工具很难超越的。
摘要:在语音信号处理的信号特性分析或算法研究中, 需要首先实现信号采集功能。在虚拟语谱仪的开发中采用了基于声卡和DirectSound编程接口的软硬件方案, 它具有方便及高性能的优点。该文详尽地介绍了应用DirectX的音频组件DirectSound来实现语音采集功能的编程技术, 包括DirectSound的基本原理、如何初始化相关的软硬件环境、基于事件通知的同步机制、流式缓冲区的访问管理以及部分关键API的介绍。
关键词:语音处理,信号采集,虚拟仪器,DirectX
参考文献
[1]RABINER L R, SCHAFER R W Theory and Applications of Digital Speech Processing[M], Beijing, PHEI, 2011
[2]刘雪艳, 张雪英, 黄丽霞.Gammachirp滤波器组在语音特征提取中的应用[J].新型工业化, 2011, 1 (11) :21-28.
[3]黄紧德.多路完全同步采样的声信号采集系统的设计与实现[J].软件, 2013, 34 (2) :17-21
[4]Microsoft Corp., DirectX SDK[CD].USA Seattle, Microsoft Corp., 2008
[5]李中志, 汪学刚.基于COM技术的雷达数据处理软件系统设计[J].计算机应用与软件, 2010, Vol27, 27-29
[6]Microsoft Corp., MSDN[DB/OL].2008, http://msdn2.microsoft.com/en-us/library/default.aspx.
[7]胡晓军, 邓波.Visual C++高级开发范例解析[M].北京, 电子工业出版社, 2002
实时音频采集 篇7
Linux是一个基于Unix的操作系统,它也是Unix家族的一元,与Unix不同的是它可以运行在不同的硬件平台上。它于1991年诞生于芬兰的一个为大学生Linus Torvalds手中,不过当时还只是一个雏形,为了不让自己的这个羽翼未满的操作系统夭折,Linus将自已的作品Linux通过Internet发布。从此一大批知名的、不知名的电脑黑客、编程人员加入到开发过程中来,Linux逐渐成长起来。到目前为止,Linux的内核已经发展到了2.6.22,并在此基础上发展了数十种发行版,其中有经过长期发展洗礼的Redhat(Fedora),也有发展迅猛使用方便的Ubuntu。
在多媒体技术中,视频技术发展越来越迅速,比如在远程教育、在线视频会议、银行监控、危险地区探测以及智能家庭安防方面应用越来越广泛。由于Linux自身的特殊的发展过程使得它具有了得天独厚的网络性能,加上越来越丰富的视频支持和开源软件的优势以及对不同硬件平台的良好支持,使得Linux成为视频采集的最佳平台。
2 系统设计
2.1 硬件
硬件平台为PC机,决定图像的质量的一个首要的因素是摄像头,应该根据不同的应用场合合理选择。大体上有两种方案:普通视频聊天用USB摄像头和工业视频拍摄用摄像头。这两种方案在不同的技术参数上各有特点。如果仅仅是用于在线视频会议,则可以选用USB摄像头方案。如果是用于高清晰的拍摄监控,则需选用工业的摄像头,而且由于这种摄像的输出的是模拟信号,必须接入视频采集卡才能将模拟信号转换成数字信号提供给计算机处理。
硬件结构如图1所示,图像信号经过USB摄像头采集后,将数字信号直接提供给计算机进行处理。或者图像经过CCD摄像头采集,通过同轴电缆传给视频采集卡,经过视频采集卡转换成数字信号然后交给计算机。一般的采集卡会有多个视频接入口,按照采集能力的高低还可以分为多路实时采集和多路分时采集。如果是多路实时采集则可以在同一时刻输出多路视频信号。大多数的视频采集卡官方的驱动并不支持Linux,如果视频采集卡采用的是Bt8XX(Bt848/849/878/879)的话就没有问题了,因为Linux内核就提供了对Bt8XX很好的支持,其驱动为bttv(目前最新的版本为0.9),已经包含在Linux的2.6的内核当中。
本方案采用的是Honeywell GC-755P-A2-G工业级摄像头,采用的是微视Microview V110视频卡。USB摄像头用的是金河田的GD-202A,Linux本身支持ov511x芯片的USB摄像头,对于市场上大部分的采用ZC301的摄像头Linux也能够很好地支持。随着Linux的快速发展,对硬件的支持也越来越好。现在安装硬件相对于以前来说方便多了。将视频采集卡插入计算机,重启进入Linux之后系统会识别出硬件然后加载相应的驱动模块,模块包括bttv、bt878、videodev和tuner。然后安装Xawtv来预览,查看视频画面质量来进行测试。一般来说加载的模块和参数都不需要用户更改,要说明一下的是bttv这个模块,由的视频卡插入电脑后运行Xawtv出现的为黑白的画面,甚至有时候出现的是变形和重影的图像。这是bttv没有正确识别出卡的类型导致的,对于本方案中的视频采集卡可以采用指定卡的型号的方法来解决,首先卸载已经加载的模块rmmod bt878、rmmod bttv。然后重新加载模块并附上指定的参数modprobe bttv card=13。然后重新打开Xawtv来查看图像,则图像显示正常。
2.2 软件设计
Video4Linux是Linux下面为各种视频设备提供的统一的API接口,包括市面上常见的视频采集卡和USB的摄像头。视频设备在Linux下对应的文件为“/dev/video0”,如果视频卡支持多路视频输入或者PC上接了多个USB摄像头的话,视频设备文件会有多个比如“/dev/video1,/dev/video2”等等。
在Linux下面所有设备统一当作文件处理,要采集视频首先得打开相应的设备文件。然后才能对设备进行设置和数据采集处理。
1)打开视频设备
2)更改视频设备的设置
ioctl是设备驱动中对设备的I/O通道进行管理的一个函数,所有对设备属性的设置都依靠它来完成。在V4L中还提供了一个额外的ioctl函数用于对各种视频操作的控制。其中有:视频设备的基本信息,包括:设备名称,最大最小分辨率和信号源信息,采集而来的图像的各种属性,包括:亮度,对比度和灰度,还有信号源的属性和内存映射的设置。下面是一个简单的例子:
3)读取数据
首先我们要保证的是程序要等到下一帧图像准备好了才能开始读取,或者一个中断等待的信号。如果由中断信号产生就从系统调用中返回,这样信号才能传达到程序中。此外程序还检查用户是否实际上不想程序读取图像的时候等待,比如采用非阻塞I/O模式在图像没有准备好的时候可以继续做其他的事情。接下来从视频卡拷贝图像,这里的capture_w和capture_h是用来保持采集到的图像的宽度与高度的。
2.3 音频捕捉
对音频捕捉是通过对声卡的编程来实现的,声卡在Linux下对应的设备文件应为/dev/dsp和/dev/audio,这两个文件基本一样,提供/dev/audio是为了与SUN声音系统兼容。编程的流程与视频编程非常相似:
1)打开声音设备文件;
2)对声卡的采样量化位和采样频率等等进行设置;
3)读取声音数据;
4)播放。
代码范例如下:
由于篇幅的限制,其中设置声音采样频率和量化位数的代码没有写入本文当中。
3 结束语
该文介绍了利用一台普通的PC机,利用Linux作为开源软件所具有的低成本,资源丰富等优势。根据使用场所的实际需要,可同时对多路的高性能的专业摄像头和普通USB摄像头捕获的视频信号以及MIC捕获的音频信号进行采集。若结合多媒体视频音频的编码、解码技术和流媒体技术,充分利用现有的网络基础,则可以方便的实现监控、拍摄和远程教育等各种功能。
参考文献
[1]Stevens W R,Rago S A.Advanced Programming in the UNIX Environment[M].2th ed.Addison Wesley/Pearson,2006.
[2]李玉波,朱自强,郭军.Linux C编程[M].北京:清华大学出版社,2005.