首页>>厂商>>语音识别与合成>>天朗语音

天朗分布式语音识别系统产品白皮书

2003/09/27

一.前言

  语音识别是指从语音到文本的转换,即让计算机能够把人发出的有意义的话音变成书面语言。通俗地说就是让机器能够听懂人说的话。所谓听懂,有两层意思,一是指把用户所说的话逐词逐句转换成文本;二是指正确理解语音中所包含的要求,而不要求所有词都转换正确。

  语音识别技术(ASR)是以语音为研究对象,涉及到生理学、心理学、语言学、计算机科学以及信号处理等诸多领域,甚至还涉及到人的体态语言(如人在说话时的表情、手势等行为动作可帮助对方理解),目前常见的识别技术一般采用隐马尔可夫模型HMM(Hidden Markov Model)来建模。它的基本原理是系统首先对大量的真实世界中的人的语音进行分析,并建立模型。在识别时,系统同样先对输入的语音进行分析,提取特征,然后通过一定的算法并使用已建立的模型,从而识别出用户所说的话。

  随着语音识别技术的逐渐成熟,语音识别技术开始得到广泛的应用,涉及日常生活的各个方面如电信、金融、新闻、公共事业等各个行业,通过采用语音识别技术,可以极大的简化这些领域的业务流程以及操作;提高系统的应用效率。

二、语音识别的原理

2.1 语音识别的基本原理
  图1给出了一个语音识别系统的原理图。


  从图1中看出,输入的语音首先要通过端点检测(也称静音检测模块),检测得到输入语音的有效语音数据部分(也就是去除了静音数据、噪声数据等);然后进入特征提取模块,这里需要提取语音信号最本质的信息,一般采用MFCC特征,它是采用复杂的数字信号处理技术来完成的;语音信号的特征信息被送入识别引擎,在声学模型和语言模型的指导下进行识别,最终得到识别结果,这里常常需要采用非常复杂的搜索算法,简单地说,它需要根据语言模型考虑各种词的组合(句子)及其发生概率,对于每一种可能的句子,都给出一个得分,选择得分最大者作为识别结果。但是由于可能的搜索空间非常大,所以需要利用剪枝技术,有效地去除大量冗余空间,加快搜索速度,满足实际系统的要求。

2. 2 基于语法的识别引擎
  在语音识别中,语言模型是用来指导引擎进行语音识别的,它限定了一个识别引擎所能表达的语句类型。在我们常用的图搜索引擎中,语言模型是通过语法来表示的,语法是由一系列表示某个领域的语言表达方式的规则组成的(语法的具体书写规则见引擎使用说明书)。这些规则会被被转换成词图的形式然后用来指导语音的识别。所谓的词图是指由词作为节点的一个图,从该图的开始节点到末尾节点的任一条路径都是一个有效合法的句子。图2给出了一个简单的词图。


  对于很多领域的语音识别来说,如自动总机、火车定票系统、股票查询系统等,他们具有一个共同的特点:所用的句型典型,且句型数有限,可以用规则来描述。对于这样的系统,采用语法的方式来指导其语音识别,一方面可以得到很高的识别率,另一方面,又能达到较快的识别速度,满足实际系统的需要。因此,基于语法方式的语音识别技术得到广泛应用。本文中我们采用的核心识别引擎也是采用语法的方式。

三、天朗分布式语音识别系统简介

  天朗分布式语音识别引擎是天朗公司针对电信级、大企业级应用特点开发出来的一个基于多机的分布式语音识别引擎,它通过局域网连接多个识别服务器,来同时完成大量的语音识别任务,极大的拓展了单机版语音识别引擎在识别任务上的限制,可以同时支持几百到几千个语音识别任务并发执行,从而满足电信级这样的具有大识别任务量的应用。系统的主要功能有:

·支持非特定人、大词汇量、连续语音识别,能够达到高的识别准确率;
·支持多语种识别;
·能够提供识别结果的置信度信息;
·多台语音识别服务器并行工作,通过局域网连接和传送数据;
·有一个资源管理服务器(或多个,作备份),用来管理所有的服务器,并负责负载平衡;
·有一个License服务器,用来进行License管理;
·任何一个服务器可以动态地启动和停止,而不影响系统的运行;
·系统可以同时启动任意多个服务器(或线程数),但同时最多只能用License所规定的线数;
·系统可以同时启动任意多个服务器以做备份,防止因为某些服务器当机而对系统造成影响;
·对应用层的一致性,即对应用层开发来说,和开发单机版的程序一样(或略有不同),用户不需考虑后边的识别引擎是单机和多机版。
·多平台、多操作系统可混合组成系统,如客户端可能是Linux版,但服务端是Windows版;
四.天朗分布式语音识别系统架构原理和使用方法

4.1系统整体架构和模块功能介绍
  下图展示天朗分布式语音识别系统的架构:
  整个系统由识别服务器、资源管理器、语法服务器(可选)、License管理器、客户端API以及连接这些服务器的局域网组成,除了语法服务器是可选之外,其他部分都是必须的,但是识别服务器、资源管理器已经客户端的个数是可变的,具体的多少和系统的大小和任务量有关。语法服务器在许多情况下可能是不需要的,因此,我们的系统把其设计成可选的,如果需要,其可以动态加入系统。

  为了方便客户使用,我们提供了一套客户端API给用户,用户在使用本系统时,可以在其应用程序中调用我们的API来调用我们的识别系统。


4.2 天朗分布式语音识别系统工作原理
  为了更好的应用天朗分布式语音识别系统来开发应用系统,帮助开发人员理解天朗分布式语音识别系统的的工作原理,下面以一次语音识别的过程来解释天朗分布式语音识别系统的工作原理。图4给出了系统一次语音识别的工作原理。

  应用程序通过DSR的API函数来调用语音识别功能,一般来说过程如下:

  1、 当有电话到达时,应用程序负责接起电话,然后播放一个欢迎的提示音,提示用户说出要做的动作(如查询人名、股票信息等),并开始等待用户说话;
  2、 应用程序启动录音程序开始录音,同时应用程序会通过DSR API向天朗分布式语音识别系统(下称"识别系统")请求一个识别资源(即一个识别会话session);
  3、 识别系统的资源管理器会根据系统的负载情况,分配一个最空闲的识别服务器的一个空闲会话给该次任务。
  4、 应用程序获得该识别会话控制权后,根据目前系统的任务,通过API通知对应的识别引擎加载相应语法,语法的来源有三种,具体的请参看下面的说明。
  5、 应用程序开始通过API函数把录取的语音发送给该会话,该会话会根据系统的模型和加载的语法,对送入的语音进行识别;
  6、 如果有识别结果,系统会通过回调函数来通知应用程序,应用程序这时可以通过DSR API来得到识别结果。
  7、 应用程序卸载加载的语法;
  8、 应用程序断开该会话连接;
  9、 应用程序释放会话。
  10、 这时应用程序应该根据识别结果做相应的动作,如继续播放提示音,提示用户继续提供信息或做其他的动作。如goto 2。


4.3 识别结果
  语音识别完成后,天朗DSR识别引擎会通过回调函数通知应用程序有识别结果,应用程序可以通过API函数取得识别结果,并根据结果相应作出响应。天朗分布式识别引擎可以提供多个识别候选供用户选择。同时,系统还会给出每个候选句子的置信度,所有的识别候选按置信度由高到低排序。用户可以设定引擎返回的结果最大数目,系统会返回用户设定的候选的个数。

  需要注意的是:引擎返回的句子的个数可能没有用户设定的数目多,另外,设定较大数目的返回结果候选会影响系统的效率。

4.4引擎的三种调用方式
  对于基于对话方式的语音识别,应用程序对DSR的API函数调用的时间和方式不同会对整个系统的稳定性和效率产生很大影响。


  下面以电信级应用来说明不同的调用方式的差别。

  一般来说,一个基于电话语音识别的对话系统(如图5所示),一般由识别服务器、应用服务器、电话交换机、智能交换机设备、 IVR设备等设备组成,电话交换机与成千上万个电话终端通过各种交换设备相连接,电信应用软件在这些硬件的支持下提供各种服务,如:1860查询服务等。此时,电信应用开通的线数视系统的业务需求而定,一般总是大大小于终端连接的总数。系统连接数与终端连接数常常是1:1000或者1:10000的级别。"一路对话"是指物理上的一条线路,对于上述的电信应用,电信开通的每一条线路都是一路对话。

  "一次对话"是指用户的一次电话从打入到挂机之间一个交互服务过程称。比如:用户拨打1860进行话费查询,在用户拨通电话至用户挂机这个过程中用户和应用程序交互的整个过程称作一次对话。

  "一路会话"这里是指语音识别中,一次识别从分配识别资源开始到释放这个资源的整个过程。
对于语音识别的会话,可以对一路对话分配一个会话,也可以对一次对话分配,或者对一次对话的一句话识别进行分配,不同的分配方式会得到不同的效果。

  第一种:直接为每一路对话分配一个会话,用户应用程序在程序一开始就为每一路对话建立到引擎的连接,然后,该路对话就会一直保持该会话,再也不释放该会话,直到程序结束。这种方式编程简单,但是,在系统的稳定性和有效性方面都是最差的。因为每一路对话都一直使用,且一直独占该会话,一旦该会话出现问题,则该路对话就永远不能用了,除非重启程序。另外,由于每路对话都独占一个会话,因此即使该路对话没有在使用引擎,其独占的会话也不能被别的对话使用。降低了系统的效率。

  第二种:在一次对话开始时就建立到引擎的连接,然后该对话一直独占该会话,直到该次对话结束。很显然,这种方式和第一种方式比起来,在稳定性和效率方面都有很大提高。主要是这种方式不再一直独占一个会话,会话可以在多路对话之间共享,即使有一路会话出现问题,只会影响一次对话的一次工作,而不会影响本路对话以及其他路对话的以后的识别。

  尽管第二种已比较优化,但它的一个缺点就是仍然会影响一次对话的进行。

  第三种:在每一次识别开始时建立连接,识别结束后立刻释放(这种方式与第二种不同,是因为在一次对话过程中会存在多轮的识别过程)。这种方式的优点除了第二种的优点外,他还克服了它的缺点。因为,此时一个会话的失败只会影响该路对话的一句的识别,通过编程我们可以在发现一个会话失败后,再申请另一个会话,这时最多让用户重复一边刚才的话外,对这次对话没有影响。

  另外,采用三种的哪一种方式还和应用的不同有关,如果应用是类似于股票查询这样的系统,每个识别服务器都完成相同的功能,这时采用第三种方式比较合适。而对于某些应用系统如需要动态改变语法的,则最好采用第一、二种方法。如果改变的语法只在一次对话中有效,可以采用第二种,如果改变的语法一直持续有效的话,第一种可能更适合。

4.5 语法
  语法是用来指导识别引擎进行语音识别的,它是由一系列语法规则组成的一个有限图, 它用来限制系统可以识别的句型和词汇,减少系统识别的语法空间,极大的减少系统的搜索时间,增加了系统的识别率。

  在天朗分布式识别系统中,语法的使用有两种形式:

  1. 静态语法,对于目前许多基于语音识别的应用系统,大多数用到的语法都是固定的,在系统运行中,不需要对语法进行更改(如1860系统,火车订票系统等),对于这种应用,最方便的方法就是在系统启动时就把用到的语法加载进系统,用到时激活(enable)就行了。这样可以节约大量的时间,提高系统的效率。为了方便用户的使用,天朗分布式识别引擎提供了静态语法功能,用户只要通过对识别服务器的预加载语法进行配置,系统会在启动时自动把这些语法加载到系统中供系统使用。在这种情况下,整个系统可以不需要语法服务器,从而节约投资成本。要注意的是,静态语法必须是已编译过的语法格式。

  2. 动态语法,所谓的动态语法是指在运行前并不知道需要加载那些语法,或者在运行时,需要对语法进行编译或修改。动态语法常用在比较大型的复杂的系统中。对于动态语法,系统必须要有语法服务器来支持,动态语法可以是文本格式,也可以是编译后的格式,系统会根据传入的语法的格式自动进行选择是否进行编译。

  在天朗分布式识别引擎中,语法是通过一个key来唯一指定的,这个key由用户自己指定,且必须保证不同的语法的key的唯一性。不同的语法采用相同的key可能会导致语法的相互覆盖。

  系统可以同时支持静态语法和动态语法。在加载一个语法时,系统首先会通知对应的识别服务器去加载一个指定的语法,如果该语法已加载,则仅返回语法的句柄以供以后调用;否则,系统从识别服务器所在的硬盘上加载所指定的语法。如果识别服务器上也不存在对应的语法,则先判断系统中是否有语法服务器,如果系统中不存在语法服务器,返回加载失败。否则,识别服务器会向语法服务器申请该语法。如果语法服务器上无该语法或其他原因无法得到该语法,返回加载失败。否则,下载该语法服务器到本地。并加载。返回句柄。

  引擎在加载语法时,如果找不到指定的语法Key的语法,就会加载用户指定的二进制语法文件,同时将指定的语法Key作为该语法的key。最后返回语法的handle。 要注意的是,语法加载是针对会话的。

4.6 系统的稳健性和效率

  对于电信或大企业级别的的应用系统来说,稳健性和效率是系统成功的关键。天朗分布式识别系统通过多种有效技术,来提高系统的效率和稳健性。

  1. 系统通过设立资源管理器来统一管理整个系统的识别资源分配和回收,资源管理器通过一个高效的负载分析策略,根据系统的当前状态,分配负载最轻的识别服务器以提高整个系统的整体效率。

  2. 一般来说,一个系统只要一个资源管理器就可以稳定工作,但是,采用多个资源管理器互相备份可以更有效的保证系统的稳定性。天朗分布式识别系统可以同时支持多个资源管理器同时工作。和其他的类似系统不同的是,其他类似系统在工作时只有主资源管理器在工作,而备份资源管理器是不工作的。而天朗的分布式识别系统的每个资源管理器都负担部分的资源分配工作,因此,可以充分利用系统的资源,提高系统的效率。另外,每个资源管理器又是互相备份的,当一个资源管理器出现问题,其他的资源管理器会自动的接过出现问题的服务器的工作,所以对于系统的稳定性有了充分的保障。

  3. 对于识别服务器,和资源管理器一样,备份的服务器并不是闲着不工作,它们和其他识别服务器一样承担识别任务,这样可以有效的分配负载,提高系统的效率,同时减轻系统的投资。同样的,识别服务器又是互相备份的,当一个识别服务器出现故障时,该服务器会自动的从系统中被剔除,其工作会由其他的识别服务器承担。

  4. 服务器可以动态加入和退出,不论是资源管理器还是识别服务器,抑或是语法服务器,都可以动态的随时加入整个系统中,也可以动态的从系统中退出,而对整个系统的稳定运行不会产生影响。因此,用户可以根据整个系统的运行情况,随时加入新的服务器以应付增加的呼叫量,也可以在负载变轻的时候,随时关闭某些服务器。同时,这种特性也保证某个服务器出现故障时不会影响系统的稳定运行。

  5. 由于分布式语音识别系统是一套比较复杂的系统,为了进一步保证系统的稳定性,我们还开发了一套监控程序来监视系统各个服务器的运行,一旦某个服务器出现故障,监控程序可以随时重启该服务器。这样可以保证系统可靠运行。

五、天朗分布式语音识别引擎系统架构和识别技术的特点和优势

  天朗分布式语音识别引擎的分布式结构具有伸缩性强、成本效率高和配置灵活等特点,具有支持大话务量、实时性高的能力;其客户/服务结构使语音识别应用程序强大,具有极其高效的容错性和负载平衡能力,保证了应用程序的高效可靠运行。

5.1系统架构的功能特点:
·分布式结构 整个系统由多个识别服务器通过局域网组成,资源管理器在语音识别服务器间进行负载均衡,从而保证硬件的利用效率。对CPU运算强度需求很大的识别被放在单独的识别服务器上来执行,而不用占用应用程序的CPU资源。每个语音识别服务器可以支持多个客户端,资源管理器可以将呼叫平均分布到多个语音识别服务器上执行。这种结构优化了内存和CPU资源的使用,使得系统可以支持大话务量的实时性的语音识别任务,可以支持电信级、大企业级的应用需求。

·高密度接口 将对CPU运算需求密集的语音识别任务从客户端转移到识别服务器端,使得客户端可以抽出处理能力来支持高密度的接口,从而提高应用程序系统的接入量。

·容错和可靠性 整个识别引擎经过精心的设计,具有很高的容错和可靠性,使得各个服务器可以动态的加入和退出系统,而对整个系统的运行没有影响,因此,即使个别服务器失效,也不会使系统崩溃。当一个识别服务器失效时,资源管理器会自动停止向其发送请求,当服务器恢复时,又会自动开始向它发送请求。另外,系统允许配备备份服务器来保证系统的可靠运行,在平时,备份服务器和其他服务器一样,一起工作,承担相同的工作,当有服务器崩溃时,其他服务器会自动的承担崩溃服务器的工作。不仅为系统的可靠运行提供保证,而且可以充分利用备份服务器的能力。

·自动监控 系统为每个服务器都配备了一个自动监控程序来监控服务器的运行,如果监控程序发现服务器崩溃后,系统会自动重启服务器,并保存崩溃时的现场供以后分析。这不仅大大节约维护人员的时间和精力,而且自动监控方式可以提供比人更快更准确的维护服务,保证系统的稳定运行。
ü 维护方便 系统可以随时关闭一个识别服务器进行维修,也可以随时把维修好的服务器加入到系统中,而对整个系统的性能没有影响。

·可伸缩性 随着呼叫量的增加,系统可以随时动态增加服务器,而无须停止任何运行着的应用程序或关闭IVR系统,这对那些需要常年连续运行的系统特别有用。

5.2 系统架构的综合优势:
  由于语音识别的特点以及应用的特殊性,其对识别引擎的实时性能和稳健性要求相对较高,对于分布式识别引擎,还要求网络传输要稳定可靠,且数据传输时间在整个任务所耗费的时间中所占的比重要小,天朗分布式语音识别引擎经过精心设计,优化,具有实时、稳定、灵活性高等的特点。

1. 实时性
  实时性是语音识别的一个重要特点,特别是在电信级的应用中,对于用户说的话要实时识别处理,并能够及时地给与回应,才能满足用户的需要。特别是对于分布式的语音识别引擎,由于数据要通过网络传送,从而必然导致实时性的下降。因此要求分布式的识别引擎必须认真考虑网络传输的问题,确保网络传输过程所消耗的时间在整个识别任务中所占的比重非常小,才能保证整个系统的实时性的性能。天朗分布式语音识别引擎通过对识别算法和网络通讯进行优化,保证了系统的实时性。

2. 稳定性
  稳定性是语音识别在电信级中应用的另一个重要特征,一般要求系统能够长期稳定的运行,才能满足这种长时间大负荷的任务的要求。由于分布式引擎运行在局域网上,因此,必须采取有效机制,确保整个系统的长期稳定的运行。

  稳定性的另一个方面反映在强健的容错能力和快速的错误修复能力,容错能力是指当一个识别服务器宕机后,不会导致整个系统的崩溃。快速的修复能力是指系统在一个识别服务器出问题后,可以很容易的通过重起服务器,或用一个新的识别服务器替代问题服务器,而不需要系统整个重起。

  天朗分布式语音识别引擎通过精心设计,使得整个引擎在稳定性上取得重大突破,系统可以长时稳定运行。另外,系统的优异的架构设计使得系统中的任意一个服务器出现问题后,其任务会被其他同类服务器承担,而不会对整个系统造成影响。另外,为了保证万无一失,我们还开发了自动监控程序来监视各个服务器的运行,从而保证当服务器宕机后,能很快恢复,从而保证系统的稳定运行。

3. 灵活性
  灵活性是扩大引擎的应用面和减少后期支持的一个重要特征,灵活性包括系统支持多种操作系统平台的混合网络,能够支持单机运行到多服务器网络的配置。这种灵活性可以逐步分阶段来实现。天朗分布式语音识别引擎的经过精心设计的架构使得这个引擎可以支持多种操作系统平台的混合运行。

5.3识别引擎的技术特点:
·连续语音 在讲话的时候不需要刻意地逐字讲话,而是可以连续地说话。
·自然语言 用户可以用自然的方式讲话,而不是象录音对比系统那样必须按照录音时的讲话方式来讲。
·与说话人无关 天朗分布式语音识别引擎在进行语音识别时,不受说话人的限制,所以说话人在使用前不需要进行语音训练和适应准备。
·多语言 天朗分布式语音识别引擎支持多种语言的混合识别。
·准确率高 语音识别的准确性是考察一个识别引擎的一个重要参数,天朗分布式语音识别引擎是在连续三次获得863竞赛第一名的清华大学电子工程系系语音识别实验室研究的核心识别技术的基础上开发的,具有国内领先的识别准确率。
·多候选和置信度信息 能够提供多个可能的识别结果,按照其置信度大小顺序排列;
·支持动态语法 动态语法是指应用程序运行时,允许语法动态创建和修改。这在实际应用场合是非常有用的,如: 应用系统的语法在运行时不能彻底确定,或者在运行时需要动态修改。这能够较大地提高系统的灵活性。
·对噪音和口音的适应能力强 天朗分布式语音识别引擎能够适应较为恶劣的噪音环境,对于不同口音也有很强的适应能力。
·适应多种平台 天朗分布式语音识别引擎是一种基于客户服务结构的语音识别引擎,能够适应多种工业化的系统平台。
·灵活性和可扩展性 天朗分布式语音识别引擎提供标准C接口和多种灵活方便的使用方式,可以采取多种方式构建系统,以及和现有系统整合。

六、天朗分布式语音识别系统运行环境
1. 硬件环境
  Intel 奔腾3或以上的PC、服务器(包括各种CPU类型的服务器)、工作站(包括各种CPU类型的工作站);内存建议为256Mb以上DDR或RAMBUS内存,40GB以上硬盘, 网络采用100M带宽以上局域网,支持TCP/IP协议。
2. 软件环境
  WINDOWS NT/2000/XP操作系统。

天朗语音公司供稿 CTI论坛编辑



相关链接:
天朗分布式语音识别系统在语音门户中的使用 2003-10-13
天朗分布式语音识别系统改造传统IVR 2003-10-10
键盘渐成摆设,未来手机一呼通 2003-09-22
天朗语音成功开发出分布式语音识别系统 2003-09-19
天朗"一呼通",提升智能化 2003-04-28

分类信息:     技术_语音识别_解决方案