密级公开
版本10D.2

AICP ASR 优化指南

1. 概述#

本文档描述 AICP-10 平台中 ASR 能力的动态优化资源的使用方法。

ASR 能力中的动态优化资源包括:

  • 热词
  • 敏感词
  • 小语料优化模型

AICP 10 ASR 能力支持动态设置这些优化资源。设置方式有两种:

  • 客户端通过 “统一资源管理接口” 上传资源并获取资源ID,然后在调用时在配置中指定资源ID。这类资源称为 “用户资源”。
  • 通过 “管理后台” 上传资源,并配置到某一应用中,则成为此应用的默认优化资源。这类资源称为“系统资源”。

2. 优化资源介绍#

2.1 热词#

热词优化功能,是指用户可以通过接口上传热词词表(也称作个性化词汇,例如通讯录中的人名等),在识别时指定热词词表,ASR识别引擎在识别时,就会优先选取热词词表中的热词词汇。也可通过 “管理后台” 进行热词上传和应用缺省热词的配置。

目前热词分为三类:

  • 权重修正类热词,对于热词在解码网络中建立新的路径或者修正其权重
  • 文本替换类热词,检查结果文本,相同的就进行替换
  • 音素替换类热词,检查音素序列,相同的就进行替换

权重修正类热词,会在解码过程中直接使用,遇到发音和热词词表中词汇的拼音差不多的时候,就会加强热词的权重,使得对应的词语识别为热词的几率就会大大提高,这些词汇更容易被识别出来。

而文本替换类和音素替换类热词都是在获取到解码结果之后,再根据原始结果是否匹配某些规则来进行替换的,因此只要匹配上总能输出结果。如果有多个替换类热词,那么文本替换类的热词优先于音素替换类热词,出现在词表前面的热词优先于词表后面的热词,不会优先选择长度更长的热词。

2.1.1 热词词表格式#

热词词表的内容中为 UTF-8 编码,有无 BOM 头均可。整体内容不能超过100K。

内容中包括多行,每行代表一个热词,每行内容不能超过 256 字节。如果行首为 '#',表示注释,不会进行解析。

每行定义的热词按照上述分类分别有自己的格式。不同类别的热词可以放在一个词表中,引擎会自动根据格式判断是哪一类热词。

2.1.2 权重调整类热词#

格式为:

热词 [标音] 权重

热词、标音、权重部分以空格或TAB字符隔开,标音内部也有空格,因此前后需要有[]和其他部分区分开。

2.1.2.1 热词#

热词可以是中文、英文或者中英文混、甚至可以有其它符号,但不能出现空格和 TAB 字符。

2.1.2.2 标音#

标音部分是可选的,如果没有标音,系统将会进行自动标音。如果出现一些多音字读法或者英文、符号等读法和系统自动标音不一致的情况,可以使用手动标音。

在手动标音时,中文的标音直接使用小写拼音+声调的方式,声调以1-5表示(1阴平 2阳平 3上声 4去声 5轻声)。英文可以用近似的中文拼音进行标注。(目前也可以用大写的英文音素进行标注,但由于比较复杂,并不推荐,将来会支持国际音标标注)。

同一个热词可以有多个标音,写成多行即可。

2.1.2.3 权重#

权重部分是可选的,表示热词概率修改的幅度。权重为整形值,范围是[-5,5]。大于等于0的权重用来增加该词语被识别的概率,小于0的权重用来减小该词语被识别的概率。缺省为1,一般使用缺省值即可,如果效果不明显可以适当增加权重,但是当权重较大时会影响其他词汇的识别,导致整体识别率反而降低。

对于一些不希望出现的词,可以考虑使用小于0的权重,但这些词需要在原始模型的词表中。在这种情况下,如果有手动标音会被忽略。

对于不在原始模型中的词,本来出现的概率就不大,因此目前并不支持降低这些词权重。

2.1.2.4 示例#
# 系统自动标音
成都
# 一般的多音字,系统也能自动标对拼音,如果不确认,可以手动标音
重庆 [chong2 qing4]
# 英文用拼音标音
json [jie1 sen4]
# 符号等需要手工标音
长江➆号 [chang2 jiang1 qi1 hao4]
# 中英数字混合
k8s [kei4 ba1 ai1 si4]
陈sir [chen4 se4 er5]
# 增加权重
测试 1
# 标音+增加权重
莱昂纳多 [lai2 ang2 na4 duo1] 2
# 降低权重
吗 -1

2.1.3 文本替换类热词#

格式为:

热词 (原始识别词汇)

当原始识别结果文本中有定义的词汇时,就会被替换成热词。原始词汇中有空格是不支持的,热词中有空格是支持的,但总是会按照原样输出,也即会把空格也作为最终输出热词的一部分。

文本的比较是不区分大小写的。

注意:这可用于替代之前版本的 map.list。但这里的原始识别词汇并不像以前的 map.list 那样,需要在分词边界并且以空格隔开,原始词汇和热词也不需要分词数相等。

2.1.3.1 示例#
# 中央舞台 会被 替换为 中央五台
中央五台 (中央舞台)
# 英文符号的替换
I ♥ U (I love you)

2.1.4 音素替换类热词#

格式为:

热词 ([标音])

音素替换类热词,表示当查找到识别结果中的音素序列和定义的热词音素序列相同时,就将原来的识别结果替换为热词。

当后面的小括号内如果没有内容,或者括住的内容又是方括号括住的标音,表示音素替换类热词。

当小括号中没有内容时,表示自动标音,否则表示手动标音。标音概念同前面的建网类热词。

音素比较时,受到 conf 文件中 ignore_tone 配置的影响。当ignore_tonetrue 时,比较的时候将忽略拼音音素的声调。

2.1.4.1 示例#
# 系统自动标音
成都 ()
# 一般的多音字,系统也能自动标对拼音,如果不确认,可以手动标音
重庆 ([chong2 qing4])
# 英文用拼音标音
json ([jie1 sen4])
# 符号等需要手工标音
长江➆号 ([chang2 jiang1 qi1 hao4])
# 中英数字混合
k8s ([kei4 ba1 ai1 si4])
陈sir ([chen4 se4 er5])

2.2 敏感词#

敏感词的功能,是指用户可以通过接口上传敏感词词表,在识别时如果结果中出现敏感词,则会输出 "*" 屏蔽此敏感词。也可通过 “管理后台” 进行敏感词上传和应用缺省敏感词的配置。

本文档描述了AICP 10 平台中的敏感词管理接口。通过这里提供的 HTTP 接口,用户可以对敏感词词表进行增、删、改、查的操作,同时这里获得的敏感词词表ID,可以用于在识别时指定ASR服务所使用的敏感词词表。

2.2.1 敏感词词表格式#

敏感词词表的内容中为 UTF-8 编码,有无 BOM 头均可。整体内容不能超过100K。

内容中包括多行,每行代表一个敏感词,每行内容不能超过 256 字节。

2.2.1.1 示例#
法轮功
草泥马

2.3 小语料优化模型#

小语料优化模型的功能,也即用户可以通过接口上传小语料优化模型,在识别时指定此优化模型,则会在识别过程中使用此优化模型对识别结果进行优化。也可通过 “管理后台” 进行小语料优化模型上传和应用缺省小语料优化模型的配置。

小语料优化模型的内容由捷通华声公司定制提供,或者客户自己使用 “AICP ASR 本地训练平台” 自行进行训练后获得。

3. 资源管理接口#

客户端通过 “统一资源管理接口” 可以对上述的动态资源进行进行增、删、改、查的管理和维护操作。

统一资源管理接口如下:

  • 添加资源

    POST http://ip:port/v10/resource/user/asr/{type}?appkey={appkey}&userId={userId}

  • 修改资源

    PUT http://ip:port/v10/resource/user/asr/{type}/{resId}?appkey={appkey}&userId={userId}

  • 查找资源

    GET http://ip:port/v10/resource/user/asr/{type}?appkey={appkey}&userId={userId}&offset={offset}&limit={limit}

  • 查看资源

    GET http://ip:port/v10/resource/user/asr/{type}/{resId}?appkey={appkey}&userId={userId}

  • 删除资源

    DELETE http://ip:port/v10/resource/user/asr/{type}/{resId}?appkey={appkey}&userId={userId}

支持的 type 如下:

cutype说明系统资源用户共享资源用户独享资源
asruserword热词
sensword敏感词
olm小语料优化模型

创建 ASR 动态优化资源时,有如下约束:

  • 用户资源
    • 用户热词
      • 创建用户热词时需要提供用户标识 userId,此标识由开发者自行定义,不超过64字节。
      • 目前每个 userId 下面最多只能存储 10 套热词词表。
      • 定义 "*" 为特殊的 userId,此 userId 下面存储的热词在同一个开发者下面是共享的,最多可以存储 100 套共享的热词词表。
      • 不指定userId时,默认也为 "*",因此在不指定 userId的话,创建的都是用户共享资源。
      • 不同的开发者下面的 userId 是独立的,即使名称相同,其热词词表也是不同的。
      • 同一个开发者下面,userId 是在多个 appKey 下面共享的。如果希望不同 app 下的 userId 独立,请自行在 userId 上加入标识进行区分。
    • 敏感词
      • 创建敏感词表时不需要提供用户标识,敏感词表在同一个开发者下面是共享的,最多可以存储 100 套敏感词表。
    • 小语料优化模型
      • 创建小语料优化模型时不需要提供用户标识,小语料优化模型在同一个开发者下面是共享的,最多可以存储 100 套小语料优化模型。
  • 系统资源
    • 创建系统资源时都不需要提供用户标识
    • 热词、敏感词和小语料模型,在一个开发者下都是支持最多100个

具体的请求参数、请求消息和相应消息,请参见 《统一资源管理开发手册》

note

AICP-10 D.1 之前的版本中,包括了单独的热词和敏感词管理接口,这些接口在 10D.1 之后已废弃。