基于LabVIEW实现网络语音通信
摘要:为了实现虚拟仪器的远程网络语音通信,依托LabVIEW强大的网络通信能力,采用NI公司开发的基于TCP/IP协议的DataSocket技术,编程实现远程语音数据的点对点传输。用此技术可以很大程度上简化甚至免除网络通讯编程,可以很容易在网络上实现高速语音数据传递。
引言
LabVIEW具有强大的信号采集功能和网络通信功能,这些功能使得LabVIEW的用户可以很容易编写出具有强大网络通讯能力的LabVIEW应用软件,实现远程虚拟仪器。为了将人的语音或某个地点现场的声音信号远传,可以依托LabVIEW这些功能,将联网计算机声卡上采集的语音信号,进行远程语音数据的点对点传输。应用环境的网络拓扑图,如图1所示。
1 利用DataSocket技术传输语音
LabVIEW实现网络通信有3大类方法:(1)使用网络通信协议编程实现网络通信,可以使用的通信协议类型包括TCP/IP协议、UDP、串口通信协议等;(2)使用基于TCP/IP的数据传输协议DSTP的DataSocket技术实现网络通信;(3)使用共享变量实现网络通信。由于网络语音通信要求实时性强。本文采用第二种方法即DataSocket技术实现网络语音通信。
DataSocket是NI公司提供的一种实时数据传输技术,可用于一个计算机内或网络中多个应用程序之间的数据交换,是专门面向测量和自动化工程的网络实时高速数据交换的编程技术。DataSocket克服了传统TCP/IP传输协议需要较为复杂的底层编程、传输速率较慢(特别是对动态数据)等缺点,大大简化了实时数据传输问题,它提供了一种易用、高效、可编程的软件接口,能够很方便地实现网络上的多台计算机之间的实时数据交换[1]。
DataSocket包括了DataSocket Server Manager、DataSocket Server和DataSocket函数库这几个工具软件,以及DSTP(DataSocket transfer protocol,DataSocket传输协议)、URL(uniform resource locator,通用资源定位符)和文件格式等技术规范[2]。在LabVIEW中,用户可以很方便地使用这些工具来实现远程数据采集。
语音传输程序用到以下两个DataSocket VI:
(1)读取DataSocket函数(ReadDataSocket.vi):该节点用于从打开的URL连接中读取数据。
(2)写入DataSocket函数(Write DataSocket.vi):该节点用于向打开的URL连接中写入数据。这里的数据可以是单个或数组形式的字符串、逻辑(布尔)量和数值量等多种类型。
2 语音采集
利用声卡采集语音信号实现语音信号双声道模拟输入。将麦克风(话筒)插在声卡的话筒输入端口,并将其插入声卡上的标记为“Mic In”的插孔中。通过该端口可以采集人的语音信号。
语音采集程序用到以下三个声音处理相关VI:
(1)配置声音输入函数(Sound Input Configure.vi):利用该VI配置声卡,并开始进行语音采集。采样率设置为44.1kHz。通道数为2(即立体声双声道输入),每采样比特数(即采样位数为16位,采样模式为连续采样,缓存大小设置为每通道10000个样本。
(2)读取声音输入函数(Sound Input Read.vi):利用该VI从缓存中读取数据。程序中,为了连续采集语音信号,将“读取声音输入VI”放在了一个While循环中,用于从缓存中连续读取语音数据,设置每次从每个通道中读取样本数为4410个。
(3)声音输入清零函数(Sound Input Clear.vi):利用该VI停止采样,并进行清除缓存和清除占用的内存等操作。
3 语音播放
利用声卡输出语音信号实现语音信号双声道模拟输出。将扬声器(喇叭)插在扬声器输出端口,并将其插入声卡上的标记为“Speaker”或“SPK”的插孔中。通过该端口可以外接音箱的音频线插头,从而播放通过网络传输过来的语音信号。
语音播放程序用到以下四个声音处理相关VI:
(1)配置声音输出函数(Sound Output Configure.vi):利用该VI配置声卡,并开始声音输出。采样率设置为44.1kHz。通道数为2(即立体声双声道输入),每采样比特数(即采样位数为16位,采样模式为连续采样,缓存大小设置为每通道10000个样本。
(2)调用读取声音输入函数(Sound Input Write.vi):该VI用于向缓存中写入信号,本项目用来向缓存中写入由网络传输过来的语音信号。程序中,在其外边添加一个While循环,实现连续写入语音数据。
(3)设置声音输出音量函数(Sound Output Set Volume.vi):该VI使用时串接在“设置声音输出音量VI”上,用于控制输出音量大小。
(4)声音输出清零VI(Sound Output Clear.vi):该VI用于停止输出并执行相应的清除操作。
4 程序实现
程序采用C/S(Client/Server)模式,即客户/服务器模式,包括一个服务器VI和一个客户机VI。这种模型设计人员要做两方面的开发,一是客户端采集程序和数据远程发布的程序的设计,另
DataSocket 语音通信 LabVIEW 201507 相关文章:
- 基于低能耗蓝牙的半双工语音通信(05-16)
- 基于SIP协议的模拟电台语音通信系统设计(12-28)
- 煤矿井下防爆型无主机语音通信系统设计(12-21)
- 基于无线传感器网络/ZigBee协议多跳语音通信结点设计(02-20)
- 了解RF无线电广播(03-12)
- PXI和LabVIEW应对下一代负载牵引测量速度(08-27)