AI测试|天猫精灵智能音箱测试策略与方法

news2025/1/19 11:12:18

一、业务介绍

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评测只需要建立一定数量的语料文本集即可,数据集可以通过线上数据回流或者技术泛化建立。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/523445.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Grafana系列-统一展示-9-Jaeger数据源

系列文章 Grafana 系列文章 配置 Jaeger data source Grafana内置了对Jaeger的支持,它提供了开源的端到端分布式跟踪。本文解释了针对Jaeger数据源的配置和查询。 关键的配置如下: URL: Jaeger 实例的 URL, 如: http://localhost:16686 或 http://localhost:16…

PPT技能之新手入门,零基础光速进阶的宝藏

不会PPT只是借口,懒惰才是你的心里话。只要现在开始学习,不出三个月,华丽蜕变成PPT大神!你的进步,我的功劳! 你的关注,是我最大的动力!你的转发,我的10W!茫茫…

维京人的秘密:残暴背后的真相,敬畏神灵死后进入英灵殿

维京人,一个充满神秘色彩的名字,勾起了人们对于古代北欧残暴战士的想象。然而,维京人究竟是如何形成这样的形象,他们的传统和习俗又是如何塑造了他们的一生呢? 首先,我们要了解维京人的生活背景。维京人生活…

Linux线程同步(5)——互斥锁or自旋锁?

自旋锁概述 自旋锁与互斥锁很相似,从本质上说也是一把锁,在访问共享资源之前对自旋锁进行上锁,在访问完成后释放自旋锁(解锁);事实上,从实现方式上来说,互斥锁是基于自旋锁…

shell脚本之“sort“、“uniq“、“tr“、“cut“、“split“、“paste“以及“eval“命令详解

文章目录 sort命令uniq命令tr命令cut命令split命令paste命令eval命令总结 sort命令 以行为单位对文件内容进行排序,也可以根据不同的数据类型来排序. 比较原则:从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出. 语法…

Chrome和edge报STATUS_STACK_BUFFER_OVERRUN错误的处理办法

Chrome和edge突然就报STATUS_STACK_BUFFER_OVERRUN错误,原因未知。 解决方案: Chrome 卸载本地的chrome访问https://www.chromedownloads.net/chrome64win/(windows64)https://www.chromedownloads.net/chrome32win/&#xff0…

母亲节到了,写一个简单的C++代码给老妈送上一个爱心祝福

🍎 博客主页:🌙披星戴月的贾维斯 🍎 欢迎关注:👍点赞🍃收藏🔥留言 🍇系列专栏:🌙 C/C专栏 🌙请不要相信胜利就像山坡上的蒲公英一样唾…

快速上手Arthas

目录 基本概述 安装方式 基础指令 jvm相关指令 class/classloader相关指令 monitor/watch/trace相关指令 其他 基本概述 jconsole等工具都必须在服务端项目进程中配置相关的监控参数,然后工具通过远程连接到项目进程,获取相关的数据。这样就会带…

快速查询的秘籍——B+树索引

页和记录的关系示意图 InnoDB根据主键查找数据的过程是什么? 没有索引的查找是什么?索引查找和通过主键查找有什么关系? 索引是解决什么问题的? 索引是解决定位数据页的,而不是定位一个页中的数据的,定位…

MATLAB绘制动画(一)质点动画

vx 100*cos(1/3*pi); vy 100*sin(1/3*pi); t 0:0.005:18; x vx*t; y vy*-9.8*t.^2/2; comet(x,y) 这里只是截取了最后的画面,正常运行时,可以看到从最高点向下落的动作。 想要了解这段代码,我们要知道comet函数的意义 这个函数可以沿着…

ChatGPT 发布重磅更新,插件系统即将上线!

公众号关注 “GitHubDaily” 设为 “星标”,每天带你逛 GitHub! 昨天凌晨,ChatGPT 为诸多 Plus 会员陆续开放了插件系统内测权限,申请比较早的用户,现在应该都能体验上最新的插件系统了。 为了让风暴来得更为猛烈&…

SQL在线刷题

牛客网学习SQL在线编程,牛客网在线编程,一共82道 用于实践的网站,在线运行SQL 目前43道,刷不动了,剩下的之后找机会搞 只记录有疑问的题目 简单 SQL196 查倒数第三 查找入职员工时间排名倒数第三的员工所有信息 …

js堆和栈

目录 关键句提取: 一、认识堆和栈 1、内存操作场景 2、数据结构场景 二、堆和栈的优缺点 1.栈(stack) 2.堆(heap) 3.总结: 三、堆和栈的溢出 四、 传值和传址 五、为什么会有栈内存和堆内存之分? 垃圾回收 标记清理 引用…

品牌控价的好处有哪些、品牌控价方法有哪些

今天和大家聊聊【品牌控价】,他们常会说到自己的产品有多好,经销商们体验完也说产品效果非常不错,价格在业内也是有很大优势,但是客户购买量和预期效果确有很大差距,难道我产品性价比这个高,还不能打动顾客…

一种不需要注册没有魔法使用ChatGPT的方法

关于我:关注AIGC、读书、成长和自媒体。加我微信:keeepdance,备注:chatgpt。进ChatGPT交流群。 如果你还没有使用过ChatGPT,那你来对了地方。文章结尾,我将提供一种能不需要梯子、不需要注册,无…

【数据结构.C】顺序表和单链表的增删查改

宝子,你不点个赞吗?不评个论吗?不收个藏吗? 最后的最后,关注我,关注我,关注我,你会看到更多有趣的博客哦!!! 喵喵喵,你对我真的很重要…

干货! CVPR:基于VDB的高效神经辐射渲染场

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 作者介绍 严 涵 上海交通大学2019级人工智能专业本科生,研究兴趣主要是与NeRF相关的三维重建算法。 报告题目 基于VDB高效神经辐射渲染场 内容简介 01 NeRF NeRF的提出起初主要是为了解决新视⻆生成…

shell脚本常用的命令

管理文件内容的使用 一、sort命令二、uniq命令三、tr命令四、cut命令五、split命令六、paste命令七、eval命令 一、sort命令 sort命令是以行为单位对文件内容进行排序,也可以根据不同的数据类型来排序,比较原则是从首字符向后,依次按ASCII码…

尚硅谷Vue配套资源

1.gitee地址: https://gitee.com/coderPatrickStar/Vue/tree/master/%E5%B0%9A%E7%A1%85%E8%B0%B7Vue%E9%85%8D%E5%A5%97%E8%B5%84%E6%BA%90 2.

Linux常用命令——id命令

在线Linux命令查询工具 id 显示用户的ID以及所属群组的ID 补充说明 id命令可以显示真实有效的用户ID(UID)和组ID(GID)。UID 是对一个用户的单一身份标识。组ID(GID)则对应多个UID。id命令已经默认预装在大多数Linux系统中。要使用它,只需…