BNF语音识别文件格式简介
生活随笔
收集整理的這篇文章主要介紹了
BNF语音识别文件格式简介
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
此文分析離線語音識別的語義規則文件,即BNF文件,一般放在Android Studio的Assets文件夾下。本大俠使用的是科大訊飛的語音識別SDK,所以以下所有規則在此SDK下實測有效
1、結構
簡單的說,BNF文件分為五個部分:
2、定義
2.1 文檔標示頭
這個不細說,按默認來就好,它定義了文檔的版本和編碼格式,注意文檔的內容必須和這里聲明的編碼格式統一。
#BNF+IAT 1.0 UTF-8;2.2、 語法名稱
一個文件只能有一個語法名稱,作為這個BNF文件的一個識別名稱。
(借助此名稱可通過名稱識別接口在不同的場景調用不同的語法規則,此功能未實測)
2.3、 槽聲明
就是一個個坑,理解為活字印刷時的那些小坑,里面必須填入各種文字才行,非常方便動態修改識別命令。聲明完槽后在文檔底部的底部部分具體去定義每個聲明過的槽的具體內容。這樣語音識別引擎就會根據槽的內容去動態匹配你的指令。
!slot <name>;2.4、 主規則
首先聲明一個主規則名稱
!start <ruleName>然后為這個規則定義詳細的識別規則,注意名稱要和剛才聲明的一樣。
<ruleName>:<controlTV>|<controlAir>|<controlLight>; //冒號后面都是一些引用規則,引用規則由一系列槽組成。2.5、 文檔主體
這個地方放兩樣東西,引用規則和槽定義。
看例子:
結構很簡單,基本就這五個部分,比較麻煩的是規則定義部分。文檔規定只能定義一個主規則,所以可以在主規則中引用子規則來減少代碼量。
特別注意:名稱不能超過15個字符,命名不能重復。
最后上一個完整的例子
#BNF+IAT 1.0 UTF-8; !grammar call;//定義語法名稱 !slot <TV>;//被控制的物體和物體的某種屬性 !slot <airCondition>; !slot <temperature>; !slot <vol>; !slot <hold>; !slot <open>; !slot <shutDown>; //以下是想要讓物體達到的狀態 !slot <close>; !slot <tempUp>; !slot <tempDown>; !slot <volTurnUp>; !slot <volTurnDown>;!start <smartHome>;//定義開始規則,下面一行為規則的具體內容 //主規則,系統只認主規則 <smartHome>:<controlTV>|<controlAir>; //被引用的子規則,注意變量命名不能超過15個字符 <controlTV>:<open><TV>|[<hold>]<TV><open>|<close><TV>|[<hold>]<TV><close>; <controlAir>:<open><airCondition>|[<hold>]<airCondition><open>|<close><airCondition>|[<hold>]<airCondition><close>; <controlLight>:<open><light>|[<hold>]<light><open>|<close><light>|[<hold>]<light><close>; <volControl>:[<vol>]<volTurnDown>|[<vol>]<volTurnUp>|[<hold>]<vol><close>; <tempControl>:<temperature><tempUp>|<temperature><tempDown>;//為聲明過的槽,定義具體的名稱 <TV>:電視|電視機; <airCondition>:空調; <temperature>:溫度; <vol>:聲音|音量; <hold>:把; <open>:打開|開了|開起來|開|開一下; <close>:關閉|關掉|關了|關|關一下; <tempUp>:高點|調高; <tempDown>:低點|調高; <volTurnUp>:重點|重點|重一點|重一點|大點|大一點; <volTurnDown>:輕點|小點|小一點|輕一點; <shutDown>:關閉系統|退出;總結
以上是生活随笔為你收集整理的BNF语音识别文件格式简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 强行表白代码,你敢发给他(她)吗
- 下一篇: 实习合同