发明内容
本发明要解决的技术问题是提供一种电话连续语音识别系统性能的评测方法,可以针对电话连续语音识别系统的应用特点,客观、准确地评价电话连续语音识别系统的性能。本发明还要提供一种实现该方法的系统。
为了解决上述技术问题,本发明提供了一种电话连续语音识别系统性能的评测方法,包括以下步骤:
(a)对电话查询的若干领域,为每一领域制定一套语法,每个领域中,根据语法定义若干可以单独表达一定语义的槽;
(b)在各个领域按其语法展开,从生成的句子中选择出作为评测语料的句子,并录制选定的文本语料的测试语音;
(c)将测试语音输入要评测的电话连续语音识别系统,运行被测系统,并将每个句子的语音识别结果解析为所包含的槽后输出;
(d)将系统输出的识别结果与标准答案对照,计算槽识别正确率,得到系统性能的评判指标。
进一步地,上述评测方法还可具有以下特点:所述步骤(a)中,采用的语法基于有限状态网。
进一步地,上述评测方法还可具有以下特点:所述步骤(a)中,是将电话查询的领域分为公交、餐饮、体育、旅游、天气中的一个或任意组合。
进一步地,上述评测方法还可具有以下特点:所述步骤(a)中,每一领域定义的槽的个数为6~13个。
进一步地,上述评测方法还可具有以下特点:所述步骤(b)从生成的大量句子中选择作为语料的句子时,是选择符合正常人说话习惯的句子,并使所选句子尽可能多地覆盖各种韵律学特征,在数量上尽可能地平均覆盖各个槽。
进一步地,上述评测方法还可具有以下特点:所述步骤(d)中,将正确识别的槽的个数在槽的总数中所占的比率作为槽的识别正确率,只有作为槽的识别结果的字符串和答案完全一致才认为槽识别正确。
进一步地,上述评测方法还可具有以下特点:所述定义的槽可以相互嵌套,相互嵌套的槽应分别进行正确识别与否的判断和数量的统计。
进一步地,上述评测方法还可具有以下特点:所述步骤(d)中,还根据正确识别的句子个数在句子总数中所占的比率计算句子的识别正确率,作为系统的另一个评测指标,其中句子识别正确是指句子中的所有槽都识别正确。
进一步地,上述评测方法还可具有以下特点:在计算槽的个数时,空槽不计入总数,如果识别结果中将本应为空的槽填充,则在评判槽识别正确率时将被忽略。
进一步地,上述评测方法还可具有以下特点:所述步骤(a)定义槽时,每一领域的槽只需生成或组合生成该领域常用查询句子的有效内容。
本发明提供的电话连续语音识别系统性能的评测系统包括录音模块和被测的电话连续语音识别系统,其特点是,还包括语法库、语法展开模块、语料筛选模块、槽解析模块以及自动评测模块,其中:
所述语法库,包括为电话查询若干领域分别制定的一套语法,并在每个领域中根据语法定义了若干可以单独表达一定语义的槽;
所述语法展开模块,用于将语法库中的词按其语法自动展开,得到大量的句子;
所述语料筛选模块,用于将展开后得到的句子按设定策略筛选出用作测试语料的句子;
所述槽解析模块,用于将句子的识别结果按槽进行解析,得到该句子中所包含的槽的识别结果;
所述自动评测模块,用于比较槽的识别结果与标准答案,计算出槽识别正确率。
由上可知,本发明将评测限定在电话连续语音识别系统常用的几个领域,通过使用给定语法限定了评测用的句子,通过引入槽的概念表示语义信息,并用槽识别正确率作为主要的评判指标,比目前常用的听写机式的评测方法更符合电话连续语音识别系统的特点,能够更准确地评价电话连续语音识别系统性能。
具体实施方式
如图1所示,本发明首先确定电话连续语音识别系统所针对的领域和所用语法,规定基于语义槽的评判指标(任务规定阶段),然后生成并选择文本语料,在真实环境录制语音文件(语料准备阶段),运行被测连续语音识别系统产生识别结果(现场测试阶段),最后根据识别结果计算基于语义的评价指标(结果评判阶段)。
下面结合一个应用实例来说明本实施例的评测方法,如图2所示,该方法包括以下步骤:
步骤110,定义一个语法库,为电话查询常用的每一个领域制定一套语法,并在每个领域中根据语法定义若干可以单独表达一定语义的槽(Slot),每一领域的槽只需生成或组合生成该领域常用查询句子的有效内容;
任何评测都要首先规定被测系统所要完成的任务,当前的电话连续语音识别评测一般将任务规定为由语音识别出其对应的文本。但这并不符合电话连续语音识别系统针对特定领域、注重语义的特点。
因此,本实施例提出了一种基于语法和语义的任务,针对所要评测的系统的应用环境和特点选定针对的领域,将测试语料限于电话查询较常用的领域,如公交、餐饮、体育、旅游、天气等领域,为每一领域定义一套语法组成语法库,所用的语法基于FSN(有限状态网),每个领域用其语法定义若干(6-13)槽,每个槽都可以单独表达一定的语义。槽其实就是语法中的非终结符,或称Token,每个Token对应一条或多条规则,每条规则都能推导出若干字符串,这些字符串就都称作是该槽所产生的字符串。语法中有大量的Token,我们只选取其中若干个有完整语义的成分作为槽。
例如,语法库可以根据北京市奥运相关领域的真实问询,经人工抽象、形式化编写而成,其中涉及的地名、公交站名、公交车次名、旅游景点名、饭店名等均为北京市真实存在的相应名称,其中涉及的体育赛事均为奥运会中的真实赛事。
其中,公交领域可定义以下六个槽:
[departloc],表示出发地点;
[arriveloc],表示目的地;
[Route],表示路线查询;
[bus_line],表示公交车次;
[query_bus],表示公交车查询;
[Location],表示地点。
槽之间可以嵌套,如上例中,[departloc]和[arriveloc]槽中都可以包含[Location]槽,[query_bus]槽中包含[bus_line]槽,[Route]槽中包含[departloc]和[arriveloc]槽。
由于实践中,查询者在开始和结束时经常会说一些与查询内容无关的话,例如“你好,我问一下”,“您知道吗”,“能不能查”,“谢谢”等。为了更符合真实应用的要求,本实施例规定句子的前后可以有符合语境的无关内容,句子的结构为:
[无关内容]语法生成的部分[无关内容]
方括号中的内容可有可无。而中间的语法生成部分是查询时的有效内容,即真正涉及查询内容的有效部分,如公交领域的“从天安门到中关村怎么乘车?”。这样限制了评测语料的范围,更符合电话连续语音识别系统的真实应用要求。
通过适当地定义各领域的槽,可以使得各领域常见的查询语句(例如询问乘车路线,餐馆地址,体育赛事时间,旅游景点简介,天气情况等)的有效部分可分解为由该领域所定义的一个或多个槽。反之,在为每个槽定义了若干的词后,就可以将其按语法中规定的约束条件展开得到大量的句子。
步骤120,将被测系统的输出定义为识别出的每个句子所含的槽,用槽识别正确率和句子识别正确率作为评价被测系统的性能的指标。具体计算方法将在后面的步骤中再介绍。
步骤130,用语法展开模块将各个领域的词按其语法展开,采用人工和语料筛选模块和人工从生成的大量句子中选择出作为评测语料的句子;
测试语料的准备主要分为两步:文本语料的准备和测试语音的录制。在文本语料的准备阶段,使用语法展开模块将各领域的语法展开(主要是将各个包括槽在内的Token展开),获得大量的字符串,即句子,然后在这些句子中选择一部分作为测试数据。选择的原则如下:
A,所选的句子应是符合正常人说话习惯的真实问讯。出于语法复杂度的考虑,由语法产生的句子中可能存在不符合真实应用的句子,如“中国跳水队和日本足球队的比赛”等,为了贴近应用,这些句子都不应使用。这一工作由人工完成。
B,所选的句子应尽可能多的覆盖汉语的一些韵律学特征,如音节,二音子(Biphone),三音子(Triphone)和音联关系等。这是为了尽可能全面地考查被测系统对语音的处理性能。这一工作由语料筛选模块完成。
C,每个领域所选的句子应尽可能平均地覆盖各个槽。这一工作由语料筛选模块完成。
在应用实例中,最终选出的句子数量为每个领域40句,共200句。
步骤140,在真实环境由录音模块录制选定的文本语料的测试语音;
在测试语音的录制阶段,要组织人员按照文本语料录制语音数据。和多数评测方法一样,录音采用固定电话和插入PC机的Dialogic语音采集卡。录音人男、女各半,录音环境为办公室等真实的噪音环境。在本应用实例中,每句录成一个wav文件,采用16KHz采样,16Bit编码。
步骤150,将测试语音输入要评测的电话连续语音识别系统,运行被测系统,并使用槽解析模块对每个句子的语音识别结果按槽进行解析,将得到的槽的识别结果作为系统输出的识别结果;
步骤160,用自动评判模块将系统输出的识别结果与标准答案对照,计算槽识别正确率和句子识别正确率,得到系统性能的评判指标。
计算公式如下:
槽识别正确率=正确识别的槽的个数/槽的总数×100%;
句子识别正确率=正确识别的句子的个数/句子总数×100%。
其中,正确识别的槽的个数指所有句子中被正确识别的槽的个数的和,槽的总数指所有句子中槽的个数的和。本发明也可以只计算槽识别的正确率指标。
具体地说,每个槽的识别结果是一个字符串,只有这个字符串完全和答案一致时才认为槽识别正确。而句子识别正确并非指识别出的该句对应的字符串和标准答案的字符串完全一致,而是指句子中的所有槽都识别正确,这是与现有评测方法不同的。
槽与槽之间可能有嵌套,对于这种情况,所有存在的槽的识别结果都必须在输出文件中给出。在统计槽的个数时,相互嵌套的槽应累计。在统计槽识别正确率时,相互嵌套的每个槽正确与否都将被统计在内。
在计算槽的个数时,空槽(为NULL的槽)并不计入总数。如果在识别结果中将本应为空的槽填充,则在评判槽识别正确率时将被忽略,但在计算句子识别正确率时认为该句识别错误。
例如,输入的测试语音为“查一下特五路上到的地方”时,识别结果为每个句子的槽解析结果,如下:
PHONE_C_B_001 Traffic查一下特五路上到的地方。
[departloc]NULL
[arriveloc]NULL
[Route] NULL
[bus_line] 特五
[query_bus]特五路上到的地方
[Location] NULL
上述结果包括两个槽(有嵌套关系),通过比较每个槽的输出文本串和标准答案,就可以判断该槽是否识别正确。
又如,输入的测试语音为“从天安门到中关村怎么乘车?”时,槽解析后的识别结果如下:
PHONE_C_B_002 Traffic从天安门到中关村怎么乘车。
[departloc]从天安门
[arriveloc]到中关村
[Route] 从天安门到中关村
[bus_line] NULL
[query_bus]NULL
[Location]天安门
[Location]中关村
上述结果包括5个槽(有嵌套关系),通过比较每个槽的输出文本串和标准答案,就可以判断该槽是否识别正确。
如图3所示,本实施例的评测系统包括语法库、语法展开模块、语料筛选模块、录音模块、被测的电话连续语音识别系统、槽解析模块以及自动评测模块。其中:
语法库,包括对电话查询常用的每一个领域制定的一套语法,并在每个领域中根据语法定义若干可以单独表达一定语义的槽;
语法展开模块,用于将语法库中的词按其语法自动展开,得到大量的句子。
语料筛选模块,用于将展开后得到的句子按设定策略筛选出用作测试语料的句子,所用策略可以是使覆盖的汉语韵律学特征多,能平均地覆盖各个槽等。
录音模块,用于完成基于测试语料的测试语音的录制。
被测的电话连续语音识别系统,用于接收输入的测试语音信号得到句子的识别结果。
槽解析模块,用于将句子的识别结果按槽进行解析,得到该句子中所包含的槽的识别结果。
自动评测模块,用于比较槽的识别结果与标准答案,计算槽识别正确率和句子识别正确率。
上述的语法展开模块、语料筛选模块、录音模块、槽解析模块和自动评测模块均可在计算机上用软件实现。
综上所述,本发明的方法将评测限定在电话连续语音识别系统常用的几个领域,通过使用给定语法限定了评测用的句子,通过引入槽的概念表示语义信息,并用槽识别正确率作为主要的评判指标,从而比目前常用的听写机式的评测方法更符合电话连续语音识别系统的特点,能够更准确地评价系统性能。