Alexa上下文语音识别的工程实现
自动语音识别(ASR)是将声学语音转换为文本的过程,某中心语音助手的核心ASR模型在任何给定语言中都是跨用户统一的。但某中心AI团队提高ASR准确率的方法之一是根据用户上下文实时调整模型。
例如,语音助手可以在用户说出唤醒词时利用说话者声音的声学特性,在处理用户请求时过滤掉背景声音。语音助手还可以利用设备上下文来提高性能。例如,带有屏幕的设备可能会显示查询的可能响应列表,语音助手在处理后续指令时可以使ASR模型偏向列表条目。
最近,语音助手还引入了上下文嵌入服务,该服务使用在多种任务上训练的大型神经网络,生成过去几轮对话(包括用户话语和语音助手响应)的连续向量表示序列。上下文嵌入是任何语音助手机器学习模型的即用资源,该服务可以扩展以包含其他类型的上下文信息,如设备类型、用户技能和内容偏好等。
理论到实践
要了解这项工作的规模,只需考虑语音助手部署的其中一个上下文感知ASR模型,该模型使用对话上下文在语音助手提出后续问题以确认其对指令的理解时提高准确性。例如:
用户:“语音助手,给Meg打电话。” 语音助手:“您是指Meg Jones还是Meg Bauer?” 用户:“Bauer。”
在第二轮对话中听到“Bauer”时,基于上一轮的上下文,语音助手会倾向于解释为“Bauer”而不是更常见的“power”。在首次部署时,对话上下文感知在此类交互中将ASR错误率降低了近26%。
基础机器学习模型考虑了当前用户话语、上一轮对话的文本(包括用户话语和语音助手响应)以及由话语调用的语音助手服务中的相关上下文信息。这可能包括通讯录条目、连接到语音助手的智能家居设备列表,或本地搜索功能对用户提及的名称的分类——餐厅名称、电影院名称、加油站名称等。
但模型训练完成后,工程师的工作才刚刚开始。
规模问题
第一个工程问题是无法预先知道哪些与语音助手的交互需要后续问题和响应。嵌入上下文信息是一个计算密集型过程。如果对所有用户话语都进行此过程,而只有其中一小部分可能导致多轮交互,那将是资源浪费。
相反,语音助手将相关上下文信息临时存储在服务器上;话语被打上时间戳,并在固定时间后自动删除。只有引发语音助手后续问题的话语才会传递给上下文嵌入模型。
对于存储,语音助手工程师目前使用某机构的DynamoDB服务。与该机构所有存储选项一样,DynamoDB对其存储的数据进行加密,因此更新DynamoDB表中的条目需要先解密。
工程团队希望仅使用单个表条目跟踪多个对话事件;这样,就可以通过单次读取操作决定是否或何时开始上下文嵌入。
但是,如果上下文数据存储在同一条目中,则每次有关交互的更新都必须解密和重新加密。每天对每个用户话语和语音助手回复重复此操作,将开始累积,占用系统资源并导致延迟。
相反,语音助手工程师使用双表系统存储上下文信息。一个表记录与特定语音助手交互相关的系统级事件,例如转录用户话语的指令和合成语音助手回复的指令。每个这些事件都由单个表条目中的单个短文本字符串表示。
该条目还包含对第二个表的引用,该表存储用户话语、语音助手回复以及任何其他上下文数据的加密文本。每个数据项都有自己的条目,因此一旦写入,在语音助手决定为相关事务创建上下文向量之前不需要解密。
“我们努力保持数据库设计的简单和灵活,”领导后续上下文功能工程工作的资深软件开发工程师表示,“即使在语音助手的规模下,科学也在不断发展,我们的系统需要易于理解和适应。”
计算窗口
然而,延迟创建上下文向量直到必要性出现会带来挑战,因为它需要在用户与语音助手交互的中间执行复杂计算。工程师的解决方案是将计算时间隐藏在语音助手对用户请求的回复之下。
所有语音助手交互都由用户话语发起,几乎所有用户话语都会引发语音助手的回复。触发创建上下文向量的事件是重新打开麦克风以听取回复。
语音助手回复的文本在语音助手实际说出之前就可用于上下文模型,重新打开麦克风的指令紧随开始回复的指令之后。这为语音助手提供了一个产生上下文向量的狭窄机会窗口。
如果上下文模型在可用时间内未能生成上下文向量,ASR模型只需正常操作,无需上下文信息。正如工程师所说,上下文ASR模型是一个“尽力而为”的模型。“我们试图引入准确性改进,而不引入可能的故障点,”他表示。
一致性读取
为确保上下文ASR能够实时工作,语音助手工程师还利用了DynamoDB的一些特殊功能。
与所有优秀的数据库系统一样,DynamoDB使用冗余确保数据可用性;写入DynamoDB服务器的任何数据都会被多次复制。但是,如果数据库面临高需求,那么当新数据写入时,更新副本可能会有延迟。因此,路由到其中一个副本的读取请求有时可能会检索到过时的数据。
为防止这种情况,每次语音助手将新信息写入上下文ASR数据表时,它会同时请求记录交互状态的条目的更新版本,确保永远不会获取过时信息。如果该条目包含重新打开麦克风的关键指令记录,语音助手会启动上下文向量的创建;如果没有,语音助手会直接丢弃数据。
“这项工作是科学家和工程师之间紧密合作的结晶,旨在设计能够在语音助手规模上运行的上下文机器学习,”领导新系统工程团队的软件开发经理表示。
“我们为美式英语推出了这项服务,并看到了语音识别错误的有希望改进,”某机构的软件开发经理表示。“我们还使离线实验其他上下文信号变得非常容易,以查看新上下文是否相关。最近的一个成功案例是添加本地信息的上下文——例如,当用户询问附近的咖啡店,然后请求前往其中一家的驾驶路线时。”
“我们认识到,在构建和测试模型之后,将这些模型带给用户的工作才刚刚开始,”语音助手语音应用科学经理补充道。“需要健全的设计才能大规模提供这些服务,这是语音助手工程团队可靠提供的。”