一、业务介绍
2014年11月,亚马逊推出了一款全新概念的智能音箱:Echo,这款产品最大的亮点是将智能语音交互技术植入到传统音箱中,从而赋予了音箱人工智能的属性。这个被称为“Alexa”的语音助手可以像你的朋友一样与你交流,同时还能为你播放音乐、新闻、网购下单、Uber叫车、订外卖等等。
实现原理
智能音箱的原理是基于语音识别技术、自然语言处理技术和语音合成技术,并通过云计算技术实现智能化控制和联网通信。
1. 语音识别技术:智能音箱通过麦克风接收用户的语音指令,将语音转换为数字信号,并通过语音识别技术进行分析和处理。语音识别技术需要对不同的方言、口音和语速进行适配,以提高识别准确率。
2. 自然语言处理技术:智能音箱通过自然语言处理技术对语音指令进行解析,生成相应的命令或回答。自然语言处理技术需要处理语音输入的语法、句法和语义等信息,以正确地理解用户的意图和需求。
3. 语音合成技术:智能音箱通过语音合成技术将文字转换为语音输出,并通过喇叭播放出来。语音合成技术需要生成自然流畅、人性化的语音输出,提高用户体验效果。
4. 云计算技术:智能音箱通过连接云端服务器实现更强大的数据处理和智能化交互。云计算技术可以实现大规模数据存储和处理,同时还可实现多设备互联和远程控制,从而提高智能音箱的功能和灵活性。
5. 智能家居控制技术:智能音箱通过与其他智能家居设备进行连接和控制,实现家庭自动化和智能化管理。智能家居控制技术可以将家庭中的各种设备整合到一起,并通过语音指令或手机 App 进行远程控制,提高生活便利性和舒适度。
工作流程
其中涉及到的概念如下:
- 自动语音识别技术(Automatic Speech Recognition,ASR),是指通过计算机程序将人的语音信号转化为文本或命令等信息的一种技术。自动语音识别技术通常需要以下步骤:
- 声学分析:将输入的语音信号转化为数字信号,并进行预处理和特征提取。常用的特征包括频率、幅度、时长等。
- 建立声学模型:利用训练数据集来建立声学模型,对不同单元(如音素或基元)进行识别。常用的方法包括隐马尔科夫模型(Hidden Markov Model,HMM)和深度神经网络(Deep Neural Networks,DNN)等。
- 语言建模:利用语言模型来对识别结果进行进一步的筛选和修正。语言模型可以基于统计、规则或深度学习等方法进行建模。
- 后处理:对识别结果进行后置处理,如纠错、消除歧义等。
- 自然语言理解(Natural Language Understanding,NLU)是指计算机程序对人类语言进行理解和解释的一种技术。它可以将输入的自然语言文本或语音信号转化为计算机能够理解和处理的形式,如数据结构、逻辑表达式等。自然语言理解通常包括以下内容:
- 词法分析:将输入的自然语言文本进行分词,标注每个单词的词性和语法信息,并建立相应的句法树或依存关系图。
- 句法分析:基于词法分析结果,对输入的自然语言文本进行句法分析,并确定句子的结构和语法规则。
- 语义分析:对输入的自然语言文本进行语义分析,提取其中的实体、事件、关系等信息,并理解其含义和上下文语境。
- 意图分析:根据输入的自然语言文本,推断用户的意图和需求,并生成相应的命令或回答。
- 对话管理(Dialogue Management,DM)是指计算机程序对人机交互过程中的对话进行管理和控制的一种技术。它可以根据用户的输入和上下文语境,生成相应的回答或命令,并不断地维护对话状态,以实现有效的交互。对话管理通常包括以下内容:
- 对话状态跟踪:对于用户的每一个输入,都需要对当前对话状态进行更新和跟踪。这包括判断用户的意图和需求、记录历史对话内容等信息。
- 策略决策:根据对话状态和用户输入,选择最合适的策略来生成回答或命令。这可以基于规则、统计或深度学习等方法进行建模和优化。
- 响应生成:根据策略和对话状态,生成相应的回答或命令,并将其转换为自然语言文本或语音信号输出。
- 对话历史管理:维护对话历史记录,以便进行上下文分析和对话效果评估等操作
- 自然语言生成(Natural Language Generation,NLG)是指计算机程序根据给定的数据和模型,自动生成符合自然语言语法和语义规则的文本或语音信号的一种技术。
自然语言生成通常包括以下几个步骤:
- 数据准备:将需要转化为自然语言文本或语音信号的数据进行预处理和标注,以便后续的模型训练和优化。
- 模型训练:基于标注好的数据集,使用机器学习、深度学习等方法建立自然语言生成模型,并对其进行训练和优化。
- 文本/语音生成:根据输入的数据和模型,生成自然语言文本或语音信号,并将其输出到屏幕或喇叭中。
- 文本转语音(Text-to-Speech,TTS)是一种将文字转化为语音信号的技术,它可以帮助计算机快速、自然地生成语音输出。文本转语音通常包括以下几个步骤:
- 文本预处理:对输入的文本进行分词和分段,并标注相应的语言特征,如声调、重音等。合成语音参数:基于预处理后的文本,使用语音合成算法生成相应的语音参数,如基频、时长、能量等。合成波形信号:根据上述语音参数,合成相应的波形信号,并通过喇叭或耳机输出。
- 领域(Domain)指主要承载某个业务的数据概念。例如音乐、新闻、天气都可以称作是一个领域。
- 技能(Skill)是完整的功能单位,包含某一个领域方向的对话理解和执行逻辑,可以独立承接和处理一段对话逻辑。例如问天气是一个skill,播放音乐也是一个skill。
- 意图(Intent)代表一段对话的目标和真实用意,是Domain中的细节元素,一个领域中包含多个意图。例如,天气中查询气温是一个Intent,查询紫外线是一个Intent。
- 填充槽(Slots)是从一句话中提取出来的实体修饰词。例如,在“今天成都天气怎么样?”中,领域是天气,意图是查询,“成都”“今天”将作为slots传给后续的执行服务。
- 答复(Reply)是在用户询问后,经过系统执行返回给用户的回答。
二、智能音箱测试的挑战
1. 连路长
在移动互联网产品形态下,用户所有的意图均是通过点击、输入操作表达的,用户的意图是明确的。而语音类产品没有此类触控操作,用户直接通过语音与产品交互。因此,在系统执行用户请求之前,需要理解用户意图。所以语音类产品比移动互联网产品多出了语音识别、语义理解的环节。从端上收音开始,经过降噪、去混响、波束形成等环节,到请求服务端,再到通过算法进行语音识别、语义理解,进而由服务端或第三方服务进行处理,将结果返回给算法进行语音合成,最后到音箱端进行播报,整个链路单次语音指令响应耗时需要 1.5~-2.5s。
2. 技能多
市面上智能音箱的定位是让用户仅通过语音就能完成在互联网世界可以完成的一切。因此,音箱的后端需要接入各种各样的服务,如音乐、天气、时间、闹钟、搜索等,我们称之为技能。毫无疑问,为了满足用户的各种诉求,音箱需要提供数以千计的技能。为了满足用户更多的技能接入进来,系统也提供了技能开放服务,可以让生态合作伙伴通过接入技能,与我们一起为用户提供更加丰富的服务。如何保障数以千计的技能服务质量,是我们面临的重大挑战。
3. 语音用例复杂且数量庞大
语音测试的过程比较简单,例如用户向智能音箱询问:“今天天气怎么样?”,答复:“今天晴天”。这就构成一条语音测试用例。而语音测试的难点在于,对于同一个意图,不同类型的用户有不同的问法。所以,测试一个技能到底需要多少条语音用例是一个难题。
4. 语音测试效率低下
语音测试不同于传统软件测试,传统软件测试是以鼠标或者触控为交互基础进行的,与系统的交互是瞬间完成的,交互时间最长不超过1s。而语音用例是以问答的形式进行的,用户说话、音箱播放均需要时间,一次交互长达几秒甚至几十秒,再加上语音用例数庞大的特征,使得语音测试效率极低。
5. 对环境要求高
语音测试对环境要求比较高,在静音、噪音环境中测试结果不尽相同,如果大家都坐一起还有可能相互干扰,给测试带来诸多不便。
三、智能音箱测试策略
智能音箱涉及的技术体系比较广,从底层的硬件到上层的系统软件、应用软件,再到后端服务层、算法层,再到外部的三方服务。主要通过“端到端语音测试”“执行链路测试”“算法评测”三个层面的分层测试来保障整个系统的质量。
- “端到端语音测试”是最上层的直接面向用户的集成测试,我们通过端到端语音测试自动化来解决“设备多”和“效率低下”的问题。
- “执行链路测试”与互联网接口测试类似,是通过底层接口调用来保障下游接口服务质量的测试方法。
- “算法评测”主要评测唤醒/误唤醒算法、语音识别算法以及语义理解算法的质量,它的特点是数据量大,将大数据测试用例“灌入”算法引擎,通过准确率来衡量模型的质量。
四、端到端语音测试
直接通过人工进行端到端语音测试是比较简单的,就是站在用户交互的一问一答,看语音识别效果是否满足用户期望。难点在于“如何提升效率”、“如何避免环境干扰”、“响应耗时如何测试”。下面分别进行阐述。
1. 语音自动化测试
最简单的语音自动化测试方法是利用电嘴模拟人声播放语料,这是一个行之有效的办法,但它只能替代人去测试,并不能提升测试效率,为了避绝声音互相干扰,仍然需要一条语料一条语料地播放。为了提升效率,需要做出一定的牺牲,跳过了麦克风拾音环节,将测试音频直接灌入系统,且灌入的速度可以控制,这样既快速又没有声音,使语音测试成为可能,大大提升了测试效率。
除了效率低下,语音测试面临的比较大的问题是环境干扰,这既包括测试设备之间的互相干扰,也包括测试本身受到的外界噪声的干扰。在办公环境下,如果是单个用例的测试没问题。但是如果是批量回归测试,测试同学基本上就没法干活了。
因此,精灵云测实验室应运而生,它实现了:
- 无干扰地进行语音自动化共享服务
- 中心云化的测试设备共享服务
- 多设备的兼容性测试服务
- 线上业务的监控巡检服务
精灵云测实验室主要由玲珑塔、Agent、音箱集群三部分构成。玲珑塔是天猫精灵内部开发的集用例管理、执行于一体的测试平台;agent与音箱集群通过USB相连,一起部署在封闭的实验室环境内,主要负责音箱集群的管理和测试指令执行。玲珑塔通过websoket建立长链接,当有用例执行时,由玲珑塔发起测试执行任务,将指令发给agent,再由agent根据执行指令找到对应型号的空闲设备去执行,执行完毕后上报测试结果。
2. 预料自动化生成
智能语音测试的基础是大量的语料。人类的语言是复杂多样的。在做语料自动化生产之前,我们要先考虑清楚:工程和算法评测的边界在哪里?如果不理清工程和算法评测的边界端到端测试的用例数量将非常巨大。语料的泛化在算法评测阶段进行只需要覆盖所有的功能逻辑即可。我们需要把握好这个度。否则将耗费非常大的人力和时间成本。
在测试数据上,我们覆盖的是线上真实的语料+数据驱动的工程定向语料集合。在不考虑泛化能力的情况下测试数据都是可穷举的。技能支持的领域、意图,这些信息在数据库中都可以找到,可以通过拼装的方式自动生成测试语料。
如上图所示。NLU包含工程介入NLU和算法模型NLU两部分。工程介入NLU。是出于用户自定义问答的需要。在算法模型NLU之前,工程强制干预的数据处理行为。其优先级高于算法模型NLU。对于算法模型nu我们通过算法评测进行测试。对于工程介入NLU我们可以通过自动化的方式生成测试数据。工程介入nu都是基于一定的规则。将数据库中的元数据作为判断的依据,进行语义理解。所以工程介入NLU可以通过扫描库表中的元数据根据一定的语法规则来拼装并生成测试语料。
3. 语音耗时测试
天猫精灵既是一款互联网产品,也是一款智能设备。市场上存在诸多竞品,想要在残酷的市场环境中赢得竞争。就必须在各项质量指标上做到极致。对于用户来说,最重要的体验指标是指令达成和指令响应耗时。对于指令达成,我们将在后面的算法评测环节介绍。下面先介绍一下指令响应耗时的测试,主要介绍语音响应耗时。
4. 语音响应耗时
当用户向天猫精灵询问今天天气怎么样?如果等待答复时间超过五秒,那么估计用户就会抓狂。所以音箱的响应体感耗时显得格外重要。
天猫精灵团队开发了一款播放录音软件叫天机尺。播放询问语料后,等待一段时间,音响会进行语音答复。语料的播放和音响答复的时间在录音软件上都会形成波形,而这两者之间没有波形的部分就是我们等待的时长。天机尺的发明开启了天猫精灵用户体感响应时间测试的新纪元。在此之前,我们根据埋点计算得出语音响应耗时为1.5秒,但使用天机尺测量出的耗时是2.8秒,差距将近百分之百。正因为存在如此巨大的差距,我们进行了重点排查,发现了很多原来的埋点发现不了的问题,称之为隐形延时,造成这个原因主要是因为很多地方无法埋点,如硬件延时、tts静音头等。
五、算法评测
算法是智能音箱的灵魂,对用户意图的识別、理解均是通过算法实现的。智能音箱的算法评测主要包括唤醒评测、误唤醒评测、ASR 评测、NLU 评测以及指令达成率评测。
算法评测主要分为离线评测和在线评测两部分。有些指标只能做离线评测,如唤醒率,有些指标只能做在线评测,如指令达成率:有些指标既可以做离线评测也可以做在线评测,如误唤醒、ASR、NLU。离线评测使用大数据测试集进行测试,看产出的结果是否满足期望,类似于功能测试,但其测试的数据量远超功能测试的数据量。功能测试集的数据量级最多上万,而离线评测集的数据量级动辄达到几万、几十万、甚至上百万。在线评测主要依赖人工每天抽取一定量的数据进行标注,分为goodCase 和 badCase,标注后的数据全部回流进数据池,可以补充离线评测数据集,badCase 也会回流给算法进行算法优化。
1. 唤醒评测
出于对用户隐私保护的需要,天猫精灵只会将唤醒后的音频数据上传,我们无法获取唤醒前的音频数据,所以是无法得知用户发出唤醒指令而天猫精灵没有被唤醒的情况,故唤醒评测只能在实验室进行。
2. 误唤醒评测
误唤醒评测分为实验室评测和线上评测两部分。在实验室评测中,我们模拟家庭环境,利用电嘴在不同的方位24小时不间断播放环境噪音音频。通过统计音响被唤醒的次数,计算得出误唤醒的指标。用此方法得出的指标称为实验室数据。主要用于新设备或算法模型上线前的评估。线上的误唤醒评测主要通过标注的方式进行,每天抽取一定量的音频,通过人工的方式判断音频中是否有唤醒词,如果没有就标记为一次误唤醒。唤醒率等于被唤醒的次数/抽样的数据量,此方法得出的误唤醒率代表了线上的真实使用情况,具有较大的参考意义。
3. ASR评测
端到端语音自动化功能测试的主要目的是验证整体流程是否正确,其测试音频可以通过一些技术手段合成,而asr评测的目的在于衡量系统的不同地域、年龄、性别、属性语音识别的准确率。通过一些技术手段合成的音频目前已经不能满足要求,所以ASR评测的音频数据必须通过数据采集或者线上数据回流得到。天猫精灵有专门的数据采集团队,主要根据需求处理算法冷启动所需的数据,之前我们只是简单的跟供应商合作提出数据需求,由供应商根据需求人工采集数据,但由于设备类型众多,供应商需要重复录制很多次,这种方法成本高且效率低下。于是我们自研了自动化数据采集工具。供应商只需要提供原始音频,在家庭环境中用电嘴播放原始音频,在电阻周边不同的距离角度放置录音设备。用上位机控制录制设备,这样便大大的降低了采数据采集成本。但这样采集到的数据仍然不能满足评测对数据的需求,因为数据采集系统无法模拟线上所有用户的使用情况,数据回流仍然是评测数据的重要来源之一,因此我们每天抽取一定量的线上数据进行标注。将标注后的数据回流进评测数据库,以此来评测ASR算法。
字正确率和矩正确率是业界通用的,评估AsR质量的可靠指标。评测时将音频通过接口发送给asr服务器,由服务器进行识别并返回文本,结果与标注文本进行对比。
计算字准确率和句准确率指标计算方式:为了使识别的文本与标注文本一致,需要对识别的文本进行删除、插入、替换等操作,这些删除插入替换的字数即错误的总字数。
单个用例字错误率=1-单个用例字错误率
单个用例正确的字数=标注文本-单个用例错误的字数
总体字正确率=正确的总字数/标注文本总字数
总体句正确率=句正确的文本总字数/标注文本总字数
4. NLU评测
NLU用于处理Asr识别后的文本,对用户的意图进行理解,并对处理结果的dis进行标准化处理,所以NLU的评测是通过正确率来衡量的。NLU的评测比ASR的评测要简单得多,它不需要对地域年龄、性别等音频的多样性特征进行处理。它的输入是文本,故NLU评测只需要建立一定数量的语料文本集即可,数据集可以通过线上数据回流或者技术泛化建立。