基于LabVIEW的公交语音报站系统设计
2024-01-02吴哲
吴 哲
(西安交通工程学院机械与电气工程学院, 陕西 西安 710300)
随着经济技术的不断发展,城市中的交通出行方式也在不断地丰富。从最初固定线路的公交车到现今逐步走进日常生活的线路预约定制,从地面交通逐步发展为地面轻轨以及地铁轨道交通,可选择的出行方式越来越多。在乘坐公共交通工具的过程中,及时准确地获知当前所在站点位置,是提高乘客乘坐公共交通工具效率的一个重要因素。语音播报站点实时信息以及交通换乘信息,能够更直接更高效地将有用信息传递给乘客。在一些与人文历史相关联的站点,通过语音播报的形式,对人文历史信息加以介绍,也是城市文化宣传的有效途径。LabVIEW软件是NI公司提供的一款图形化编程软件,广泛用于测量、控制等领域,利用其自身的图形化编程方式,也可以实现具有特定功能且人机界面友好的功能软件。
1 公交站点信息语音播报的需求
公交站点语音播报,需要能够将整条线路的公交站名按照到站的先后顺序进行排列,在公交车行进过程中能够进行站点的切换,正确的对应当前站点站名,并语音播报站名信息,播报与当前所到站点相关的人文历史信息等内容。同时还应根据公交车的去程和回程的不同,调整站点切换的顺序。对于语音播报时候的语速和语调,应具备可调整功能。
2 公交语音报站系统设计
2.1 站点切换功能设计
公交语音报站系统是模拟真实的公交车行进过程,站点的切换由公交车司机通过点击公交语音报站系统前界面的“下一站”按钮,实现站点名称的切换。回程时,点击“上一站”按钮实现回程时候站点名称的切换。站点切换功能的实现是利用LabVIEW软件的“事件结构”函数来实现[1]。在系统设计中,将公交线路所有的站点进行编号,去程行驶的时候,通过点击“去程下一站”按钮,按钮状态值的改变,触发“事件结构”中程序的运行,进行初值的加1功能,改变之后的站点编号信息,用于对“条件结构”的条件分支进行选择。回程行驶的时候,通过点击“回程下一站”按钮,按钮状态值的改变,触发“事件结构”中程序的运行,进行初值的减1功能,改变之后的站点编号信息,也用于对“条件结构”的条件分支进行选择[2]。条件分支被选择后,会将该分支程序中的站点文本信息以字符串常量的形式输出,传递至Speak子VI进行读取,转换成语音的形式朗读出来。程序如图1所示。
图1 公交站点切换程序
2.2 语音播报程序设计
公交站点信息语音播报的内容,可以在LabVIEW软件里预先进行文字编辑,编辑成文本的形式,内容可以是中文,也可以是英文,对于完成中英文站点信息中英文的播报提供了很大的便利。在PC上预先安装语音引擎包Microsoft SDK, LabVIEW软件就能够调用PC中的语音引擎。SpVoice类是支持语音合成的核心类。通过SpVoice对象调用TTS引擎,从而实现朗读功能。朗读功能可以朗读中文或英文文本。
为了实现文本的语音播报功能,LabVIEW通过调用微软的插件(Microsoft Speech Object Library Version 5.4)来实现此功能。
“ISpeechVoice”属性节点可以完成语音播报时候声音的大小以及播报语速的设置。
在LabVIEW软件的前面板选择控件,在“新式”菜单页选择“引用句柄”,选择“自动化句柄”,将“自动化引用句柄”控件放置于前面板。选择“自动化引用句柄”,单击右键,在弹出的快捷菜单中选择“选择ActiveX类”,在弹出的选择菜单中选择“浏览”,从而进入“从类型库中选择对象”窗口,单击窗口中的下拉菜单,可以进入到操作系统所安装的可创建的对象库。从中选择“Microsoft Speech Object Library Version 5.4”,选中以后可以进入“Microsoft Speech Object Library Version 5.4”所包含的类型库,从中选择“SpVoice(SAPI.SpVoice.1)”,点击前面的加号,打开其包含项,从中选择“ISpeechVoice”,从而完成该属性节点的调用[3]。
在程序框图中选择函数/编程/互连接口/ActiveX,从中选择“打开自动化”函数。在“打开自动化”函数的“自动化引用句柄”输出端单击右键,选择 “创建”,在“SpeechLib.ISpeechVoice类属性”中选择“Voice”,将该属性节点放置于函数面板,通过拖拽的方式增加节点内容可选项,从中选择“Rate”和“Volume”。这两个选项可以设置文本的阅读速度“Rate”和音量“Volume”,
所要朗读的文本信息,能够根据需要进行修改和增减,可以调用“SpeechLib.ISpeechVoice类的方法”来实现。在“SpeechLib.ISpeechVoice类属性”的引用输出连线端单击鼠标右键,选择“创建”,在“SpeechLib.ISpeechVoice类的方法”中选择“Speak”,放置对应的属性节点。
在对应的阅读速度“Rate”和音量“Volume”功能端,创建输入控件,就可以完成程序运行时,在程序前面板实现语音大小和语速的调整[4]。
软件程序如图2所示。
2.3 系统前界面设计
公交语音报站系统软件界面包含了需要用到的站点切换按钮、当前站点信息显示窗口、播音类型选择控件、音频输出设备选择控件、播音声音大小设置控件、播音语速调节控件和播音状态指示灯控件。为了方便乘客直观地看到当前站点行进位置,还添加了站点行进位置显示,通过站点行进位置显示,乘客可以直观地看到当前到站,经过了几站,离目的地剩余几站。站点的数量和名称可根据需要进行添加和修改。
为了使公交语音报站系统站点状态显示更加生动,在程序前界面增加了线路地图,使得乘客可以清楚地看到公交车行进的方向,了解该线路在城区行进的位置。在前面板设置了进度条,通过进度条,可将已驶过的站点显示出来,方便提醒乘客,离目的地还有几站。在这个功能上,为了方便乘客区分去程和回程,以免坐错方向,特别在进度条上添加了“去程”文字及指示箭头,添加了“回程”文字以及箭头,并且将相应的文字和箭头与行进方向进度条的填充颜色对应起来,方便乘客识别。同时利用LabVIEW软件的布尔灯功能,在地图中的每个站点,均放置了布尔灯,结合报站时条件分支函数的分支选项,行进到相应站点时,通过“True”常量,点亮此站的布尔灯,并保留点亮状态。通过这样的设置,当程序运行,前面板上会以布尔灯点亮的形式显示已经过的所有站点。
软件系统前界面如图3所示。
图3 软件系统前界面
3 结论
基于LabVIEW的公交语音报站系统设计,实现了利用这款图形化编程软件,实现了公交站点切换,语音播报站点信息的功能。相比较其他编程语音,语音播报系统的前界面设计和后面板程序编程设计直观易懂,修改方便。该系统前界面控制参数的调整如果借助触摸屏,操作过程更为便捷。对于该系统,仍有很多功能可增加,例如对每辆公交车位置进行精准定位,通过无线网络借助手机APP可以查询距离当前站点最近的车辆信息。借助公交车数量,分布的广度,每辆公交车都可以视作是一个移动的观测平台,可以提供当前行驶位置的交通拥堵情况。随着人们生活水平的不断提高,科学技术的不断发展,公交语音报站系统的功能一定会越来越丰富,越来越高效。