当前位置:首页 > 测试测量 > 测试测量
[导读]LabVIEW具有强大的信号采集功能和网络通信功能,这些功能使得LabVIEW的用户可以很容易编写出具有强大网络通讯能力的LabVIEW应用软件,实现远程虚拟仪器。为了将人的语音或某个地点现场的声音信号远传,可以依托LabVI

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包括了DataSocketServer Manager、DataSocketServer和DataSocket函数库这几个工具软件,以及DSTP(DataSockettransfer protocol,DataSocket传输协议)、URL(uniform resource locator,通用资源定位符)和文件格式等技术规范[2]。在LabVIEW中,用户可以很方便地使用这些工具来实现远程数据采集。

语音传输程序用到以下两个DataSocketVI:

(1)读取DataSocket函数(ReadDataSocket.vi):该节点用于从打开的URL连接中读取数据。

(2)写入DataSocket函数(WriteDataSocket.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通信之前,必须首先运行DataSocketServer[5]。

5 结束语

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

 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

NI提供的软件包经济省时,不仅帮助开发人员节省时间,还为创客提供了新的机遇

关键字: LabVIEW 自动化测试系统

强大的图形化编程工具使整个测试和测量过程的各个方面实现可视化

关键字: LabVIEW 图形化编程工具

摘要:对于每一型新机试飞,或者是重大的研究性试飞和验证试飞,都必须实施遥测监控。现基于TTS(TextToSpeech)语音合成技术,结合飞行试验遥测监控系统的不足,利用TTS引擎在LabVIEW开发环境下设计并实现了遥...

关键字: 飞行试验遥测监控系统 TTS LabVIEW

在科研以及应用软件领域,LabVIEW和MATLAB作为比较常用的2款工具,相信很多人都用过吧。简单的概括一下,LabVIEW侧重测试测量和数据采集,MATLAB侧重科学计算和数据分析。

关键字: LabVIEW matlab 混合编程

摘要:利用单片机和虚拟仪器LabVIEW在PC端设计了温湿度测量及控制系统,用于温湿度数据监测。该系统上位机为PC端监控界面,下位机为单片机,单片机采集温湿度数据,并将采集到的数据通过串口发送给监控界面进行监测和管理。该...

关键字: DHT11 LabVIEW 单片机

摘要:当前闭环步进电机在自动化设备中的应用越来越广泛,故为了进一步满足闭环步进电机的应用需求,采用LabVIEW上位机+运动控制卡+驱动器模块的控制方案进行了多轴运动系统的设计,通过设计的上位机软件实现闭环步进电机的实时...

关键字: 闭环步进电机 精度测试 LabVIEW

摘要:为满足某扭矩检测试验标准要求,基于LabView设计开发了一款扭矩检测装置,该装置能检测某类零部件的断裂力矩,满足试验标准要求,其他零部件的扭矩也可在该装置上检测。类似的扭矩装置可参考该装置进行设计。

关键字: 伺服电机 LabVIEW PLC

在下述的内容中,小编将会对LabVIEW的相关消息予以报道,如果LabVIEW是您想要了解的焦点之一,不妨和小编共同阅读这篇文章哦。

关键字: LabVIEW 测试测量 NI

一直以来,LABVIEW都是大家的关注焦点之一。因此针对大家的兴趣点所在,小编将为大家带来LABVIEW的相关介绍,详细内容请看下文。

关键字: LabVIEW 测试测量 测试仪器

摘 要 :为了实现对患者的远程诊断或监测,设计了相应的硬件模块采集心电、心率、脉搏、血氧饱和度和体温等生理信号,采集到的用户生理参数通过 WiFi 传输至上位机。上位机采用 LabVIEW 实现对用户生理参数的处理与显示...

关键字: 无线传输 生理参数监测 LabVIEW QRS 波形检测 微信小程序 单片机
关闭
关闭