精华内容
下载资源
问答
  • 但开发的平台不同, 一个是windows下的,另一个是android平台的,于是也就选用了不同的语音识别平台,前者选的是微软的Speech API开发的,后者则选用 的是CMU的pocketsphinx,本文主要将一些常见的语音交互平台进行...

    1.概述

    最近做了两个与语音识别相关的项目,两个项目的主要任务虽然都是语音识别,或者更确切的说是关键字识别,但开发的平台不同, 一个是windows下的,另一个是android平台的,于是也就选用了不同的语音识别平台,前者选的是微软的Speech API开发的,后者则选用 的是CMU的pocketsphinx,本文主要将一些常见的语音交互平台进行简单的介绍和对比。

    这里所说的语音交互包含语音识别(Speech Recognition,SR,也称为自动语音识别,Automatic Speech Recognition,ASR)和语音 合成(Speech Synthesis,SS,也称为Text-To-Speech,简记为TTS)两种技术,另外还会提到声纹识别(Voice Print Recognition, 简记为VPR)技术。

    语音识别技术是将计算机接收、识别和理解语音信号转变为相应的文本文件或者命令的技术。它是一门涉及到语音语言学、信号处理、 模式识别、概率论和信息论、发声机理和听觉机理、人工智能的交叉学科。在语音识别系统的帮助下,即使用户不懂电脑或者无法使用 电脑,都可以通过语音识别系统对电脑进行操作。

    语音合成,又称文语转换(Text to Speech)技术,能将任意文字信息实时转化为标准流畅的语音朗读出来,相当于给机器装上了人工 嘴巴。它涉及声学、语言学、数字信号处理、计算机科学等多个学科技术,是中文信息处理领域的一项前沿技术,解决的主要问题就是如何 将文字信息转化为可听的声音信息,也即让机器像人一样开口说话。

    下面按平台是否开源来介绍几种常见的语音交互平台,关于语音识别和语音合成技术的相关原理请参见我接下来的其他文章。


    2.商业化的语音交互平台

    1)微软Speech API

    微软的Speech API(简称为SAPI)是微软推出的包含语音识别(SR)和语音合成(SS)引擎的应用编程接口(API),在Windows下应用 广泛。目前,微软已发布了多个SAPI版本(最新的是SAPI 5.4版),这些版本要么作为于Speech SDK开发包发布,要么直接被包含在windows 操作系统中发布。SAPI支持多种语言的识别和朗读,包括英文、中文、日文等。SAPI的版本分为两个家族,1-4为一个家族,这四个版本彼此 相似,只是稍微添加了一些新的功能;第二个家族是SAPI5,这个系列的版本是全新的,与前四个版本截然不同。

    最早的SAPI 1.0于1995年发布,支持Windows 95和Windows NT 3.51。这个版本的SAPI包含比较初级的直接语音识别和直接语音合成的API, 应用程序可以直接控制识别或合成引擎,并简化更高层次的语音命令和语音通话的API。SAPI3.0于97年发布,它添加了听写语音识别(非连续 语音识别)和一些应用程序实例。98年微软发布了SAPI4.0,这个版本不仅包含了核心的COM API,用C++类封装,使得用C++来编程更容易, 而且还有ActiveX控件,这个控件可以再VB中拖放。这个版本的SS引擎随Windows2000一起发布,而SR引擎和SS引擎又一起以SDK的形式发布。

    SAPI5.0 于2000年发布,新的版本将严格将应用与引擎分离的理念体现得更为充分,所有的调用都是通过动态调用sapi.dll来实现的, 这样做的目的是使得API更为引擎独立化,防止应用依赖于某个具有特定特征的引擎,这种改变也意图通过将一些配置和初始化的代码放 到运行时来使得应用程序的开发更为容易。


    2).IBM viaVoice

    IBM是较早开始语音识别方面的研究的机构之一,早在20世纪50年代末期,IBM就开始了语音识别的研究,计算机被设计用来检测特定的语言 模式并得出声音和它对应的文字之间的统计相关性。在1964年的世界博览会上,IBM向世人展示了数字语音识别的“shoe box recognizer”。 1984年,IBM发布的语音识别系统在5000个词汇量级上达到了95%的识别率。

    1992年,IBM引入了它的第一个听写系统,称为“IBM Speech Server Series (ISSS)”。1996年发布了新版的听写系统,成为“VoiceType3.0”, 这是viaVoice的原型,这个版本的语音识别系统不需要训练,可以实现孤立单词的听写和连续命令的识别。VoiceType3.0支持Windows95系统, 并被集成到了OS/2 WARP系统之中。与此同时,IBM还发布了世界上首个连续听写系统“MedSpeak Radiology”。最后,IBM及时的在假日购物季节 发布了大众化的实用的“VoiceType Simply Speaking”系统,它是世界上首个消费版的听写产品(the world’s first consumer dictation product).

    1999年,IBM发布了VoiceType的一个免费版。2003年,IBM授权ScanSoft公司拥有基于ViaVoice的桌面产品的全球独家经销权,而ScanSoft公司 拥有颇具竞争力的产品“Dragon NaturallySpeaking”。两年后,ScanSoft与Nuance合并,并宣布公司正式更名为Nuance Communications,Inc。 现在很难找到IBM viaVoice SDK的下载地址了,它已淡出人们的视线,取而代之的是Nuance。


    3)Nuance

    Nuance通讯是一家跨国计算机软件技术公司,总部设在美国马萨诸塞州伯灵顿,主要提供语音和图像方面的解决方案和应用。目前的业务集中 在服务器和嵌入式语音识别,电话转向系统,自动电话目录服务,医疗转录软件与系统,光学字符识别软件,和台式机的成像软件等。

    Nuance语音技术除了语音识别技术外,还包扩语音合成、声纹识别等技术。世界语音技术市场,有超过80%的语音识别是采用Nuance识别引擎技术, 其名下有超过1000个专利技术,公司研发的语音产品可以支持超过50种语言,在全球拥有超过20亿用户。据传,苹果的iPhone 4S的Siri语音识别中 应用了Nuance的语音识别服务。另外,据Nuance公司宣布的重磅消息,其汽车级龙驱动器Dragon Drive将在新奥迪A3上提供一个免提通讯接口, 可以实现信息的听说获取和传递。

    Nuance Voice Platform(NVP)是Nuance公司推出的语音互联网平台。Nuance公司的NVP平台由三个功能块组成:Nuance Conversation Server 对话服务器,Nuance Application Environment (NAE)应用环境及Nuance Management Station管理站。Nuance Conversation Server对话服务 器包括了与Nuance语音识别模块集成在一起的VoiceXML解释器,文语转换器(TTS)以及声纹鉴别软件。NAE应用环境包括绘图式的开发工具, 使得语音应用的设计变得和应用框架的设计一样便利。Nuance Management Station管理站提供了非常强大的系统管理和分析能力,它们是为了 满足语音服务的独特需要而设计的。


    4)科大讯飞——讯飞语音

    提到科大讯飞,大家都不陌生,其全称是“安徽科大讯飞信息科技股份有限公司”,它的前身是安徽中科大讯飞信息科技有限公司,成立于99 年12月,07年变更为安徽科大讯飞信息科技股份有限公司,现在是一家专业从事智能语音及语音技术研究、软件及芯片产品开发、语音信息服务 的企业,在中国语音技术领域可谓独占鳌头,在世界范围内也具有相当的影响力。

    科大讯飞作为中国最大的智能语音技术提供商,在智能语音技术领域有着长期的研究积累,并在中文语音合成、语音识别、口语评测等多项 技术上拥有国际领先的成果。03年,科大讯飞获迄今中国语音产业唯一的“国家科技进步奖(二等)”,05年获中国信息产业自主创新最高荣誉 “信息产业重大技术发明奖”。06年至11年,连续六届英文语音合成国际大赛(Blizzard Challenge)荣获第一名。08年获国际说话人识别评测 大赛(美国国家标准技术研究院—NIST 2008)桂冠,09年获得国际语种识别评测大赛(NIST 2009)高难度混淆方言测试指标冠军、通用测试 指标亚军。

    科大讯飞提供语音识别、语音合成、声纹识别等全方位的语音交互平台。拥有自主知识产权的智能语音技术,科大讯飞已推出从大型电信级 应用到小型嵌入式应用,从电信、金融等行业到企业和家庭用户,从PC到手机到MP3/MP4/PMP和玩具,能够满足不同应用环境的多种产品,科大 讯飞占有中文语音技术市场60%以上市场份额,语音合成产品市场份额达到70%以上。


    5)其他

    其他的影响力较大商用语音交互平台有谷歌的语音搜索(Google Voice Search),百度和搜狗的语音输入法等等,这些平台相对于以上的4个 语音交互平台,应用范围相对较为局限,影响力也没有那么强,这里就不详细介绍了。


    3.开源的语音交互平台

    1)CMU-Sphinx

    CMU-Sphinx也简称为Sphinx(狮身人面像),是卡内基 - 梅隆大学( Carnegie Mellon University,CMU)开发的一款开源的语音识别系统, 它包括一系列的语音识别器和声学模型训练工具。

    Sphinx有多个版本,其中Sphinx1~3是C语言版本的,而Sphinx4是Java版的,另外还有针对嵌入式设备的精简优化版PocketSphinx。Sphinx-I 由李开复(Kai-Fu Lee)于1987年左右开发,使用了固定的HMM模型(含3个大小为256的codebook),它被号称为第一个高性能的连续语音识别 系统(在Resource Management数据库上准确率达到了90%+)。Sphinx-II由Xuedong Huang于1992年左右开发,使用了半连续的HMM模型, 其HMM模型是一个包含了5个状态的拓扑结构,并使用了N-gram的语言模型,使用了Fast lextree作为实时的解码器,在WSJ数据集上的识别率 也达到了90%+。

    Sphinx-III主要由Eric Thayer 和Mosur Ravishankar于1996年左右开发,使用了完全连续的(也支持半连续的)HMM模型,具有灵活 的feature vector和灵活的HMM拓扑结构,包含可选的两种解码器:较慢的Flat search和较快的Lextree search。该版本在BN(98的测评数据 集)上的WER(word error ratio)为19%。Sphinx-III的最初版还有很多limitations,诸如只支持三音素文本、只支持Ngram模型(不 支持CFG/FSA/SCFG)、对所有的sound unit其HMM拓扑结构都是相同的、声学模型也是uniform的。Sphinx-III的最新版是09年初发布的0.8版, 在这些方面有很多的改进。

    最新的Sphinx语音识别系统包含如下软件包:
    Pocketsphinx — recognizer library written in C.
    Sphinxbase — support library required by Pocketsphinx
    Sphinx4 — adjustable, modifiable recognizer written in Java
    CMUclmtk — language model tools
    Sphinxtrain — acoustic model training tools
    这些软件包的可执行文件和源代码在sourceforge上都可以免费下载得到。


    2)HTK

    HTK是Hidden Markov Model Toolkit(隐马尔科夫模型工具包)的简称,HTK主要用于语音识别研究,现在已经被用于很多其他方面的研究, 包括语音合成、字符识别和DNA测序等。

    HTK最初是由剑桥大学工程学院(Cambridge University Engineering Department ,CUED)的机器智能实验室(前语音视觉及机器人组) 于1989年开发的,它被用来构建CUED的大词汇量的语音识别系统。93年Entropic Research Laboratory Inc.获得了出售HTK的权利,并在95年 全部转让给了刚成立的Entropic Cambridge Research Laboratory Ltd,Entropic一直销售着HTK,直到99年微软收购了Entropic,微软重新 将HTK的版权授予CUED,并给CUED提供支持,这样CUED重新发布了HTK,并在网络上提供开发支持。

    HTK的最新版本是09年发布的3.4.1版,关于HTK的实现原理和各个工具的使用方法可以参看HTK的文档HTKBook。


    3)Julius

    Julius是一个高性能、双通道的大词汇量连续语音识别(large vocabulary continues speech recognition,LVCSR)的开源项目, 适合于广大的研究人员和开发人员。它使用3-gram及上下文相关的HMM,在当前的PC机上能够实现实时的语音识别,单词量达到60k个。

    Julius整合了主要的搜索算法,高度的模块化使得它的结构模型更加独立,它同时支持多种HMM模型(如shared-state triphones 和 tied-mixture models等),支持多种麦克风通道,支持多种模型和结构的组合。它采用标准的格式,这使得和其他工具箱交叉使用变得 更容易。它主要支持的平台包括Linux和其他类Unix系统,也适用于Windows。它是开源的,并使用BSD许可协议。

    自97年后,Julius作为日本LVCSR研究的一个自由软件工具包的一部分而延续下来,后在2000年转由日本连续语音识别联盟(CSRC)经营。 从3.4版起,引入了被称为“Julian”的基于语法的识别解析器,Julian是一个改自Julius的以手工设计的DFA作为语言模型的版本,它可以 用来构建小词汇量的命令识别系统或语音对话系统。


    4)RWTH ASR

    该工具箱包含最新的自动语音识别技术的算法实现,它由 RWTH Aachen 大学的Human Language Technology and Pattern Recognition Group 开发。

    RWTH ASR工具箱包括声学模型的构建、解析器等重要部分,还包括说话人自适应组件、说话人自适应训练组件、非监督训练组件、个性化 训练和单词词根处理组件等,它支持Linux和Mac OS等操作系统,其项目网站上有比较全面的文档和实例,还提供了现成的用于研究目的的 模型等。

    该工具箱遵从一种从QPL发展而来的开源协议,只允许用于非商业用途。


    5)其他

    上面提到的开源工具箱主要都是用于语音识别的,其他的开源语音识别项目还有Kaldi 、simon 、iATROS-speech 、SHoUT 、 Zanzibar OpenIVR 等。

    常见的语音合成的开源工具箱有MARY、SpeakRight、Festival 、FreeTTS 、Festvox 、eSpeak 、Flite 等。

    常见的声纹识别的开源工具箱有Alize、openVP等。


    4.小结

    本文介绍了几种常见的语音交互平台,主要是语音识别、语音合成的软件或工具包,还顺便提到了声纹识别的内容, 下面做一个简单的总结:


    参考文献

    [1]语音识别-维基百科:http://zh.wikipedia.org/wiki/语音识别 
    [2]语音合成-百度百科:http://baike.baidu.com/view/549184.htm 
    [3] Microsoft Speech API:http://en.wikipedia.org/wiki/Speech_Application_Programming_Interface#SAPI_1 
    [4] MSDN-SAPI:http://msdn.microsoft.com/zh-cn/library/ms723627.aspx 
    [5] 微软语音技术 Windows 语音编程初步:http://blog.csdn.net/yincheng01/article/details/3511525 
    [6]IBM Human Language Technologies History:http://www.research.ibm.com/hlt/html/history.html 
    [7] Nuance: http://en.wikipedia.org/wiki/Nuance_Communications 
    [8] 科大讯飞:http://baike.baidu.com/view/362434.htm 
    [9] CMU-Sphinx: http://en.wikipedia.org/wiki/CMU_Sphinx 
    [10] CMU Sphinx homepage:http://cmusphinx.sourceforge.net/wiki/ 
    [11] HTK Toolkit:http://htk.eng.cam.ac.uk/ 
    [12] Julius:http://en.wikipedia.org/wiki/Julius_(software) 
    [13] RWTH ASR:http://en.wikipedia.org/wiki/RWTH_ASR 
    [14] List of speech recognition software: http://en.wikipedia.org/wiki/List_of_speech_recognition_software 
    [15] Speech recognition: http://en.wikipedia.org/wiki/Speech_recognition 
    [16] Speech synthesis: http://en.wikipedia.org/wiki/Speech_synthesis 
    [17] Speaker recognition: http://en.wikipedia.org/wiki/Speaker_recognition


    展开全文
  • ipywidgets包含许多控件,可以在jupyter notebook上实现交互式输入输出。本文以文本输入为例子,全面介绍了ipywidgets的常用控件、常见属性、布局方法与外观样式调整。讲解深入浅出,例证丰富。文中所有例子均有代码...

    交互式输入用到的包是ipywidgets,如果还未安装,可以在终端中使用pip install ipywidgets安装。
    引用:

    import ipywidgets as widgets	# 控件库
    from IPython.display import display	# 显示控件的方法
    

    官方文档:https://ipywidgets.readthedocs.io/en/stable/index.html
    Github项目地址:https://github.com/jupyter-widgets/ipywidgets

    widgets中的控件包括两部分:

    1. UI/HTML element,这是显示在output cell中的部分,通常是实例化后将其作为display函数的实参传递
    2. event handler,控件的注册事件,通常做法是将一个定义好的python函数作为实参传递到控件的事件中

    例子 - TextBox

    import ipywidgets as widgets	# 控件库
    from IPython.display import display	# 显示控件的方法
    text = widgets.Text()
    display(text)
    
    def print_value(sender):
        print(sender.value)
    
    text.on_submit(print_value)	# 回车以提交内容
    

    text sample
    在jupyter notebook中输入以上代码,运行后会在输出区显示一个文本框,在文本框中输入内容并回车后,会触发on_submit事件,并输出文本框中的内容。
    再次输入并回车,不会清除上一次的输出,而是换行重新输出(图中未展示)。


    常用控件

    • widgets.Text():文本框,构造函数没有形参,常用事件.on_submit(callback),使用示例见上文

    • widgets.Button(**kwages):按钮,构造函数的形参包括:

      • description:显示在按钮上的文字
      • tooltip:鼠标悬浮时显示的提示文字
      • icon:图标(没有成功使用过)
      • disabled:bool值,是否禁止交互

      常用事件:.on_click(callback)。例子:

      btn = widgets.Button(description = "OK", tooltip = 'this is a button')
      def btn_click(sender):
      	print('Button %s clicked!' % sender.description)
      btn.on_click(btn_click)
      display(btn)
      

    button sample

    • widgets.Box():容器,将其它控件组合在一起的控件,类似.Net中的Panel,在构造时传入一个其它控件的数组,没有常用事件。除此外还有HBox()VBox()等容器。
      box = widgets.Box([text,btn])
      display(box)
      
      在这里插入图片描述

      如果觉得使用Box比较麻烦,可以直接在display()里传入多个控件,也能达到组合效果,但是布局就比较随机了。比如上面的例子也可以直接使用 display(text,btn)
      combine sample

    • widgets.Label(value:str):普通文本标签,通常与其它控件共同组合在Box中以显示说明文本,在构造时传入实参value作为要显示的文本,没有常用事件。
      widgets.HBox([widgets.Label(value="The $m$ in $E=mc^2$:"), widgets.FloatSlider()])
      

    引用图片,有时间再补上

    • widgets.HTML(value:str):HTML文本标签,支持HTML特性,例如粗体、斜体、彩色字体等。如:
    display(widgets.HTML(value="<font color='#ff000000'>Hello</font>, <b>World</b>!"))
    

    html

    选项类控件

    可以用于选取的控件有下拉菜单DropDown、单选列表Select、单选按钮RadioButtons、多选列表SelectMultiple、并列开关ToggleButtons、滑动选取SelectionSlider、范围选取SelectionRangeSlider等。
    选取控件有共同的基类_Selection,其初始化参数(也是其属性)有:

    • options:是一个列表list,表示可以选取的选项,其元素既可以是简单的str值,也可以是形如(label, value)的键值对;
    • label:是当前选项在页面上显示的值
    • value:是当前选项在控件内部使用的值
    • index:是当前选项在options中的索引值
    • 如果options元素不是键值对而是str,则labelvalue相等
    • 如果在初始化时同时指定valuelabelindex,则以最后指定的值为准

    例如widgets.DropDown

    drpbx = Dropdown(options=[("first", 1), ("second", 2), ("third", 3)], index=0, value=1, label="second")
    
    def chosen(_):
        print("Selected index:{}, value:{}, label:{}".format(drpbx.index, drpbx.value, drpbx.label))
    
    drpbx.observe(chosen, names="value")
    display(drpbx)
    

    DropDown示例

    observe的含义与用法见下文

    其它选项类控件的例子请查阅官方文档


    不常用控件与observe事件

    上述控件属于比较常用的几个,包含有特殊事件。以下的控件通常不再包含特殊事件,而是将所有事件整合到observe(handler:callable, names:list, type:str='change')中,用法见下文。

    先看一下observe的文档:

    print(ipywidgets.Widget.observe.__doc__)
    
    Setup a handler to be called when a trait changes.
    
            This is used to setup dynamic notifications of trait changes.
    
            Parameters
            ----------
            handler : callable
                A callable that is called when a trait changes. Its
                signature should be ``handler(change)``, where ``change`` is a
                dictionary. The change dictionary at least holds a 'type' key.
                * ``type``: the type of notification.
                Other keys may be passed depending on the value of 'type'. In the
                case where type is 'change', we also have the following keys:
                * ``owner`` : the HasTraits instance
                * ``old`` : the old value of the modified trait attribute
                * ``new`` : the new value of the modified trait attribute
                * ``name`` : the name of the modified trait attribute.
            names : list, str, All
                If names is All, the handler will apply to all traits.  If a list
                of str, handler will apply to all names in the list.  If a
                str, the handler will apply just to that name.
            type : str, All (default: 'change')
                The type of notification to filter by. If equal to All, then all
                notifications are passed to the observe handler.
    

    意思就是,observe可以关注控件的一些属性,当这些属性的值变化时,就会调用handler方法,并传递一组字典作为handler的实参。字典的内容包括{'name','old','new','owner','type'},分别是:属性名、旧属性值、新属性值、属性所属的控件、事件类型。示例如下:

    slt = widgets.Select(options=['first','second','third'])
    display(slt)
    def attr_event_handler(attrs):
        print(attrs)
        print('attribute {name} of {owner} {type} from {old} to {new}'.format(
            name=attrs['name'],owner=type(attrs['owner']),type=attrs['type'],old=attrs['old'],new=attrs['new']))
    slt.observe(attr_event_handler, names='value')
    

    在这里插入图片描述
    运行后,Select控件默认选中第一行(first),鼠标单击选中第二行后,会触发attr_event_handler,因为这里observenames参数不是数组而是仅有一个value属性,因此传递到attr_event_handler的也不是数组,不需要用for遍历。

    注意:如果初始化后用户仍选取第一行(或不作选取),是不会触发observe事件的,因此要做好用户不作选取的应对方案

    以下控件都需要使用observe事件

    • 前文介绍的选项类控件
    • widgets.IntSlider:可拖动的滚动条,构造函数的形参包括:
      • value:初始值
      • min:最小值
      • max:最大值
      • step:可调整的最小步长
    • widgets.FloatSilder:也是滚动条,但value是浮点数
    • widgets.DatePicker:日期选取
    • widgets.ColorPicker:颜色选取
    • 其它不常用控件

    更多控件请访问ipywidgets官方文档


    控件属性同步 - Link方法

    上文中所介绍的控件属性,本质其实并不是Python Class的attributes,而是traitletsTraitlets是一个可以为Class定义类型安全的属性的框架,见Traitlets文档。Ipywidget中对traitlets的说明是:
    Traitlets is an IPython library for defining type-safe properties on configurable objects. For this tutorial you do not need to worry about the configurable piece of the traitlets machinery. The sync=True keyword argument tells the widget framework to handle synchronizing that value to the browser.

    • widgets.link((widget, name),...):同步多个控件的traitlets属性(通常是'value'):
      caption = widgets.Label(value='slider1和slider2的值将同步变化')
      sliders1, slider2 = widgets.IntSlider(description='Slider 1'),\
                      	widgets.IntSlider(description='Slider 2')
      l = widgets.link((sliders1, 'value'), (slider2, 'value'))
      display(caption, sliders1, slider2)
      
      link sample
    • widgets.dlink((source, name), (target, name), transform=None):单向连接(directional_link),即:target的指定属性跟随source的指定属性变化,而source的指定属性不随target的指定属性变化。由name指定属性(通常是'value')。
      caption = widgets.Label(value='source的values变化将反映在target1上')
      source, target1 = widgets.IntSlider(description='Source'),\
                        widgets.IntSlider(description='Target 1')
      dl = widgets.dlink((source, 'value'), (target1, 'value'))
      display(caption, source, target1)
      
      dlink sample

      linkdlink会返回一个对象,对此对象调用unlink()方法将解除绑定。

      l.unlink()
      dl.unlink()
      

    控件布局与样式 - LayoutStyle属性

    控件通过layout属性控制布局,用于调整控件大小与位置;通过style属性控制样式,用于调整色彩与字体。
    在控件初始化时,可以指定形参layoutipywidgets.Layout的实例,需要引用:

    from ipywidgets import Layout
    

    例如:

    b = widgets.Button(description='(50% width, 80px height) button',
               layout=Layout(width='50%', height='80px'))
    b1 = Button(description='Another button with the same layout', layout=b.layout)
    display(b, b1)
    

    2layoutbtn
    如果不想额外引用Layout,也可以在初始化之后再设置控件的layout属性:

    b = widgets.Button(description='(50% width, 80px height) button')
    b.layout.width='50%'
    b.layout.height='80px'
    b1 = Button(description='Another button with the same layout')
    b1.layout = b.layout
    

    Style的用法与Layout相似,既可以在初始化时指定,也可以初始化后指定。例如:

    b1 = Button(description='Custom color')
    b1.style.button_color = 'lightgreen'
    b1
    

    colorbtn
    可以通过widget.style.keys查看一个控件的所有可用样式:
    stylekeys
    除了自己指定Style外,ipywidgets还为许多控件预定义了许多type_style,以便快速获取常用的样式。
    例如,Button.button_style可以在以下5种常用按钮中选择:['primary', 'success', 'info', 'warning', 'danger']

    from ipywidgets import Button, HBox
    display(
        HBox([
            Button(description='Primary Button', button_style='primary'),
            Button(description='Success Button', button_style='success'),
            Button(description='Info Button', button_style='info'),
            Button(description='Warning Button', button_style='warning'),
            Button(description='Danger Button', button_style='danger')
        ]))
    

    btnstyle

    Layout实际使用的是CSS样式,常用的有:

    • Sizes
      • height
      • width
      • max_height
      • max_width
      • min_height
      • min_width
    • Display
      • visibility
      • display
      • overflow
      • overflow_x
      • overflow_y
    • Box model
      • border
      • margin
      • padding
    • Positioning
      • top
      • left
      • bottom
      • right
    • Flexbox
      • order
      • flex_flow
      • align_items
      • flex
      • align_self
      • align_content
      • justify_content
    • Grid layout
      • grid_auto_columns
      • grid_auto_flow
      • grid_auto_rows
      • grid_gap
      • grid_template
      • grid_row
      • grid_column

    详情参见Layout and Styling


    感谢NickeManarin开发的ScreenToGif,一个很好用的GIF截屏工具。

    其它未尽事宜请在下方评论留言。欢迎转载分享,转载请注明出处,谢谢!!

    展开全文
  • Chapter5 交互设计测试与评估 第一章 为什么要开展测试与评估 用户测试:请目标用户使用产品来完成任务,观察并记录用户使用产品的整个过程. 用户测试的定义:也被称为产品可用性测试,指特定的用户在特定的使用...

    如果有需要视频资源的可以关注"AI产品经理人",回复关键字“网易交互设计微专业”获取下载链接~ 

    Chapter5  交互设计测试与评估

    第一章 为什么要开展测试与评估

    用户测试:请目标用户使用产品来完成任务,观察并记录用户使用产品的整个过程.

    用户测试的定义:也被称为产品可用性测试,指特定的用户在特定的使用场景中,为了达到特定的目标而使用某产品时,所感受到的有效性、效率以及满意度。从而找出产品可用性问题,并解决这些问题,目的是为了改善这些产品,让产品更容易使用。

    用户测试的测试目标

    • 有效性--用户能够达成自己的目标;
    • 效    率--用户能以最短路径达成目的;
    • 满意度--用户没有产品不愉快的体验;

    用户测试基本流程:

    1. 设计测试。设计参与者在测试中需要完成的任务;
    2. 招募用户。筛选符合测试要求的目标用户进行测试;
    3. 进行测试。观察并记录参与者完成任务过程中的情况。Tips:以抛出问题为主,少做建议。
    4. 分析报告。列出问题并进行分析,判定问题的严重性及特殊性。

    案例:网易云课堂

    用户测试的意义

    1. 挖掘用户的潜在需求
    2. 发现并解决产品存在的问题
    3. 降低产品周期成本
    4. 增强设计的说服力

    评估形式分类:

    • 评估主体,主要有用户评估和专家评估

    用户评估,就是用户测试,主要靠收集用户使用数据,它相对客观,但时间和费用花费较多,评估范围较宽

    专家评估,是让工程师及设计师等专家基于自身的专业知识和经验进行评估的一种方式。它相对主观,但时间和费用花费少,评估的范围较窄

    • 评估性质,主要有定性评估和定量评估

    定量评估,是指对可以计量的部分进行评价,如点击量、使用率等

    定性评估,是指对非计量性的部分进行评价,如流畅度、舒适性、创造性等

    • 评估过程,主要有理性评估和感性评估

    理性评估,相对客观,从客观角度出来判断客观事物,例如对比的是价格,我们一定会选择便宜的

    感性评估,更为主观,评估结果并没有客观规律

    以上评估方式各有优缺,需要结合起来使用。

    四种常见评估方法

    • 1、原型评估方法

    “在产品研发过程中,对于界面设计以及程序的测试来获得用户的反馈是至关重要的。以用户为中心交互式设计的重要因素之一就是原型方法,原型方法的目的是将界面设计与用户的需求进行匹配。”

    • 快速原型:原型迅速成型,系统从草案中得到完善;
    • 增量原型:需要阶段性的测试;
    • 演化原型 :对前期的原型进行不断地补充;
    • 2、简易测试评估方法(摄像机、实验室、记录员)

    “在条件不允许的情况下,可以采用简易的方法来对用户体验进行评价”

    • 3、眼动评估方法

    眼动追踪可以用来评价用户对产品设计的感性意象,评测产品设计的特性。眼动评估的指标主要有注视热点图(Hotspot)、搜索过程测量指标、兴趣区域(AOI,即用户视觉注意的交点去)

    • 4、脑电评估方法

    通过对脑电信号的分析,研究者可以探索大脑的认知加工过程和受试者的心理状况

    第二章  启发式评估

    1. 什么是启发式评估?

    定义:是专家评估法的一种,也被称为经验性评估。是一种简易的可用性评估方法,使用一套相对简单、通用、有启发性的可用性原则,让几个评审人员根据专业知识和经验来进行评估,发现产品潜在的可用性问题。

    两大要素:

    • (1)评估者

    人数:推荐3~5人,有时也会简化

    岗位:设计师、用户研究员

    身份:最好非设计者本人

    知识:同时具有可用性知识及设计知识更佳

    • (2)评估原则

    Nielsen启发式10原则、Nielsen拓展原则、Nielsen首页可用性指南、iSO9241、八项黄金法则、HHS网页设计与可用性指南

    适用阶段:

    • “评估越早越好”,一般是在交互/视觉设计阶段、测试优化阶段、正式发布阶段进行评估

    特点:

    • 优:成本低;效率高;发现大多数可用性问题;
    • 缺:不能代表真实用户,相对主观;有时发现问题过多;对评估人员知识背景要求较高;

    适用情况:

    • 适合时间、资源有限的情况下快速发现可用性问题,降低风险及成本;
    • 版本变动不大的情况下,小成本检验
    • 作为可用性测试之前的准备

    2. 如何进行启发式评估?

    Step1:评估准备阶段

    • 确定范围:整体vs局部
    • 背景信息:用户、场景、主要任务、竞品
    • 评估参考原则(如尼尔森10原则):根据评审目标和产品特性选择
    • 评委邀约:设计师、用户研究员、非本人
    • 材料准备:评估说明、用户手册、评分表等

    案例:网易云课堂

    TIPS:事先提供一些评估表,比如启发式评估表等。

    Step2:评估执行阶段

    Step3:结果分析阶段

    问题清单一般包括:问题序号、页面名称、问题维度、截图、问题/需求描述、解决方案;

    报告形式:word形式、ppt形式、表格形式(建议);

    第三章  可用性测试

    1. 什么是可用性测试?

    定义:通过观察具有代表性的用户,完成产品的典型任务,从而找出产品可用性问题,并解决这些问题,目的是为了改善产品让产品更容易使用

    适用阶段

    • “测试越早越好”,一般是在交互/视觉设计阶段、测试优化阶段、正式发布阶段进行测试

     

    可用性测试类型:

    • 1)形成式:小样本;发现问题解决问题为主;不能做定量对比(互联网产品常用:快速用户测试)
    • 2)总结式:大样本,30人以上;可以做版本的对比评估和定量评估

    可用性测试解决什么问题?

    可用性测试的特点

    2. 如何进行可用性测试?

    流程:准备阶段--->正式测试--->结果分析--->优化(迭代,很多轮)

    (1) 准备阶段

    • 确定目标
    • 测试方案

    • 测试脚本

    给用户找点事儿做,观察、提问,获得我们想要的信息;

    重点:设计测试任务

    测试任务关注点:

    • 锁定在主要任务上
    • 从用户角度出发
    • 明确起点和终点
    • 任务场景化
    • 招募用户

    招募用户时可以用过滤问卷快速筛选用户.

    招募用户案例: 

     

    • 材料工具
    1. 待测试产品素材(草图、低保真原型、高保真原型);
    2. 常用量表工具 (可用性测试量表、形容词语义量表、概念吸引力测试卡片、卡片分类内容卡片、生活形态价值观量表、彩色竞品示卡、背景信息问卷);
    3. 电子设备、桌椅、纸笔、办公区域、摄像机、录音笔等;
    4. 测试清单:测试流程、测试中用到的设备&材料等,核对清单防止遗漏!
    • 测试场地

    (1)专业实验室:

    (2)普通会议室:观察人数较少时;条件有限时;

    • 预测试

    保证测试顺利进行! 

    (2) 正式测试

    • 正式测试输出物:测试记录、录像录音
    • 测试参与人员:主持人、记录员、产品团队、用户

    • 测试前:暖场、测前访谈、简单试用

    • 测试中:用户执行任务、事后访谈

    测试过程中的观察要点:

    1. 用户是否独立完成了任务;
    2. 是否存在无效操作或者不知所措;
    3. 用户是否不满

     

    • 测试后:道别、准备下一场测试、简单总结发现

    (3)结果分析

     

    结果分析输出物:测试报告

    结果分析步骤:对发现分类、整理不确定项、评定优先级(参考常见标准)、结果记录;

    结果分析工具:贴纸归类、excel表;

    结果分析报告撰写

    1. 总体如何
    2. 有哪些问题?截图
    3. 严重程度如何?优先级的描述和排
    4. 建议是什么?
    5. 除此之外,可以问绕用户核心关注的问题和一些为满足需求做补充分析

    报告样例:

    • ppt形式:

    • excel形式:

    (4) 优化

    • 优化跟踪输出物、优化方案

    问题追踪表

    敏捷测试

    • Q1:可用性测试耗时太久,测试赶不上产品节奏?
    • A1:敏捷测试,边测试边改进;提高测试效率(建立用户库、工具模板、简化流程或报告)

    • Q2:正规测试耗时耗力?
    • A2:简易测试

    第四章 其他评估方法

    (一)问卷调查

    Q:产品上线后,想了解用户对上线后产品的满意度

    适用阶段:产品研发前(挖掘需求)、产品设计(了解用户使用习惯、偏好)、正式发布(用户满意度)

    适用场景:

    适用于做定量分析、匿名调研、对已有假设进行检验、对用户的认知和态度进行评估,不适用于发现和描述具体问题、获取创新的想法、获取精确的行为数据。

    问卷调查步骤:

    • step1:确定调研目的

    • step2:设计调研方案

    常见抽样方法:随机抽样、分层抽样、分群抽样、系统抽样;

    问卷投放量的考虑

    (1)线上问卷,一般相聚工时估计满足统计需求需要回收的量。置信区间,抽样误差,总体大小,需要交叉的变量几个因素影响;

    (2)工具各个渠道投放回收率情况,计算所需投放量或投放天数;

    投放方式选择

    问卷投放渠道 

    • step3:问卷设计

     

    • step4:问卷测试

    (1)多找几个人一起试填,检查题项表述用户是否理解,是否有歧义,逻辑是否通;

    (2)检查问卷跳转是否正常,在不同浏览器中能否正常显示;

    (3)数据回收是否正常,避免回收出现问题;

    • step5:问卷投放

    投放方式选择:

    问卷投放渠道 

    问卷回收效果跟踪

    • step6:数据分析

     案例:

     

     

    (二)产品数据分析

    1.数据分析概述

    定义:通过在网站或应用中进行数据埋点,进而获取用户对产品的使用和行为数据,并进行基于产品体验优化的数据统计分析;

    评估方法:

    适用时间:

    web端数据来源

    • 服务器日志文件记录

    • javascript页面标记

    移动端数据来源:

    常用数据监控平台:

    • 第三方网站监测分析工具​
    • 自己的数据分析平台

    数据分析流程:监控-定义-埋点-测量(获取数据)-分析-优化-监控

    2. 基础分析指标

    • web页面常用基础指标:PV、UV、UPV、访问

    识别用户的方式:IP、IP+User Agent、Cookie、User ID、设备ID、其他

    • 复合指标:跳出率(来了就走)、退出率、访问时长、访问深度、转化率

    3. 常见分析内容
    4. 常见分析思路

    展开全文
  • 再看语音交互设计

    千次阅读 2019-08-20 22:02:00
    声音一直是人与人沟通的核心,而今也成为了人机交互的核心——智能语音交互。早在2016年,google声称其搜素请求中有20%是通过语音完成的。但是,语音交互设计并不是新兴的技术,在20多年前老码农刚刚参加工作的时候...

    行动是最好的思维方式。

    赋能是人工智能对人类最重要的事情,而智能语音(例如DuerOS)正在为人机交互的方式赋能。声音一直是人与人沟通的核心,而今也成为了人机交互的核心——智能语音交互。早在2016年,google声称其搜素请求中有20%是通过语音完成的。但是,语音交互设计并不是新兴的技术,在20多年前老码农刚刚参加工作的时候就可能已经存在多年了。

    从IVR 系统看起

    交互式语音问答(interactive vocie response,IVR)系统的出现,代表了语音交互设计的第一个重要时期。它可以通过电话线路来理解人们的话,并执行相应的任务。早期的IVR系统中,需要为对话中的每个状态指定完整的语法规则。

    在设计IVR系统时,会确保每个状态都包含一组通用组件:重复、主菜单、帮助、操作和再见。除了允许用户的请求帮助,一个全局的“退出“机制也很重要。如果没有足够的上下文信息来帮助判断,系统就需要让用户来进行确认。如果系统存在一定的局限性,那么这时候就需要让用户来缩小范围。

    "提示"是指IVR系统对用户说的话,可以是一个或一些完整的句子,也可以是短语,比如数字、日期或产品。提示列表一般有以下几种用途:

    • 从配音者提供需要录制的文案列表

    • 从用户哪里得到确认

    • 为TTS引擎提供输入

    在IVR系统设计的时候,我们已经了解到了将已经收集到的信息传递给用户、通过恰当的提示以获得特定回应、通过日志信息分析和改进系统,以及设计人物模型。这些方法对于如今的智能语音交互同样有着借鉴的意义。

    从人们的交谈看语音人机界面(VUI)

    当人们愉快地交谈时,交谈中通常包含一些关键要素:情境感知(关注你和周围的环境)、关于之前交流的记忆,以及相关问题的交流。人们对计算机和其他技术的反馈所使用的社会规则和期望,等同于与人类交往时所使用的社会规则和期望。

    VUI 思考的是在系统和终端用户间,从开始到结束的整个对话过程,思考正在解决的问题以及用户需要什么来达成他们的目的。VUI需要进行用户研究来了解用户(对方)是谁,进而通过设计、产品原型和产品定义来描述系统和用户之间的交互行为。

    VUI 通常用于单轮任务。不用强迫用户展开新一轮对话,而是去尝试了解用户的意图并允许用户继续交互。一般来说,让用户来决定对话要持续多久。如果你不能理解答案,就不要提问。如何你设置了可以完成某项任务的预期,请务必考虑与之相关(对称)的任务。

    VUI有着独特的优点:

    • 速度

    • 释放双手

    • 直觉性,每个人都知道如何说话

    • 同理心,语音中包含了语气、音量、语调和语速,这些特征传达了大量的信息

    凡事有两面性,VUI同样有着不适用的场景,例如:

    • 公众场所

    • 某些人不适应与计算机对话

    • 一些人更喜欢文字沟通

    • 隐私性的内容

    VUI往往是线性的,无法跳过。由于功能是不可见的,难以让用户通过视觉的方式来探索功能, VUI设计的主要挑战之一就是教育用户,告诉他们能做什么。

    VUI 可能的设计输出

    对于一个VUI项目而言,例如基于DuerOS的技能,其设计的交付内容可能包括:

    • 示例对话(可能包括真实的录音,特别是使用配音演员时)

    • 流程图

    • 提示列表(如果使用了配音演员或语录的语音合成片段)

    • 界面原型(如果这是一个多模态的应用)

    示例对话是第一要素,一般可以挑选5个最常见的使用场景,然后为每一个场景写一些最优路径的示例对话。

    流程图是用于展示VUI系统所有可能发生路径的图示,详细程度取决于所设计的系统类型。

    对于有屏设备而言,例如小度在家,线框图和原型在早期设计流程中也是非常重要的。

    VUI 的原型工具和传统的产品设计工具例如Azure 有些不同,国外的工具有wit.ai,dialogflow.com等,我们可以是百度UNIT平台作为对话的原型工具,当然,DBP平台的自定义回复功能,同样可以作为一个简单的原型工具。

    语音交互设计的原则

    保持用户参与度是最高原则,VUI设计应该围绕如何让用户进入下一步来进行,如果某些信息当前还用不到,就不要问用户。

    Paul Grice 于1975就提出了4个关于交互的合作准则:

    准则名称  内涵  错误用法 
    质的准则  所说的话需是自己相信的真实信息  宣传一件你做不到的事。例如,对用户说“有什么可以帮助您的”,而实际上整个VUI系统仅仅能够提供酒店预定服务
    量的准则  所说的话需满足交际中所需的信息量,但不应超出交际所需的信息量  多余的措辞。比如“请您注意听,应为我们的选项可能已经变了”(谁会想“啊,太棒啦!谢谢你告诉我”?) 
    相关准则  所说的话需与当前对话相关  给用户一些用不到的指示。比如在用户还没有下单的时候就开始解释退换政策 
    方式准则  说话需清晰,明了  使用用户难以理解的专业术语 

    对于无屏设备而言,DBP平台也给出了一些设计原则,例如:

    1. 保持简短,语音是短暂的、瞬变的、线性的。

    2. 保持自然

    3. 提供反馈

    4. 为解决歧义而设计

    5. 支持修正

    6. 注意时间的重要性

    7. 注意列表的困难性

    8. 注意文本转语音的局限性

    VUI设计中的确认策略

    在VUI设计中,最重要的是对用户问话的意图确认,也就是说,系统要向用户确认是否真正理解的是用户的意图。在决定VUI的确认策略时,要利用好能利用的一切感知通道,还要考虑:

    • 错误的后果是什么?(会预定错误的航班么?钱会被转移到错误的账户么?旅行者会听到错误城市的天气预报么?等等)

    • 系统将以什么形式进行反馈?(会有音频提示么?会有非文本的视觉反馈么?)

    • 会有一个小屏幕的显示反馈么?如智能手表或者手机中的弹窗

    • 以什么形式来确认是最合适的?(明确的确认还是隐性的确认,或者混合式的确认?)

    在确认用户的意图的时候,一般有以下几种策略:

    策略一:三级置信度

    系统在一定的阈值内(例如,45%~80%),以明确的形式确认信息,拒绝较低置信度的信息,并以隐性确认来确认超过80%阈值的信息。

    策略二:隐性确认

    连同原始问题的一部分一同回复,让用户知道系统识别到了用户的问题。

    策略三:非语言式确认

    仅使用行动进行反馈,尤其对智能家居的技能。

    策略四:通用确认

    通常应用于与用户进行开放式聊天的对话系统。

    策略五:视觉确认

    人类的记忆能力是有限的,通常用户一次性不能记住超过大约7个听觉项目。语音交互界面稍纵即逝的特征,明显为用户提出了很高的认知要求,所以使用视觉确认在很多情况下利大于弊。

    在隐性确认的情况下,可能需要允许用户取消或者后退一步。

    VUI中的语境

    语境意味着系统需要知道对话相关的信息是什么,并且知道之前发生过的对话内容。离开了语境,就不可能理解话语背后的意义,对于语音交互设计而言,最重要的一点就是能利用已知的对话,可以针对以下情况结合人工智能和情感分析进行反馈:

    • 用户的行为

    • 用户的无行为(迟钝)

    • 用户过去的行为

    • 用户的一系列行为

    • 用户所处的实际时间和空间

    • 不同使用者所处情境与行为的比较

    运用情感分析可以使VUI更智能,更具有同理心。在一段文本中对表达的观点进行定义和归类,可以用于确定用户对某一特定主题、产品以及其他内容的态度是肯定的、否定的还是中性的。情感分析的关键原则:宁求稳健,不愿冒险。

    关于多轮对话

    多轮对话,是VUI设计中的一个难点,因为用户的语音输入往往是不可控的。最简单和最自然的话术转换技巧就是“问一个问题”,当然,不要问那些你都无法理解对应答案的反问句。

    对话式中的某些关键词是让用户了解交谈进展以及进展情况的重要方式,包括以下三个方面:

    • 时间线(首先,完成一半了,最后等)

    • 接收回执(谢谢,知道了,好的,以及 很抱歉等)

    • 积极反馈(不错,干得好,很高兴听到这个消息等)

    在多轮对话中允许用户打断系统非常重要,但需要注意:

    • 最好不要使用系统打断功能

    • VUI说完后,需要进入“倾听”模式

    • 轮到用户说话时,最好有视觉指示器

    • 一个明显的提示,提示用户轮到他说话了(问一个问题或指令,如“能详细说一说么”)

    对话管理就是系统对既往会话中已产生的信息,以及在后续对话中所需要的信息进行管理的行为,在DuerOS中的对话管理由Dialog 和Session表示。只要问题与问题之间看起来是相关的,并且用户觉得问题能一步一步得到解决,用户可以容忍很多问题。

    关于可视化反馈

    交互方式正在从单纯的视觉、硬件交互转化为多感官综合的交互,这种交互模式的本质是“关系”。VUI无疑是最重要也是最自然的交互通道之一,但不要为了使用语音交互而使用语音交互。

    在某些对话系统中,显示用户所说的内容反而会分散用户的注意力,有时甚至留下负面印象。

    在某些情况下,让用户看到自己在说话可以提升参与感,可以考虑让用户控制是否开启这个功能。在DuerOS的有屏设备中设计多模态技能时,一般的VUI超时设置就不再适用,但还是需要记下app中用户长时间未应答的位置,因为在那里很可能有一个潜藏的问题,会造成用户困惑或让用户不愿意进行回复。

    VUI可以不使用虚拟形象,而使用抽象的可视化图像进行反馈。

    多通道、全链路、多角色,以及去中心化成为了设计的主旋律。允许用户同时使用语音和屏幕进行交互,是一种多模态界面(multimodal interface)。可视化组件可以让用户更从容地进行交互,视觉和语音的协同设计非常重要。

    关于容错处理

    任何时候都不要责怪用户,将错误归咎于系统是设计原则。下面在VUI可能出错的几种情况:

    • 未检测到语音

    • 检测到语音,但没有识别

    • 语音被正确识别,但系统无法处理

    • 部分语音识别错误

    人有许多方法来表明他们还不理解对方所说的话,最常见的(有效的)方式之一就是什么都不说。对于ASR工具识别错误的问题你并做不了什么,但可以通过N-Best列表和真实用户响应的数据分析来构建这类问题的解决方案。N-Best 列表 是一系列用户可能说的内容,并根据(通常是前5个或前10种可能)或按置信度排序。

    如果用户会定期使用你的系统,那么在设计中就需要包含一个不同的策略。VUI系统的目标不是简单地“训练”用户,而是应当适应用户的行为。当用户给出的答复对下一段对话内容并不重要时,可以设置一个通用的答案,也可以让用户知道,其他人也讲听取他们的答案。当发生歧义时,设立一个公用的列表,并通过进一步的询问来确认用户的真实意图。

    对于儿童类语音应用,整个交互流程不需要系统100%完美理解用户说的话就可以继续执行下去,最好能够提供图形化的选择。

    虽然处理否定词需要做些额外的工作,但一旦忽略它们就可能要付出高昂的代价。

    再看虚拟角色

    当人们知道他们是在和一个“机器人”说话时,会更加宽容。VUI系统的目标可能不是让人们误以为它是一个人,而是以高效、易用的形式,解决用户的问题。但是,没有人格的语音用户界面是不存在的。用户会通过应用的语音以及语言选择,推断出的人格或角色的标准化心理形象。

    因此,在考虑一个虚拟角色的时候,思考其背后的人格更加重要。在人格设计时,可能需要考虑:

    • 会让用户问虚拟角色自身相关的问题么?(例如:你最喜欢什么颜色?)

    • 如何处理粗鲁和粗俗的行为?决定如何对待辱骂性语言,对任何一支正在处理此问题的团队而言都是非常重要的。

    • 是否介意打破用户把VUI看作人类?

    一般的, 用文本列出药物时很好的选择,动画图解用于设备的使用说明非常有效,虚拟角色则有利于建立亲密关系。建立用户对虚拟角色信任感的方法是,适时遵循人类对话的惯例,保持用户意识错觉的建议:

    • 使用传达亲密感的对话

    • 确保虚拟角色在与不同用户交互式行为恰当

    • 确保对话看起来永不重复

    • 注意同时在线的用户数量

    • 注意用户的性别

    • 确保对话的表现是天衣无缝的

    • 当用户输入不能被识别时,避免虚拟角色的出现

    讲故事和参与式活动是使用虚拟形象的绝佳场景,使用真实的面孔是一种极好的吸引用户参与的方式,但成本也非常高。

    对一个成功的语音交互来说,虚拟形象并不是一个必要条件。但是,如果应用需要处理更敏感的话题(比如情绪或健康)时,务必识别出这些场景并妥善处理。人物模型的一致性使人们能在与它们沟通时得以预测接下来会发生什么,理想情况下,与其提高不同的声音或不同的虚拟形象,不如提高不同的人物模型,并且这些人物模型包含了不同的视觉和音频组件。

    凡事有两面性,人物模型的个性越鲜明,用户反应也会越极端。

    VUI的调研与评估

    VUI是持续演进和迭代的,可用性专家Jakob Nielson 推荐选择5名用户进行测试,他的研究发现,5人以上的测试并没有额外的益处,随着测试人数的增加,ROI会一落千丈。

    调查问卷的问题一般包含7个不同的维度:准确性,概念,建议提供(内容),易用性,会话的真实性,用户的好感度和视频流。受试者倾向于给出正面的回答,特别是在面对面的访谈中,大多数人会表现的更加友善,有时会对提供消极的反馈犹豫不决,也可能会夸大事物的积极面。受试者自己通常不会意识到这一点,但一个优秀的访谈者可以处理这些问题。在访谈过程中,用户应该可以从举行测试的人那里得到大量的线索。

    VUI测试有5个关键的衡量指标:准确性与响应速度,认知程度,清晰/混乱,友好度和声音。效果评估的指标可能包括:

    1. 任务完成率

    2. 流失率

    3. VUI的使用时长

    4. 语音打断

    5. 观察交互模式的占比:语音与GUI

    6. 高频次超时无应答和无内容匹配

    7. 延迟

    8. 完整的呼叫记录

    VUI的关键测试之一在交易式语音应答系统(IVR)中被称作“对话遍历测试”(Dialog Traversal Testing, DTT), 坚持完成,用户会感激你的细致和周全。大量的无语音超时式是提示语混乱的标志,当重现多模态App的对话是,展示屏幕交互也是非常必要的。

    其中性能在VUI项目的用户体验中占有重要的地位,一般地,延迟产生的原因有糟糕的连接性能 、系统处理进程和数据库访问等。关于智能语音系统的性能优化,可以参考智能音箱场景下的性能优化

    总之,语音交互设计的结果使得交互是省时、高效的,能够使用上下文语境,优先考虑的是个性化,而不是所谓的“个性”。

    参考资料

    • Cathy Peral(2018),Designing Voice User Interfaces:Principles of Conversational Experiences

    • Neilson,J(2012),“How Many Test Users in a Usability Study?”,https://www.nngroup.com

    • https://dueros.baidu.com/dbp

    • https://developer.amazon.com

    关联阅读

    展开全文
  • 序列图交互建模中的常见错误及其纠正方法。   常见错误 纠正错误 举例 不将序列图中的对象映射到类图中的类 确保序列图中的每个对象在类图中都有相应的类 - 设计...
  • 交互设计原则

    千次阅读 2014-06-10 15:49:43
    交互设计原则:常见附加工作陷阱 不要强迫用户到另外一个窗口中完成影响本窗口的功能; 不要强迫用户记住他将事物放在层次文件系统中的哪个位置; 不要强迫用户调整窗口大小,当窗口在屏幕上弹出时,程序应该为其...
  • 《 人机交互技术》第三章 交互设备

    千次阅读 2018-06-18 13:05:23
    第三章交互设备(输入、... 文本输入是人与计算机交互的一个重要的组成部分,键盘是最常见和最主要的文本输入方式。  (1)键盘:文本输入最重要的手段  QWERT键盘、DUQRAK键盘、人体工程学键盘、多功能集成...
  • 交互设计

    千次阅读 2014-12-13 20:19:54
    交互设计编辑 本词条缺少信息栏,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 交互设计,又称互动设计,(英文Interaction Design, 缩写 IxD 或者 IaD),是定义、设计人造系统的行为的设计...
  • App主界面交互框架(其中包括标签式、跳板式、列表式、旋转木马、抽屉式、点聚式、陈列馆式、瀑布流)
  • 从零开始学习WEB前端之数据交互(Ajax)

    万次阅读 多人点赞 2017-04-14 17:32:23
    数据交互 ajax
  • 秒验(一键登录注册)交互过程有两种形式,一种是通过用户授权获取本机号码与网关进行比对认证,另一种是用户输入手机号码与网关进行验证是否为本机号码。 1、用户授权一键登录注册交互过程。 2、用户输入...
  • 通俗易懂客户端与服务器端交互原理(HTTP数据请求与HTTP响应,包括Servlet部分) 作者:佚名 文章来源:本站原创 点击数: 46 更新时间
  • 语音交互技术概述

    千次阅读 2016-03-10 14:43:12
    但开发的平台不同, 一个是windows下的,另一个是android平台的,于是也就选用了不同的语音识别平台,前者选的是微软的Speech API开发的,后者则选用 的是CMU的pocketsphinx,本文主要将一些常见的语音交互平台进行...
  • 隐藏在背后的交互设计

    千次阅读 2014-05-05 16:13:30
    外行人对交互设计的第一印象是什么?画线框图的?做草稿的? 的确,大家所看到交互设计师的日常工作成果都是一些线框图,从表面上理解的确是这样。 其实,交互设计师做的远远不止这些。往深一步想,信息架构、...
  • 人机交互界面设计

    万次阅读 2019-09-10 18:16:07
    《人机交互界面设计》期末考试 一、题型: (一)简答题 (二)论述题 (三)设计题 二、考点 : 1.什么是人机交互技术? 人机交互技术(Human-Computer Interaction Techniques)是指通过计算机输入、输出...
  • 人机交互基础教程

    千次阅读 多人点赞 2020-09-15 20:12:44
    1. 什么是人机交互:正式回答自己的体系框架 信息技术的一个重要组成部分(都belong to“认知世界,改造世界”的科学) 人机交互:Human-Computer Interaction HCI:关于设计、评价和实现供人们使用的交互式...
  • shell中自动交互的方法

    万次阅读 2018-05-30 17:41:55
    第一种:输入重定向Here Document重定向操作符command &lt;&lt; delimiter是一种非常有用的...最常见的delimiter分界符是EOF,当然完全可以自定为其他字符。Here Document 是 Shell 中的一种特殊的重定向...
  • 人机交互

    千次阅读 2016-06-12 00:18:39
    l FAB(the Floating ActionButton)是「Material Design」的一个很重要且明显的特征,但是在真正的设计中,当由动效或形式掌控过多的时候,可能会造成难以预料的低效率。 1、 它打破了沉浸式体验。在一个图片...
  • web交互设计模型

    千次阅读 2011-05-16 10:51:00
    《信息架构中的常见模型》是整个“web交互设计方法”中的一部分: <br />本期的内容目的是分享和总结信息架构中一部分基本的交互模型。信息架构需要考虑内容和功能的建构,首先需要考虑怎样组织内容和功能...
  • 人机交互知识点总结

    千次阅读 2019-06-05 11:32:00
    人机交互是一门综合性的学科,他与认知心理学、人机工程学、多媒体技术、虚拟现实技术等密切相关,其中,认知心理学和人机工程学是人机交互的理论基础,多媒体技术和虚拟现实技术与人机交互相互交叉、相互渗透。...
  • (2008.07.22 更新了Axure RP pro5 的交互部分,最下面) yixieshi 一直在用visio做交互原型和画pageflow,朋友推荐用Axure RP 4,试用了一下果然不错,特别在网上找到教程转帖给需要朋友。(作者:Hawking原创)...
  • 交互是决定用户印象的关键之一,今天这篇好文列举了使用微交互的注意点,以及五个最常见的使用场景,全是干货,来收! 好的产品往往做好了两点:功能和细节设计。 功能吸引用户使用你的产品,细节设计将你的用户...
  • 博主把实验效果做成了视频,可以先看一下: youtube(清晰):https://youtu.be/S5wLx-zMrIE ... 动态人群交互模拟基于一般适应综合征理论General Adaptation Syndrome Theory 先了解一下什么是 一般适应综

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 122,767
精华内容 49,106
关键字:

常见的交互形式包括