【导读】
本期主题为“语音和语言技术在自然交互中的实践”的爱奇艺技术沙龙中,邀请了来自爱奇艺、小米等知名公司的嘉宾为大家分享关于语音技术方面的创新以及该技术在应用方面的实践,本期沙龙的干货笔记我们会陆续发布。
其中,爱奇艺研究员Shane Wang跟大家分享了爱奇艺智能语音交互系统及在语音交互系统的相关实践,以下为演讲实录。
今天跟大家分享爱奇艺智能语音交互系统,主要分为五个部分,首先介绍具体应用的领域,第二部分,跟大家剖析一下语音视频搜索和我们常规理解的视频搜索到底有何不同。第三及第四部分,分别会从新热内容的支持和上下文用户环境这两个角度来跟大家分享一下爱奇艺在视频搜索这个方面所做得工作。最后,我会介绍跟视频内容理解结合所产生的一些化学反应。
首先来看智能语音交互系统:是爱奇艺创新的智能应用和交互方式落地的平台,建立的初衷主要是从用户和视频这两个立足点出发。在用户方面,通过应用常规的语音识别、意图理解等算法进行分析,同时进行一些前沿的调研,比如说用户年龄层的检测,声纹的提取,声纹的比对等方面的算法来提取用户的更加个性化的信息,将这些信息用于后续的处理过程中,以便给客户更加贴心的服务。
在视频内容方面,AI使我们对视频内容的理解方式发生了变化。原来对视频内容的理解主要来源于社区或是人工编辑的标签信息,现在用AI算法去对大量视频内容进行分析,分析内容包括其中的演员、台词、情景、动作等信息,利用分析结果来生成对于视频语义的理解,同时把这些信息不断的封装抽象给上层业务以提供更多的想象的空间。
现已应用在爱奇艺各大主要的平台上,包括移动端、TV端、VR设备等,甚至在车载端其都有相关落地应用。除了作为语音助手,在语音技术的其他创新应用方面也进行了很多探索,下面我们来介绍有关语音视频搜索方面的内容。
用户会在什么情况下要用语音去进行视频搜索?我总结了以下三种情况,第一种情况是设备的限制,现在很多人家里都有智能音箱,音箱是没有触摸屏、键盘、鼠标就可以去操作的,这时候我们就需要用语音来对他进行控制。第二种情况是用户输入较不方便,比如像家里的智能电视,如果在使用时没有语音摇控器的话,操作者必须在上面搜索打字,上下左右一个一个的移过去,一个一个的敲。第三种情况是面向特殊的人群,如不识字的小孩或者老人,他们无法进行拼音拼写,用语音的方式来进行搜索是最为方便的。
那么,用语音来进行视频搜索和常规的视频搜索到底有哪些不同呢?
第一点,节目名称特别与既定语言产生歧义,现在的剧名越来越有个性,如声入人心,从前有座灵剑山,宸汐缘,都挺好……这些剧名会带来什么问题?在交互上,剧名中的词语可能产生歧义,比如使用键盘鼠标在搜索框里搜“声临其境”时,由于节目名与成语有歧义,系统可能会自动推荐与之符合的节目“声临其境”,但是用户可以选择退回至成语身临其境本身的搜索或者是另外的输入页面。然而,如果是在语音场景下,系统就一定会替用户来做这个决定,用户没有办法对搜索结果进行选择;再比如像“都挺好”,即使这一搜索句式再奇怪,但当我们在搜索框里输入都挺好时,系统仍然会将其作为一个搜索去执行。然而在视频搜索领域,如果这个像音箱这类智能设备本身不知道“都挺好”是一个剧的名称,那么其便会转换成另一模式,比如两年以前你对设备说“都挺好”,智能设备可能会回答你“我也挺好”之类的日常用语。在这种情况下,这些以换一个字的成语作为剧名或者以常见生活短语作为剧名的形式就会对我们的搜索的难度提出一个很大的挑战。
第二,区别是分类方式,在泛类型推荐的情况下,我们将分类情况呈现在UI界面上,在搜索电影或者电视剧时,界面分类情况可供操作者选择,例如按题材、地区等进行分类,但在语音交互情况下,用户无法直观看到系统底层的具体分类情况,用户仅能通过主观概念自行分类,比如用户语音输入“欧美电影”,这时语音解析成为重点问题,我们要思考怎么才能把欧美与美国跟欧洲的合体的关系对应上,这是我们语音视频搜索这个领域需要解决的一个问题。
第三点区别体现在上下文,用户打字是一个相对独立的过程,下一次搜索跟上一次是没有关系的,但在语音沟通的过程当中,用户的输入是一个整体串联的过程。在对当前语音进行处理的时候,系统需要考虑用户上一次说的是什么,当前说的这句话跟上文有没有关系,是否需要进行整合。
以上三条是经总结后,两种视频搜索的方式主要体现出不同的地方,也是我们亟需解决语音技术问题的几个角度。接下来,我们来看爱奇艺在新热内容这一方面做了怎样的适配工作。首先,我们先来看一下整个语音视频搜索的大致流程,目前市面上的智能语音助手大多遵循这样的流程:用户在终端说话,随之语音被发送到服务端,服务端首先进行ASR,即转文字处理,完成ASR后进行意图提取,此举旨在解析用户搜索视频的意图,提取内容包括搜索目标的标题、明星、类型、地区或是出品时间等。在拥有这些结构化的数据后,系统便可以到搜索片库当中进行搜索,最终返回给用户端。
但是,在这其中存在一个问题,用户点播的热点常聚焦在新的、热的电视剧上,我们在上面提到的ASR容易解析出错,这主要是剧名句式问题以及中国的同音字多这一情况造成的,所以直到目前为止分词在业界依然比较难达到非常高的精度。在这三个处理流程中,片库更新的最快,片库更新时间甚至可能先于剧的上映时间,对于ASR而言,这需要上T的语料库去进行语言模型的训练以跟上更新速度。
与之不同,意图识别部分所需语料不及ASR多,但需要对其进行标注,这样一来便形成了如下这种情况:片库中的视频已早早更新,但意图提取未必能及时赶上,这可能需要几周的时间才能把我的意图识别成一个像片名一样的实体,而像“宸汐缘”、“声临其境”包含与常规对话有所差异的字的片名,他们属于不一样的实体类型,ASR要经过数月的过才能使经过迭代的模型囊括这些语料,使得识别结果能够正确。
在系统执行搜索的过程中,系统会认为自己所做的是最正确的决定,并传递给下一个环节,但是在一些搜索中视频的质量其实很差,用户不能得到心仪的搜索结果,但是这个质量很差的结果并不会反馈给前面ASR的模块,这样就会导致整个流程的错误一旦出现,其在后面的环节会被不断的放大。而正是希望通过所做的一些工作来实现实体库的变化,使得即便是新片入库,其也能够非常快的反映在识别模块,反映在意图解析的模块,同时要求实体库的更新不会对算法本身的基础能力造成太大的破坏。
我们会定期更新近期文本语料来进行增量语言模型训练,这个模型也就代表着最新的日常说话的流行的趋势,这部分定期增量的语料也通过合成的方式加入到基础语言模型中,让我们的语言模型具备了一个定期学习的能力。与此同时,我们会收集一定规模的视频领域的语料,即常用的点播句式,这些语料会形成视频领域专属的语言模型,以上三个语言模型最终合成一个语言模型,其包含了大规模的通用语料以及视频领域的语料。
除此之外,我们还会把视频领域的语料句式和实体抽取出来,以此反映实体库的变化,实体库的片名、演员名、导演名等类型的实体可以以相同的权重去替换合成语言模型当中同类的词,即只有当语言模型认为下一个词是演员的时候才会尝试匹配“演员”实体库中所包含的实体路径,这样就使得整个语言模型能够非常快的受到实体库变化的影响,同时其也不会因为部分文本片段而强行错误覆盖那些不需要去替换的别的词。以上是我们在ASR这部分做的工作。
在意图方面,我们通过融入声学向量和实体类型这两个表达来实现快速响应实体变化。通常情况下,我们对文本进行分词之后会得到一系列的词,这些词会通过预训练模型得到词表征,进而经过提取或是判断领域等过程来完成意图识别。在我们的模型中,除了本身预训练的词向量模型之外,会额外并入两段向量,第一段用以表达词的发音,这样可以使得我们整个后续的模型对ASR的错误有一定容忍能力,即便一个字错了,词表征仍有一定的匹配能力。
第二段加的向量是实体类型的向量,例如识别出一个不在词库中的词,词向量并不精确,但是因为实体库的存在,我们容易知道这是个演员,或片名,或地名等实体类型,第二段向量能够使得网络模型在后续处理过程当中对实体类型有一个正确的处理结果。对于整个模型而言,我们通过这样的方式来使其获得对未知词汇的处理能力。
经过刚才两个部分的工作之后,原本语音点播的流程可以通过实体库延伸到去影响整个识别、理解、搜索这三个环节了,即所有的环节,都可以第一时间感知新剧、新明星,甚至剧名句式奇怪一点也没有关系,我们可以正确的去响应用户的请求。
下面,我们来看在上下文和用户环境这一部分所做的一些工作。上下文这一概念对应的是多轮对话,在视频搜索领域抽象出来的多轮对话有点像状态机的概念:用户总是通过第一句话产生一个新的会话,这个新的会话会产生一个搜索结果,这个搜索结果会有三种可能,第一种是搜索结果当中已经出现用户真正需要的东西了,这就是在出现预期结果的时候用户可以直接进行选择。第二种情况是用户发现错了,如搜索杨紫,结果出现另外一个同名同姓的人,用户可以通过紫色的紫等附加条件进一步搜索。这种情况下,系统通常通过用户的句式判断出来,用户下一步的输入是一个负向的请求,这时候系统就会走方向错误这条路径来对上一次的搜索进行一个结果的纠正。
还有剩下两种情况,一个是方向是对的,比如我想看电影,搜索结果都是电影,这时用户需要增加一个维度,比如通过对演员、地区等进行描述去增加维度。第二种可能是用户发现这个结果虽然跟我上一句描述一致,但是不是他想要的,他想重新开启一次新的对话,这就引入语音搜索领域的又一问题——任意搜索都会有结果。但用户在此过程中往往会使用几乎同样的句式,只是做了一个实体替换,如“我想看中国新说唱”,“有没有电影”,收到该指令必定会生成既包含中国新说唱,也包含电影的搜索结果,但这个结果可能质量很差,是一个用户原创内容。在这种情况下,系统是否需要上下文关联起来去给用户这一很差的结果,或是重新接受指令执行单一的搜索电影——这是我们需要解决的一个问题。
为解决这一问题,我们采用如下处理方式。首先进行一个前向的判断,即利用句式来判断用户说的这句话有没有倾向,如果话中有指代,或是新的话明显缺信息,则存在倾向可能。第二点比较关键,我们需要进行后向的判断,在上下文关联判断完毕后,上下文关联的搜索结果被呈现,同时第二句的原始意图会被进行单次的搜索并得到一个单独的搜索结果,我们会对这两个搜索结果进行一个合理性的评估,通过判断最终结果是否更优来决定选用上下文整合的结果还是单次搜索的结果,最后我们会根据这个结果进行倒推。
此时,我们需要思考一个问题——怎么判断结果到底是不是合理的?为什么中国新说唱跟电影放在一起就不合理?爱情公寓和电影放在一起就合理呢?在进行合理性评估讲述的这一部分,我们首先看一个先验概率,先验概率用来评价一部影片本身热度高不高,是不是最近才更新的,先验概率客观的决定了一部剧被用户选中的概率是高还是低,后验的概率代表了这部剧和用户的的关联度及相关度是不是够高,其中相关度的判断和常规的去判断关键词是否被覆盖有些不同,其主要从两个维度进行判断,在如图的搜索集合中,横坐标是关键词被覆盖的数量,其越少越好,新增加的条件应该在旧的结果当中起到选择的作用,而不是没有增加信息量,这就是所谓的关键词被覆盖的数量要越少越好。
比如说搜索动画片得到小猪佩奇第一季、第二季等,这时如果再说“小猪佩奇”,它就被结果当中的好几项都覆盖,新补的内容其实没有起到一个补充信息的作用,这便不是一个好的结果,第二个维度是覆盖的关键词数量,最终选出来的这一搜索项要尽可能多的覆盖前面的内容。第一象限的搜索结果代表能够在结果当中挑出覆盖到用户前面所说的所有关键词的结果,但这一象限的结果普遍存在一个问题:在覆盖很多关键词的同时,有很多的结果都覆盖了这些关键词,说明现在的结果处在缺少信息的状态,用户需要提供更多的信息来对最终结果进行选择。如果目前所显示的搜索结果没能覆盖仅有的关键词,说明搜出来的结果跟用户的请求并不匹配,只是有较弱的关联,这样的情况就是一个比较差的结果。
除了从实体和上下文的角度去理解用户的真实的语义,语义还和用户自己的属性相关,比如说他的偏好、观影记录等因素,包括用户当前所处的语境。下面我们就来具体看一下,语义如何跟这些信息相关。
首先,用户属性包含用户固有的特点,如从他的声音当中可以提取出来他的年龄、性别,从传统的视频搜索中提取用户的历史记录和观影偏好,但是在我们使用语音交互产品时,如包含音箱、电视等,它们有一个共同的特点,即它们是一家人一起用的,这在账号共用的情况下,通过设备或者账号的历史记录、观影偏好来分析这个用户的喜好会存在偏差。
于是,我们引出了这样一个技术,通过声纹聚类,无监督聚类的方式来辨别家庭成员,在每台设备上配置一个声纹库。当一个用户进行输入的时候,系统对声音进行语音处理的同时对他的声纹进行提取,如果这个声纹是之前已经出现过的,我们就会把他的档案归到之前已经存在的这个用户的档案里边,如果发现这是一个新用户的话,我们会为他建立一个新的档案,因此在不同家庭成员不断使用这个设备之后,系统可以分辨出来不同家庭成员的需求与喜好,学习到奶奶平时喜欢看宫斗剧,小朋友喜欢看动画片,比如光头强或者小猪佩奇等等。基于声纹的用户档案建立之后,语音交互设备在家庭的场景当中也可以比较精确的对用户的历史记录、观影偏好进行追踪,从而能够做到更好的个性化推荐。
通过对不同的声纹进行分析,语音交互设备会返回不同的搜索结果。除了用户本身的固有属性因人而异,用户使用设备的客观用户环境也在改变,这会对用户的语义产生一些影响,其中用户的环境包括设备的能力,比如说设备本身固有的形态,比如它是音箱还是电视,电视是否支持直播,支持电视台的某些节目,再比如设备中UI的状态,即呈现给用户的界面,在界面中待选列表会影响用户语义,UI状态跟上下文有一个不同的地方就在于上下文处理上文的前提条件是上一句作为语音输入,而UI状态时用户可能使用别的操作方式进入界面这时只有通过去收集用户当前所处的环境,才能做到类似刚才上下文的效果,收集环境包括用户上一次的搜索词、搜出来的待选结果以及界面中可以点的按纽等。
在这一方面的实现上,我们依赖于UI方注入。同时也在不断尝试是否能自动解析UI当中的标签,当完成解析后,用户再念到这些标签时,业务方只需要对应定义标签的UI元素,告诉用户哪些可以点的,或定义哪些是语音可以点的。这样一来,我们就可以相对独立的通过自己的方式去检索。
同样,我们在观看视频的过程当中也会存在用户环境,比如当前播放视频内容,播放进度,那这两个在语音交互中有何作用?后面我会介绍爱奇艺在视频内容理解和语音交互的结合领域所做的工作。
在视频入库之后,我们会对视频进行一个基础的算法分析,进行基础标签的抽取,比如人物、动物、场景、行为,包括台词、BGM等。有了这些基础标签的抽取之后,我们会在上层进行一个整合,得到的高层的语义提供给上层的应用。在这些应用场景当中,如图需要关注两个部分,第一块是在离线分析后,我们可以得到这些内容标签,并使其进入到我们的语言模型当中,只有语言模型已知这些标签,用户说了对应的话时,我们才能够识别成对应正确的文本。
第二块是用户在播放过程当中,提出一个请求,我们会把用户所处的环境提取出来,其中包括用户当前正观看的视频,看到了什么进度点。基于以上信息的收集,后台处理过程将更具个性化,比如用户现在请求使用“这是谁”,或者“智能跳转”时,后台可以获取用户当前所看的点位,再根据之前离线分析得到的索引结果,结合他的询问就可以查到他需要跳转到什么页面或者需要返回给他何种结果,最后结合用户意图去生成传递给端上的指令来呈现展示明星的结果或跳转到某个点,或跳到某一级的某个点等,实现用户播控的指令。
就视频语义提取而言,以前大部分情况都是人为标注的,现在通常使用算法自动分析,把这些基础信息索引离线分析完之后,再存储到数据库里。但人为和算法在不同场景下体现出各自的优势,一些比较基础的标签可以从画面当中直接提取出来,算法的覆盖度虽然会更高,但是人可以实现一些比较高层的理解。
扫一扫下方二维码,更多精彩内容陪伴你!