基于LabVIEW实现网络语音通信

2015-09-07 16:33:06来源: eefocus
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。这种模型设计人员要做两方面的开发,一是客户端采集程序和数据远程发布的程序的设计,另一个是客户端数据的接收程序的设计。

程序的URL输入端口设置数据连接网络地址,可以使用psp、opc、ftp、http和file等通信协议传输数据,本程序根据写入数据的类型及网络配置使用dstp协议。dstp协议是LabVIEW专门为测试数据的安全快速的传输而设置[3-4]。

(1)服务器端VI采集语音信号,并利用写入DataSocket节点将数据发布到URL“dstp://127.0.0.1/TestWave” 指定的位置中。服务器VI的程序框图如图2所示。

 

(2)客户端VI,将传输过来的语音信号通过声卡播放出来。客户机VI利用读取DataSocket节点将数据从URL“dstp://127.0.0.1/TestWave”指定的位置读出,并还原为原来的语音数据送到声卡中。客户端VI的程序框图如图3所示。

本程序的URL输入端口地址配置为:dstp://127.0.0.1/TestWave,即只使用一台电脑模拟网络传输。另外,需要注意的是,在利用上述两个VI进行DataSocket通信之前,必须首先运行DataSocket Server[5]。

5 结束语

DataSocket面向测量和网上实时高速数据交换,可用于一个计算机内或者网络中多个应用程序之间的数据交换。使用DataSocket技术,可以更加方便地编写出LabVIEW的远程数据采集应用程序。所以本例利用DataSocket技术开发网络语音通信模块既能实现开发快速,又能实现软件模块的高效可靠。

关键字:LabVIEW  网络语音通信

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/Test_and_measurement/2015/0907/article_13004.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
LabVIEW
网络语音通信

小广播

独家专题更多

TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved