车载语音识别率自动化测试研究

2019-09-26 07:40李乔娜陈璐璐刘兵
汽车文摘 2019年10期
关键词:测试人员实车识别率

李乔娜 陈璐璐 刘兵

(东风汽车有限公司东风日产乘用车公司技术中心,广州 510800)

主题词:车载语音识别 识别率 Python 自动化测试

缩略语

ASR Automatic Speech Recognition

LPCC Linear Prediction Cepstrum Coefficient

MFCC Mel Frequency Cepstrum Coefficient

HMM Hidden Markov Model

ANN Artificial Neural Network

DA Display Audio

TTS Text To Speech

0 前言

语音识别(Speech recognition),是将语音转换为文字的技术。车辆导入语音识别最初是希望可以通过语音对汽车进行控制,无需劳烦双手,提升驾驶的主动安全和娱乐性[1-2]随着车联网技术的繁荣发展,乘客对车载语音功能的需求也快速上升,使得语音识别在车辆上得到广泛应用。作为检验语音识别性能的重要指标之一,车载语音识别率其测试系统和测试方法也是业界不断研究的方向。

本论文在深入分析车载语音识别过程的基础上,综合考虑当前车载语音识别率测试的缺点和难点,独创了一套能够代替人工进行实车测试和结果记录、分析的自动化测试系统,测试过程不需人员在场,如有异常情况会远程提醒,且测试结果不受外界噪声的影响,对环境的依赖程度较低。经实际测试验证,运行效果和测试结果均符合预期,具有非常实用的工程应用价值。

1 车载语音识别说明

1.1 语音识别技术及其原理

语音识别技术源于20世纪50年代早期在贝尔实验室所做的研究,也被称为自动语音识别(英语:Automatic Speech Recognition,ASR),狭义的语音识别技术即将语音转换为文字的技术[3]。

语音识别原理如图1所示[4]。

图1 语音识别原理[4]

识别过程主要包括如下几个步骤:

(1)预处理:对输入语音信号进行预加重和分帧加窗、断点检测、降噪操作[5];

(2)特征提取:常见的特征参数有基于时域的幅度、过零率、能量,以及基于频域的线性预测倒谱系数(LPCC)、Mel倒谱系数(MFCC)等;

(3)模式匹配:即将测试集与经过训练得到的模板库进行模型匹配,从而得出识别结果。

目前已有2种主流的语音识别技术:隐马尔可夫模型(HMM)技术、人工神经网络(ANN)技术。

1.2 车载语音识别系统和影响因素

调查各主机厂的语音识别功能,一般车载语音识别系统工作过程见图2。

图2 车载语音识别过程

关联各部分的功能如下:

(1)方向盘:方向盘上有语音按键,按下之后可以调起语音识别功能。也可以通过DA屏幕上的语音软按键或通过唤醒词来开启。

(2)麦克风:采集音频。有的车载麦克风自带降噪功能,可以将采集到的音频进行初步的噪声消除。

(3)DA:Display Audio,即车辆的主机,其内部集成了语音套件,是语音识别的主体。接收到麦克风的音频之后,DA会进行音频的A/D转化、降噪、回声消除操作,将处理后的音频发送的识别引擎,完成识别后,语音套件内会留存相应的日志文件,识别结果会在DA屏幕上弹出。

(4)扬声器:输出DA各channel的声音,在语音识别过程中,可以进行识别结果的TTS播报。

车载语音识别有其特殊的影响因素,不同路面和车速下的行驶噪声、车内混响、测试人员发音特征、麦克风在安装位置的开孔率,都会影响车载语音识别率。这些因素的复杂性也使得近些年针对语音识别在车辆上的应用研究层出不穷[6-7],有分析称“车联网给了语音科技人第二次创业的希望”[8]。

1.3 车载语音识别率的测试方法现状

语音识别是由声学模型匹配和语言模型匹配共同确定的结果,因而会引入音的识别错误和文字转换的错误[9],所以,识别率是语音识别始终绕不开的重要话题。

当前各主机厂对车载语音识别率的测试方法主要有客观测试和主观测试。

客观测试是指语音识别引擎对主机厂规定语料的识别率测试。这种测试方法往往脱离实车噪声环境、DA性能和混响条件,并不能直接代表车载语音的识别效果。

主观测试是指实车现场口呼[10],将DA显示的识别结果与测试语料对比。这种测试方法考虑了实车因素,但因测试量级大,会消耗大量的人力,且识别结果会受到测试场地环境噪声、发音人测试情绪等不确定因素的影响。

为了克服测试难题,识别率的自动化测试成为众多机构的研究内容。中国科学技术大学人机语音通信研究评测实验曾提出一项全自动语音识别综合评测系统[10],能同时对不同识别系统的识别结果做测试和对比,可广泛应用于语音识别大赛类的结果评测,但仍难以适用于实车综合环境的评价。部分主机厂用头肩模拟器播放录音代替真人现场口呼,减少了测试人员主观因素对测试结果的影响,但对车机的操作和对识别结果的记录仍需现场手动记录,人力资源并未得到有效降低,且周围噪声环境仍然会影响测试结果。

2 本测试系统的目的和设计思路

本测试系统在设计之初,我们首先详细分解了语音识别率实车人工测试的详细步骤,针对其中的缺点和测试难点进行梳理,并制定了相应的应对措施,最终实现整个测试过程的自动化进行。

2.1 语音识别率实车人工测试步骤

车载语音识别率测试的一般操作过程见图3[10]。

图3 车载语音识别率人工测试过程[10]

图3 中:

(1)行驶噪声还原:因车载语音识别率测试一般是测试车辆在某类型路面上以规定车速行驶时的识别率,所以需要将此条件下车辆的行驶噪声事先录制,待测试阶段,将噪声文件在车内还原,以此来模拟车辆行驶时的噪声环境。

(2)设置初始界面:不同界面下,操作语音按键调起的功能不尽相同。所以,在每次指令测试之前,一般需要会将车机调到合适的界面,如统一调整到主界面。

(3)启动语音识别:常用的方法,方向盘语音按键、DA界面图标、唤醒。

(4)现场口呼/播放录音:测试人员根据指令清单,说出相应的测试指令/操作播放器,播放指定测试语句的录音文件。

(5)等待识别:录音结束后,DA内部开始音频处理,并发送音频到识别引擎。

(6)记录测试结果:待识别结束后,在DA屏幕上会显示识别结果。因显示时间较短,所以需测试人员集中精力,避免错过查看时机。

(7)开始下一条测试:待全部测试完成后,统计识别率测试结果。

2.2 人工测试难点分析

人工测试存在以下3个难点。

(1)测试过程繁复,测试量级大,消耗大量人力。且随着车联网技术的快速发展,语音控制的功能越来越多,语音识别率测试的工作量将持续上升。

(2)对测试环境的要求高。因识别率受环境噪声的影响很大,所以,如要减少此部分影响,整个测试过程需要在消音室进行,占用场地资源。

(3)人工测试结果不稳定。受测试人员情绪状态变化、音量大小变化、测试人员变更等因素影响,测试结果的客观性和一致性难以保证,也不易进行不同车型、不同环境的识别率对比。

2.3 本测试系统设计思路

结合人工测试的过程和难点,本文的解决思路主要有以下3方面。

(1)人工测试→自动化测试:包括界面设定、启动语音识别、播放测试指令、记录测试结果、结果统计等,大幅节省人力。

(2)麦克风现场拾音→DA音频灌入:将车辆的行驶噪声和测试语料音频事先录制,构建噪声库和语音库。测试开始时,先对噪声和语音进行实车还原,并将音频直接灌入DA,不需麦克风现场拾音,消除了测试现场噪声对识别结果的影响。

(3)现场口呼→提前录制:根据录音标准,选取合适的录音人员,用标准麦克风在消音室进行音频录制,构建语音库。对于不符合要求的语料音频要进行剔除和重新录制。适用到不同车型时,可用头肩模拟器在车内播放语音库语料,在麦克风输出端对音频重新录制,如此就充分考虑了不同车型的麦克风性能和车内混响效果,在语音库通话化的基础上,实现对不同车型的语音定制。

3 开发工具介绍

本测试系统采用的主要开发工具为Python。Python是一种面向对象的解释型脚本语言,具有鲜明的简洁性、易读性以及可扩展性。Python拥有一个强大的标准库,提供了系统管理、网络通信、文本处理、数据库接口、图形系统、XML处理等额外的功能[11]。本系统主要用到以下几个功能库/模块:

(1)threading:多线程控制和处理,是一种操作系统功能库,用于控制程序同时执行多个任务而不受彼此干扰。

(2)os.path:获取文件属性,是一种文件处理功能库,在本系统中用于处理指定路径下的文件,包括遍历、增删文件等。

(3)winsound:声音播放模块,通常可以播放.WAV格式的音频文件,在本系统中用于播放录制好的测试指令。

(4)smtplib:邮件发送模块,对smtp协议进行了简单封装,提供一种方便的发送电子邮件的途径,在本系统中用于异常情况的远程提醒。

4 车载语音识别率自动化测试实现

4.1 自动化测试流程

本文自动化测试系统流程如右图4所示。

音频库建立完后之后,整个测试过程可以不需人工操作和记录,如有需要,可以查看监控界面,或在收到异常提醒时,到测试现场排查问题。

4.2 各环节实现方法

图4流程中,界面预设,启动语音识别都可通过简单的shell指令来实现,音频的录制和还原也有业界通用方法,本文不做详细说明。本文着重介绍音频灌入DA、获取识别结果、远程提醒和监控界面设计这4部分。4.2.1 音频灌入

音频灌入是指将噪声和语音还原之后,直接灌入DA的麦克风信号输入端,替代麦克风的现场拾音。其原理和方法如图5所示。

图4 车载语音识别率自动化测试流程示意

图5 音频灌入方法示意

采用音频灌入代替现场拾音,有2个主要优势:

(1)可以避免测试环境不可控噪声对测试结果的影响。该方法在测试过程中不需接入麦克风,所以不会受到外界噪声的影响,减少了对测试环境的依赖。

(2)可以将实车测试转为台上测试。由于灌入的噪声是实车采集,灌入的语音是经头肩模拟器在实车播放之后重新采集的音频,即噪声和语音都已考虑了车辆对声音的影响,所以,识别率测试可以转为台上进行,既可以节省实验车辆资源,又增加了测试的自由度。

4.2.2 获取识别结果

(1)识别结果原始文件:搭载语音识别功能的车辆,在DA内部都会集成语音识别套件,内含一系列配置文件、识别日志等。每次语音交互之后,在套件的日志里都会建立本次识别的交互信息,其中就包含了语音识别的文本结果。

(2)从日志文件中获取识别结果并记录:因日志文件包含了语音交互的多种信息,从繁杂的信息中筛选识别结果,是自动记录结果并统计识别率的关键。

经分析,日志文件中的信息虽然多样,但每条信息都有其特定的标签和特征,不同厂家定义可能不同,但都遵循一定的规则。假定activity_type表征服务类型,ASR表征语音识别的结果等,那么,文本特征提取就可以解决结果筛选的问题。本文采用的是Python的正则匹配算法,即通过正则表达式,用特定的字符序列,提取日志文件中的匹配信息。

举例,如果语句“今天天气怎么样”的识别结果在日志文件里的记录为:

“activity_type:天气查询

ASR:今天天气怎么样”

那么提取识别结果“今天天气怎么样”的正则表达式可以定义为:

re.findall('ASR":"(.*?)",',data)#提取“ASR:”后面的内容

4.2.3 自动记录识别结果

本文对底层测试结果的记录采用EXCEL表格形式,便于数据的对比和处理。示例如表1。

那么,指令“今天天气怎么样”的第一次识别结果需要被自动计入单元格C3,此时需要用到Python的Openpyxl模块。

表1 底层测试结果记录示例

Openpyxl是Python用来读写Excel的工具包,结合正

则匹配过程,完成“今天天气怎么样”的第一次测试之后,结果记录的代码可写为:

find_lst=re.findall('ASR":"(.*?)",',data)#提取识别结果

for RecognationResult in find_lst:

“sheet_name”.write(2,2,''.join(RecognationResult).encode("utf-8"))#将匹配结果写入第2行第2列(从0开始计数)

4.2.4 远程提醒

首先说明远程提醒作用场景和触发条件。

本自动化测试系统的目的是为了实现测试过程自动进行,不需人工现场操作和记录。但如果在测试过程中遇到异常情况导致语音识别不能正常进行,如车辆/DA掉电、音频灌入失败、语音套件工作异常等,则需要暂停测试,并远程提醒测试人员及时处理。或者当实验全部完成时,也可以通过邮件将记录实验结果的文件以附件形式发送给测试人员进行查看。

针对以上场景,收敛可执行的触发条件如表2所示。

表2 远程提醒的触发条件

其次,关于远程提醒的方式,本系统采用邮件提醒,当满足远程提醒触发条件时,通过Python的smtplib模块[12],向测试人员定向发送提醒邮件。

邮件发送函数定义如下:

def send_email(msg):

subject='*****'

msg['Subject']=Header(subject,'utf-8')#邮件主题

sender='*******@***.com'#设定发送者邮箱

password='********'#发送邮箱服务器授权码

smtpserver='smtp.**.com'#发送邮箱服务器地址

receiver=(****)#收件人可以是一个list

server=smtplib.SMTP()#实例化SMTP对象

server.connect(smtpserver,25)#(缺省)

server.login(sender,password)#登录SMTP服务器

server.sendmail(sender,receiver,msg.as_string())#三个参数,发件人,收件人,内容。

4.2.5 监控界面

为了增强测试过程与测试人员的交互体验,并提高操作便利性,本系统开发了测试监控界面,从实验设定、启停控制、过程和结果实时统计几部分达成交互需求(图6)。

图6 监控界面示意

图6 中各项目的作用见表3。

表3 监控界面功能模块简介

4.3 车载语音识别率自动化测试系统应用效果

上文按功能模块介绍了本系统的主要开发工作,目前该系统已开发完成,也已通过实车实验对系统的各个环节进行了验证。

表4为某次测试实例列举,进行人工测试与自动化测试效果对比。测试语句:200句;单句测试次数:10次;总测试量:2 000句。

表4 测试实例

根据实验结果对比,自动化测试识别率的结果符合预期,该系统基本满足语音识别率的测试要求,可大大减少测试人力、减少对测试环境的依赖。后续也会在实际应用中不断优化、改善该系统,如丰富远程提醒的场景、优化结果记录的时间等。

5 结论

本论文在深入分析车载语音识别过程的基础上,总结当前车载语音识别率的难点,以自动化的思想为主导,将人工测试的各个环节转化为自动操作,并开发了监控界面,实现了实验过程的可视化。该测试系统大大减少测试人力,并提高了测试结果的客观性和一致性,操作简单,功能全面,具有非常实用的工程应用价值。

识别率是车载语音识别能力的一个重要的衡量指标,影响因素众多,测试过程繁琐。本论文侧重于将人工测试的各个环节自动化进行,但是对识别率测试而言,因不同地区方言、口音不同,语音样本的选择也很重要,对于该部分,本论文未做深入讨论,所以为了使该系统更加完善,更加实用,后续工作可以针对口音选择、录音标准方面进行深入研究。

另外,随着车联网技术的快速发展,相关的车联网功能导入将持续增加,自动化测试的需求也日渐迫切。本论文讨论的虽然只是针对车载语音识别率这一课题,但其自动化思路可以拓展到其他的测试领域,如后续可以针对车家互联测试,对本系统进行完善和升级。

猜你喜欢
测试人员实车识别率
实车碰撞试验牵引系统钢丝绳疲劳损伤问题分析
基于手机蓝牙的奥迪A4L发动机故障设置系统设计
保证渗透测试成功实施的方法分析
基于WiFi的奥迪A4L发动机故障设置系统
无需多言
浅析软件测试中的心理学应用
档案数字化过程中OCR技术的应用分析
基于PCA与MLP感知器的人脸图像辨识技术
科技文档中数学表达式的结构分析与识别
人工智能现状和发展