欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android 讯飞语音开发技巧(BNF与ABNF与错误码列表)

程序员文章站 2022-03-26 22:49:04
BNF语音识别文件格式简介 巴科斯范式(BNF: Backus-Naur Form 的缩写)是由 John Backus 和 Peter Naur 首先引入的用来描述计算机语言语...

BNF语音识别文件格式简介

巴科斯范式(BNF: Backus-Naur Form 的缩写)是由 John Backus 和 Peter Naur 首先引入的用来描述计算机语言语法的符号集。现在,几乎每一位新编程语言书籍的作者都使用巴科斯范式来定义编程语言的语法规则。

  在BNF中,双引号中的字(“word”)代表着这些字符本身。而double_quote用来代表双引号。

  在双引号外的字(有可能有下划线)代表着语法部分。

  < > : 内包含的为必选项。
  [ ] : 内包含的为可选项。
  { } : 内包含的为可重复0至无数次的项。
  | : 表示在其左右两边任选一项,相当于”OR”的意思。
  ::= : 是“被定义为”的意思
  “…” : 术语符号
  […] : 选项,最多出现一次
  {…} : 重复项,任意次数,包括 0 次
  (…) : 分组
  | : 并列选项,只能选一个
  斜体字: 参数,在其它地方有解释

  下面是是用BNF来定义的Java语言中的For语句的实例:
  

FOR_STATEMENT ::= 
      "for" "(" ( variable_declaration | 
  ( expression ";" ) | ";" ) 
      [ expression ] ";" 
      [ expression ] ";" 
      ")" statement

结构

简单的说,BNF文件分为五个部分:

文档标示头;(不要去改就对了) 语法名称; 槽声明; 主规则(可引用子规则); 文档主体(具体的定义槽、引用规则)

ABNF语音识别文件格式简介

RFC2234 定义了扩展的巴科斯范式(ABNF)。近年来在Internet的定义中 ABNF 被广泛使用。ABNF 做了更多的改进。扩充巴科斯-瑙尔范式(ABNF)基于了巴科斯-瑙尔范式(BNF),但由它自己的语法和推导规则构成。这种元语言的发起原则是描述作为通信协议(双向规范)的语言的形式系统。它建档于 RFC 4234 中通常充当 IETF 通信协议的定义语言。

  ABNF 规定是一组推导规则,写为:
  

规则 = 定义 ; 注释 CR LF

这里的规则是大小写敏感的非终止符,定义由定义这个规则的符号序列,一个文档注释组成,并结束于回车换行。

  规则名字是大小写不敏感的: , , 和 都提及同一个规则。规则名字由开始于一个字母的字母、数字和连字符组成。不要求用尖括号(“<”, “>”) (如 BNF 那样)包围规则名字。但是它们可以用来界定规则名字,比如在冗文中识别出规则名字的时候。ABNF 使用 7-位 ASCII 编码,在 8-位域中把高位置零。

  终结符由一个或多个数值字符指定。数值字符可以指定为跟随着基数(b = 二进制, d = 十进制, x = 十六进制)的一个百分号“%”,随后是这个数值,或数值的串联(用“.” 来指示)。例如回车可以指定为十进制的 %d13 或十六进制的 %x0D。回车换行可以指定为 %d13.10。

  文字正文通过使用包围在引号(“)中字符串来指定。这些字符串是大小写不敏感的,使用的字符集是 US-ASCII。所以字符串“abc”将匹配“abc”, “Abc”, “aBc”, “abC”, “ABc”, “AbC”, “aBC” 和 “ABC”。对于大小写敏感匹配,必须定义明确的字符: 要匹配 “aBc” 定义将是 %d97 %d66 %d99。

操作符

  空白被用来分隔定义的各个元素: 要使空格被识别为分割符则必须明确的包含它。

串联

规则1 规则2   

规则可以通过列出一序列的规则名字来定义。

要匹配字符串“aba”可以使用下列规则:

fu = %x61; a
bar = %x62; b
mumble = fu bar fu

错误码列表

MSP_SUCCESS                                 0   函数执行成功
MSP_ERROR_FAIL                              -1  失败
MSP_ERROR_EXCEPTION                         -2  异常
MSP_ERROR_GENERAL                       10100   基码
MSP_ERROR_OUT_OF_MEMORY                 10101   内存越界
MSP_ERROR_FILE_NOT_FOUND                10102   文件没有发现
MSP_ERROR_NOT_SUPPORT                   10103   不支持
MSP_ERROR_NOT_IMPLEMENT                 10104   没有实现
MSP_ERROR_ACCESS                        10105   没有权限
MSP_ERROR_INVALID_PARA                  10106   无效的参数
MSP_ERROR_INVALID_PARA_VALUE            10107   无效的参数值
MSP_ERROR_INVALID_HANDLE                10108   无效的句柄
MSP_ERROR_INVALID_DATA                  10109   无效的数据
MSP_ERROR_NO_LICENSE                    10110   没有授权许可
MSP_ERROR_NOT_INIT                      10111   没有初始化
MSP_ERROR_NULL_HANDLE                   10112   空句柄
MSP_ERROR_OVERFLOW                      10113   溢出
MSP_ERROR_TIME_OUT                      10114   超时
MSP_ERROR_OPEN_FILE                     10115   打开文件出错
MSP_ERROR_NOT_FOUND                     10116   没有发现
MSP_ERROR_NO_ENOUGH_BUFFER              10117   没有足够的内存
MSP_ERROR_NO_DATA                       10118   没有数据
MSP_ERROR_NO_MORE_DATA                  10119   没有更多的数据
MSP_ERROR_SKIPPED                       10120   跳过
MSP_ERROR_ALREADY_EXIST                 10121   已经存在
MSP_ERROR_LOAD_MODULE                   10122   加载模块失败
MSP_ERROR_BUSY                          10123   忙碌
MSP_ERROR_INVALID_CONFIG                10124   无效的配置项
MSP_ERROR_VERSION_CHECK                 10125   版本错误
MSP_ERROR_CANCELED                      10126   取消
MSP_ERROR_INVALID_MEDIA_TYPE            10127   无效的媒体类型
MSP_ERROR_CONFIG_INITIALIZE             10128   初始化Config实例
MSP_ERROR_CREATE_HANDLE                 10129   建立句柄
MSP_ERROR_CODING_LIB_NOT_LOAD           10130   编解码库未加载
MSP_ERROR_NET_GENERAL                   10200   网络一般错误
MSP_ERROR_NET_OPENSOCK                  10201   打开套接字
MSP_ERROR_NET_CONNECTSOCK               10202   套接字连接
MSP_ERROR_NET_ACCEPTSOCK                10203   套接字接收
MSP_ERROR_NET_SENDSOCK                  10204   发送
MSP_ERROR_NET_RECVSOCK                  10205   接收
MSP_ERROR_NET_INVALIDSOCK               10206   无效的套接字
MSP_ERROR_NET_BADADDRESS                10207   无效的地址
MSP_ERROR_NET_BINDSEQUENCE              10208   绑定次序
MSP_ERROR_NET_NOTOPENSOCK               10209   套接字没有打开
MSP_ERROR_NET_NOTBIND                   10210   没有绑定
MSP_ERROR_NET_NOTLISTEN                 10211   没有监听
MSP_ERROR_NET_CONNECTCLOSE              10212   连接关闭
MSP_ERROR_NET_NOTDGRAMSOCK              10213   非数据报套接字
MSP_ERROR_NET_DNS                       10214   DNS解析错误
MSP_ERROR_MSG_GENERAL                   10300   消息一般错误
MSP_ERROR_MSG_PARSE_ERROR               10301   解析
MSP_ERROR_MSG_BUILD_ERROR               10302   构建
MSP_ERROR_MSG_PARAM_ERROR               10303   参数出错
MSP_ERROR_MSG_CONTENT_EMPTY             10304   Content为空
MSP_ERROR_MSG_INVALID_CONTENT_TYPE      10305   Content类型无效
MSP_ERROR_MSG_INVALID_CONTENT_LENGTH    10306   Content长度无效
MSP_ERROR_MSG_INVALID_CONTENT_ENCODE    10307   Content编码无效
MSP_ERROR_MSG_INVALID_KEY               10308   Key无效
MSP_ERROR_MSG_KEY_EMPTY                 10309   Key为空
MSP_ERROR_MSG_SESSION_ID_EMPTY          10310   会话ID为空
MSP_ERROR_MSG_LOGIN_ID_EMPTY            10311   登录ID为空
MSP_ERROR_MSG_SYNC_ID_EMPTY             10312   同步ID为空
MSP_ERROR_MSG_APP_ID_EMPTY              10313   应用ID为空
MSP_ERROR_MSG_EXTERN_ID_EMPTY           10314   扩展ID为空
MSP_ERROR_MSG_INVALID_CMD               10315   无效的命令
MSP_ERROR_MSG_INVALID_SUBJECT           10316   无效的主题
MSP_ERROR_MSG_INVALID_VERSION           10317   无效的版本
MSP_ERROR_MSG_NO_CMD                    10318   没有命令
MSP_ERROR_MSG_NO_SUBJECT                10319   没有主题
MSP_ERROR_MSG_NO_VERSION                10320   没有版本号
MSP_ERROR_MSG_MSSP_EMPTY                10321   消息为空
MSP_ERROR_MSG_NEW_RESPONSE              10322   新建响应消息失败
MSP_ERROR_MSG_NEW_CONTENT               10323   新建Content失败
MSP_ERROR_MSG_INVALID_SESSION_ID        10324   无效的会话ID
MSP_ERROR_DB_GENERAL                    10400   数据库一般错误
MSP_ERROR_DB_EXCEPTION                  10401   异常
MSP_ERROR_DB_NO_RESULT                  10402   没有结果
MSP_ERROR_DB_INVALID_USER               10403   无效的用户
MSP_ERROR_DB_INVALID_PWD                10404   无效的密码
MSP_ERROR_DB_CONNECT                    10405   连接出错
MSP_ERROR_DB_INVALID_SQL                10406   无效的SQL
MSP_ERROR_RES_GENERAL                   10500   资源一般错误
MSP_ERROR_RES_LOAD                      10501   没有加载
MSP_ERROR_RES_FREE                      10502   空闲
MSP_ERROR_RES_MISSING                   10503   缺失
MSP_ERROR_RES_INVALID_NAME              10504   无效的名称
MSP_ERROR_RES_INVALID_ID                10505   无效的ID
MSP_ERROR_RES_INVALID_IMG               10506   无效的映像
MSP_ERROR_RES_WRITE                     10507   写操作
MSP_ERROR_RES_LEAK                      10508   泄露
MSP_ERROR_RES_HEAD                      10509   资源头部错误
MSP_ERROR_RES_DATA                      10510   数据出错
MSP_ERROR_RES_SKIP                      10511   跳过
MSP_ERROR_TTS_GENERAL                   10600   合成一般错误
MSP_ERROR_TTS_TEXTEND                   10601   文本结束
MSP_ERROR_TTS_TEXT_EMPTY                10602   文本为空
MSP_ERROR_REC_GENERAL                   10700   一般错误
MSP_ERROR_REC_INACTIVE                  10701   处于不活跃状态
MSP_ERROR_REC_GRAMMAR_ERROR             10702   语法错误
MSP_ERROR_REC_NO_ACTIVE_GRAMMARS        10703   没有活跃的语法
MSP_ERROR_REC_DUPLICATE_GRAMMAR         10704   语法重复
MSP_ERROR_REC_INVALID_MEDIA_TYPE        10705   无效的媒体类型
MSP_ERROR_REC_INVALID_LANGUAGE          10706   无效的语言
MSP_ERROR_REC_URI_NOT_FOUND             10707   没有对应的URI
MSP_ERROR_REC_URI_TIMEOUT               10708   获取URI内容超时
MSP_ERROR_REC_URI_FETCH_ERROR           10709   获取URI内容时出错
MSP_ERROR_EP_GENERAL                    10800   (EP)一般错误
MSP_ERROR_EP_NO_SESSION_NAME            10801   (EP)链接没有名字
MSP_ERROR_EP_INACTIVE                   10802   (EP)不活跃
MSP_ERROR_EP_INITIALIZED                10803   (EP)初始化出错
MSP_ERROR_LOGIN_SUCCESS                 11000   登录成功
MSP_ERROR_LOGIN_NO_LICENSE              11001   无授权
MSP_ERROR_LOGIN_SESSIONID_INVALID       11002   无效的SessionID
MSP_ERROR_LOGIN_SESSIONID_ERROR         11003   错误的SessionID
MSP_ERROR_LOGIN_UNLOGIN                 11004   未登录
MSP_ERROR_LOGIN_INVALID_USER            11005   无效的用户
MSP_ERROR_LOGIN_INVALID_PWD             11006   无效的密码
MSP_ERROR_LOGIN_SYSTEM_ERROR            11099   系统错误
MSP_ERROR_HTTP_BASE                     12000   HTTP错误基码
ERROR_NETWORK_TIMEOUT                   20002   网络不给力啊
ERROR_NET_EXPECTION                     20003   网络出问题了
ERROR_INVALID_RESULT                    20004   无有效的结果
ERROR_NO_MATCH                          20005   无匹配结果
ERROR_AUDIO_RECORD                      20006   录音失败
ERROR_NO_SPPECH                         20007   未检测到语音
ERROR_SPEECH_TIMEOUT                    20008   音频输入超时
ERROR_EMPTY_UTTERANCE                   20009   无效的文本输入
ERROR_FILE_ACCESS                       20010   文件读写失败
ERROR_PLAY_MEDIA                        20011   音频播放失败
ERROR_INVALID_PARAM                     20012   无效的参数
ERROR_TEXT_OVERFLOW                     20013   文本溢出
ERROR_INVALID_DATA                      20014   无效数据
ERROR_LOGIN                             20015   用户未登陆
ERROR_PERMISSION_DENIED                 20016   无效授权
ERROR_INTERRUPT                         20017   被异常打断
ERROR_INVALID_ENCODING                  20019   无效的编码
ERROR_MEMORY_WRANING                    20020   内存不足
ERROR_UNKNOWN                           20999   未知错误
ERROR_COMPONENT_NOT_INSTALLED           21001   没有安装语音组件
ERROR_ENGINE_NOT_SUPPORTED              21002   引擎不支持
ERROR_ENGINE_INIT_FAIL                  21003   初始化失败
ERROR_ENGINE_CALL_FAIL                  21004   调用失败
ERROR_ENGINE_BUSY                       21005   引擎繁忙
ERROR_LOCAL_NO_INIT                     22001   本地引擎未初始化
ERROR_LOCAL_RESOURCE                    22002   本地引擎无资源
ERROR_LOCAL_ENGINE                      22003   本地引擎内部错误
ERROR_IVW_INTERRUPT                     22004   本地唤醒引擎被异常打断
ERROR_VERSION_LOWER                     22005   版本过低