# 离线命令词识别 Linux SDK 文档

# 1、简介

语法(命令词)识别,是基于语法规则,将与语法一致的自然语言音频转换为文本输出的技术。语法识别的结果值域只在语法文件所列出的规则里,故有很好的匹配率,另外,语法识别结果携带了结果的置信度,应用可以根据置信分数,决定这个结果是否有效。语法识别多用于要更准确结果且有限说法的语音控制,如空调的语音控制等。在第一次使用某语法进行识别时,应用需要先编写一个语法文件,然后通过调用QISRBuildGrammar接口编译本地语法文件,以及获得语法ID,并在会话时,传入语法ID,以使用该语法,在之后的会话中,继续使用此语法进行识别,无需再次构建。

本文只对构建和使用语法的 SDK 调用过程进行介绍,关于语法的规则说明,请参考语法开发指南

详细代码调用请参考 Samples中的 asr_sample(语法识别示例)。API详细描述请参考API文档

# 2、SDK集成指南

# 2.1 Demo运行步骤

1.在控制台下载对应sdk

2.进入sdk内samples/asr_offline_sample目录source 64bit_make.sh或32bit_make.sh, 视系统位数选择

3.运行成功后进入sdk bin目录下cd ../../bin/,运行./asr_offline_sample即可看到运行结果

# 2.2 项目集成步骤

# 2.2.1 sdk包说明

《SDK目录结构一览》

  • bin(运行时目录):

    • 相关资源文件
  • doc:

    • 相关技术文档
  • include:

    • 调用SDK所需头文件
  • libs:

    • libmsc.so(x64 和 x86库文件)
  • samples:

    • asr_offline_sample (离线命令词示例-已录制音频)
    • asr_offline_record_sample(离线命令词示例-从麦克风录入)

    注意:

    • 为了减少SDK包在应用中占用的大小,官网在下载单个功能的SDK包时, 可能并不包含其他功能,如下载唤醒的SDK包时,可能不包含听写或合成等功能,因此在运行未包含功能的示例时,可能会报错。对此请下载对应功能的SDK,或下载组合的SDK包。

# 2.2.2 sdk导入

  1. 新建目录Demo,将SDK中bin,include,libs文件夹复制到新建工程“Demo”文件夹下
  2. 在demo目录新建文件demo.c,详细源码请参考samples中对应的语音示例
  3. 在demo目录下,创建Makefile文件,具体参见samples下的Makefile,修改路径和目标文件即可
  4. 将samples目录下“32bit_make.sh”文件或者“64bit_make.sh”文件拷到demo目录下,修改libmsc.so库搜索路径
  5. cd到demo目录下,执行“source 32bit_make.sh”或者 “source 64bit_make.sh”完成编译
  6. cd到bin目录下运行目标文件,SDK启动后,bin/msc目录下会生成日志(注意:msc文件夹下需有msc.cfg文件)

# 2.3 参数与说明

# 2.3.1 常用参数说明

以下为常用参数说明,更多参数设置请参考API文档

参数 名称 说明
asr_threshold 识别门限 离线语法识别结果门限值,设置只返回置信度得分大于此门限值的结果
可取值:0~100,默认值:0
asr_res_path 离线识别资源路径 离线识别资源所在路径,对应格式如下:access_type1|file_info1|[offset1]|[length1];access_type2|file_info2|[offset2]|[length2]各字段含义如下:access_type:文件访问方式,支持路径方式(fo)和文件描述符方式(fd);file_info:此字段和access_type 对应,文件路径对应fo,文件描述符对应fd,
grm_build_path 离线语法生成路径 构建离线语法所生成数据的保存路径(文件夹)

# 2.3.2 命令词结果

开发者需要关注置信度(confidence)字段,来判断该次命令词是否生效

<?xml version='1.0' encoding='utf-8' standalone='yes' ?><nlp>
  <version>1.1</version>
  <rawtext>打电话给丁伟</rawtext>
  <confidence>94</confidence>
  <engine>local</engine>
  <result>
    <focus>dialpre|contact</focus>
    <confidence>81|100</confidence>
    <object>
      <dialpre id="10001">打电话给</dialpre>
      <contact id="65535">丁伟</contact>
    </object>
  </result>
</nlp>

# 3、 常见问题

# 错误码及相应解决方案查询网址

答:错误码及相应解决方案查询

# 离线命令词sdk如何下载试用?

答:文档中心---快速指引有介绍步骤---根据步骤下载相应平台的离线命令词sdk,离线命令词SDK包有10个装机量,试用期为90天。

# 离线命令词识别支持多少命令词?

答:离线识别的命令词是开发者自己定义,命令词最大长度为16个汉字,需要先构建语法,然后指定使用的语法。
语法文件开发文档请参考识别语法分享--在线语法和离线语法编写指南(http://bbs.xfyun.cn/forum.php?mod=viewthread&tid=7595)