Android 讯飞语音开发技巧(BNF与ABNF与错误码列表)
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 版本过低