多语音交互设备驱动控制系统的设计与实现

2018-10-18 09:20李欣颜胡建军庞凤颖
车辆与动力技术 2018年3期
关键词:声卡PC机乘员

李欣颜, 胡建军, 庞凤颖

(中国北方车辆研究所,北京 100072)

随着信息科学技术的飞速发展,人机语音交互逐渐成为民用智能车载设备的标配.随着技术发展与未来信息化战场的需要,其智能化程度也越来越高,人机交互也越来越复杂,任务负荷也越来越重,乘员迫切需要从纷繁复杂的任务中解脱出来.因此特种车辆也开始利用人机语音交互技术,解放乘员的双手和双眼,提高人机交互效能,以满足未来协同作战需求.

特种车辆不同于民用车辆,车内人机语音交互对象不局限于一个驾驶员,一般车内有多少个乘员就有多少个语音交互设备,乘员根据不同需求所需要的语音交互设备也可能不同.特种车辆语音交互控制的最大障碍在于使用一个USB端口来驱动多个同类或不同类的语音交互设备进行声音采集与播报.现有的研究提出了一些方案,主要是利用单片机控制多路模拟开关,但电路复杂且安装调试繁琐[1-2].鉴于此,提出了一种在同一PC机上基于USB-HUB的多路语音交互设备驱动控制系统.由于该系统采用了通信串行USB总线,故具有真正的热插拔、即插即用(PnP)功能[3-4],可以针对乘员不同的要求,实现不同情况下多语音交互设备的声音采集与播放驱动控制.

1 总体设计

多语音交互设备驱动控制系统包括一台PC机、一个支持7路的USB-HUB和7个语音交互设备,系统连接如图1所示.系统要求在同一PC机上实现对7个乘员的语音交互设备声卡进行驱动,这就需要在该PC机上实现能够同时驱动7个乘员的语音交互设备,并根据乘员功能需求控制 2种声卡类型的语音交互设备.该系统中,在PC机上使用一个USB-HUB带动2个HeadSet-2CH声卡类型的语音交互设备、5个USB PnP Sound Device类型的语音交互设备.

图1 多语音交互设备驱动控制系统架构示意图

2 系统实现

2.1 获取语音交互设备在USB-HUB不同USB口的对应声卡编号

1)将USB-HUB连接到计算机后,按照USB-HUB的USB口的编号顺序(USB1-USB7,见图1),将同一类声卡类型的其中一个语音交互设备插在USB-HUB的USB1口上,以获取该声卡类型的语音交互设备对应USB1口的语音交互设备号,注意每次只插一个语音交互设备.

2)打开PC机机上的系统声音信息界面,即可以看到该语音交互设备的声卡的信息,如图2所示.如该类语音交互设备的声卡类型为USB PnP Sound Device,那么该类的语音交互设备在此USB-HUB的USB1口上的编号为33.

3)将该语音交互设备依次插在USB-HUB的USB2到USB7口上,依据步骤2可以分别获取该类声卡在USB2到USB7口的编号.

4)按照上述步骤1)~3),获取另一种类型的语音交互设备在USB-HUB的USB1到USB7口上的编号.

5)将上述步骤获取的两类语音交互设备在USB-HUB的USB1到USB7口上的声卡编号信息手动输入文件中保存,形成语音交互设备声卡的USB编号与USB-HUB的USB口编号的对应表,将该对应表保存在程序运行目录下,如图3所示.对应表中间一列的1~7分别代表USB-HUB的USB1到USB7口编号,左边一列的数字33、30、32、31、36、35、34分别代表声卡类型为USB PnP Sound Device的语音交互设备在USB-HUB的USB1到USB7口上对应的编号,右边一列的数字15、14、13、12、11、10、9分别代表声卡类型为HeadSet-2CH的语音交互设备在USB-HUB的USB1到USB7口上对应的编号.

图2 语音交互设备声卡信息图

图3 声卡编号与USB-HUB的USB口编号对应表

2.2 获取语音交互设备声卡系统编号与声卡USB编号的对应关系

在程序中,通过调用winmm.lib库函数自动获得语音交互设备在PC机上的声卡系统编号与声卡的USB编号对应表[5].如图4所示,左边第一列的数字0、1、2、3、4、5、6表示的是PC机给语音交互设备分配的声卡系统编号,共有7块声卡.右边一列的信息表示语音交互设备的声卡类型名称和对应USB口的编号,如33-USB PnP Sound Device,33即为声卡在USB口的编号,USB PnP Sound Device为声卡类型名称,插在不同的USB口的语音交互设备的声卡类型名称相同,但声卡USB编号不同.12-HeadSet-2CH为另一种语音交互设备的声卡类型名称和对应的USB口编号.同一种声卡类型的语音交互设备插在同一个USB口上,声卡的类型名称和USB编号是固定不变的.不同声卡类型的语音交互设备插在同一个USB口上,声卡的类型名称和USB编号也都会不同.

图4 声卡系统编号与声卡USB编号对应表

2.3 匹配获取语音交互设备的声卡系统编号

将需要使用的7个语音交互设备全部插在与PC机相连的USB-HUB上,每个语音交互设备插在USB-HUB固定的USB口,通过编程,实现程序自动匹配并找到该声卡的USB语音交互设备号,具体步骤如下:

1)程序启动后,通过winmm.lib库函数自动获得语音交互设备声卡系统编号与声卡USB编号对应表,生成文件如图4所示.

2)通过2.1节步骤形成语音交互设备的USB编号与USB-HUB的USB口的对应表(如图3所示),并且保存在程序运行目录下.

3)程序根据输入的USB-HUB的USB口编号进行自动匹配.以USB4为例:根据图3可以得到USB-HUB的USB4口对应的两种不同声卡类型的语音交互设备的声卡USB设备编号分别为31和12;先用31在图4找设备的USB编号为31的语音交互设备,无法找到后则再用12在图4中找,结果找到USB编号为12的语音交互设备对应的声卡系统设备号为0,则USB4口上的语音交互设备的输入(麦克风)输出(扬声器)设备号都为0.再举一个输入(麦克风)和输出(扬声器)是两个设备号的例子,如假设语音交互设备输入的USB口为5,根据图3可以找到两种语音交互设备的声卡USB设备编号分别为36和11,用36在图4可以找到声卡USB编号为36的语音交互设备对应的声卡系统设备号3和4,则知道了插在USB5上的声卡的输入(麦克风)设备号为3,输出(扬声器)设备号为4.

4)重复步骤3,获取每个插在USB-HUB的USB口的语音交互设备声卡系统输入编号和系统输出编号.

找到该语音交互设备声卡的系统输入(麦克风)输出(扬声器)设备号后,该语音交互设备就可以被正常驱动.在声音采集时调用该语音交互设备声卡的系统的麦克风设备号,即可以进行声音采集;在声音播放时调用该语音交互设备声卡对应的系统扬声器设备号,即可进行声音播放,其流程见图5.

图5 获取语音交互设备声卡的系统编号的流程图

3 系统测试

该方法已经在某项目语音交互仿真系统通过考核验证,该项目的语音交互仿真系统使用一个USB-HUB在一台PC上同时驱动两种类型的语音交互设备,驱动语音交互设备数量为7个,效果良好.

该系统架构图如图1所示,系统软件主要由乘员语音交互仿真控制界面和后台服务程序两部分组成.乘员语音交互仿真控制界面主要实现各种场景下各功能的可视化操控和状态监控;后台服务程序主要实施各种策略及功能.系统测试结果示例如图6所示.

由图6可知,系统设计符合设计要求,多个语音交互设备实现同时驱动,语音交互设备控制准确.

图6 乘员语音交互仿真控制界面

4 结 论

本设计突破了以往一个PC机上只能控制单路或者双路语音交互设备控制的限制,实现了在一台PC上仅占用一个USB口就能够驱动多个同类声卡的USB语音交互设备或多个不同类型声卡的语音交互设备,且驱动的语音交互设备的最大数量与选用的USB-HUB的USB口数量相等,即选用USB-HUB的USB口数量越多,能够驱动的语音交互设备越多.驱动系统采用了通信串行USB总线和USB-HUB技术,故采集速度较快,系统抗干扰能力强,极大提高了语音交互质量.试验室测试结果表明,系统成本低廉,性价比高,稳定性强.

猜你喜欢
声卡PC机乘员
观光车乘员乘坐的安全隐患分析
基于MADYMO的轻型客车前排乘员约束系统优化
基于三菱FXPLC的感应淬火机床与PC机的串行通信实现
VC.NET下实现dsPIC单片机与PC机的通信
排除OLT设备登录故障
两厢车后排乘员保护机制研究
VIVID3彩色超声仪结构原理及维修
装甲乘员核心力量训练初探
提升笔记本电脑音质
聊天室背景放音乐 为啥我的本本就不行?