在目前的軟件應用中,輸入方式還是以文字輸入方式為主,但是語音輸入的方式目前應用的越來越廣泛。這是一個利用 Olami SDK 編寫的一個24點iOS程序,是通過語音進行輸入。
Olami SDK的介紹在下面這個網址
https://cn.olami.ai/wiki/?mp=sdk&content=sdk/ios/reference.html
在這個網址中詳細的介紹了Olami SDK包含了那些函數和定義的委托。
App實現
下面就通過24點這個程序來介紹一下如何使用這個SDK。
這個APP可在https://github.com/lym-ay/OlamiRecognizerMath24下載
去上面的網址下載Olami SDK.包括兩個文件,其中的一個是Olami的靜態函數庫,一個是其頭文件
第一步是初始化Olami的語音識別對象,并設置代理
2.調用setAuthorization函數進行授權
這個函數的參數的說明在OlamiRecognizer中有說明,也可以去在線API說明去查看
https://cn.olami.ai/wiki/?mp=sdk&content=sdk/ios/reference.html
有些參數必須去Olami的開發平臺上注冊才可以獲的,網址是https://olami.ai,注冊登陸以后創建應用才可以看到了
3.設置語系
在進行錄音之前必須要先進行設置,否則會得不到結果。目前只支持簡體中文(LANGUAGE_SIMPLIFIED_CHINESE)
4.開始錄音
調用 start()接口開始進行錄音
5.得到錄音的文字和語義,并對其進行處理
通過調用stop()函數或者自動停止,都會獲得錄音的文字和對其進行的語義分析的結果
實現OlamiRecognizerDelegate onResult函數可以獲得結果,其結果以一個json字符串的形式回調過來,對這個字符串進行解析,就可以獲得想要的數字。例如對著話筒說”2345算24點”,得到的結果如下
這個是根據OSL語法描述語言定義的一套規則,返回的結果。這個結果的說明在https://cn.olami.ai/wiki/?mp=api_nlu&content=api_nlu3.html這個網址上有說明。
看到這里大家可能會有疑惑,APP怎么知道我說的是什么意思呢?這就涉及到了OSL語法描述語言,OLAMI 語法描述語言(OLAMI Syntax Language,簡稱:OSL)是 OLAMI 平臺針對自然語言處理所發展出的獨特語法標記語言,自然語言語義互動(Natural Language Interaction, 簡稱:NLI)管理系統采用 OSL 取代復雜的編碼編程,使用簡單、容易學習而且靈活有彈性。可以在這個網址查看詳細的說明
https://cn.olami.ai/wiki/?mp=osl&content=osl1.html
在編寫這個APP之前,會按照OSL的要求編寫好一套語法,這套語法可以被Olami的服務器所理解,并進行語義分析然后給出結果,就是上面的json字符串。在Olami官網上有寫好的一些領域的模塊,可以直接使用。在https://cn.olami.ai/wiki/?mp=nli&content=nli1.html網址可以看到介紹如何使用以后的模塊。這個24點就是利用已有的模塊來編寫代碼的。
6.創建應用,設置和導入grammar
首先去olami的主頁去登陸和注冊。登陸以后轉到這頁面
在這個頁面可以看到我的應用 math24,還可以查看key
當然這個頁面必須創建應用以后才有,點擊“創建新應用”,轉到下面這個頁面
填寫 應用名稱,應用描述,應用介紹以后,就可以創建了。回到上一個頁面,就可以看到創建的應用了。
點擊”進入NLI系統”就可以進入模塊頁面
在官網已經內置了很多領域的grammar.在模塊頁面大家點擊“導入”按鈕,查看已有領域的模塊
選擇一個要使用的,例如我要導入”math24”這個模塊,先選擇它,點擊“導入” 按鈕
然后進入 math24模塊,就可以看到例句
但是這個時候還是不能使用,需要先進行發布。點擊頁面上方的”發布”按鈕,進入發布頁面
點擊“發布”按鈕
發布成功,現在就可以使用24模塊了。
Olami還提供了測試grammar的功能,點擊“測試”按鈕,可以在頁面進行測試,而不必要先開發APP
最后還要回到“我的應用”界面,點擊”配置NLI模塊”按鈕,讓自己創建的應用和模塊關聯起來
7.onResult 函數的說明
在整個程序中,最主要的一個函數就是onResult函數
這個函數就是對傳過來的結果進行處理
在這個函數中,調用了三個函數,分別來處理josn格式中的三個比較重要的節點
這個用來處理ASR節點,獲得語音識別的結果,如果沒有結果,則彈出一個對話框進行提示。ASR識別的文字顯示在第一個TextView中
這個用來處理Semantic節點,這個節點中包含了slot的值和modifier的值。OSL 語法描述語言中的 slot 可理解為語義中的變量,用于傳遞、提取信息,是代碼處理的數據的來源。對于24點這個程序來說,就是進行計算的4的數的來源。關于slot的值可以參考https://cn.olami.ai/wiki/?mp=osl&content=osl_slot.html,這里有詳細說明。在24點程序中我們的要計算的數字就是從這里獲得的。
這個用來處理語音和語義的結果。這個函數主要是處理json字符串中的modifier節點。modifier 語法描述規則是 OSL 語法描述語言中,除了 slot 以外的另一種內置的信息傳遞機制,一般用來表示語義目的,也可以理解為對于語義的一種注釋方式,以便讓應用程序的開發者得知 grammar 所代表的相應意圖。詳細說明參考
https://cn.olami.ai/wiki/?mp=osl&content=osl_regex.html#11,通過modifier,我們才能知道程序的意圖是什么?例如是想發問,還是計算結果。
如上代碼所示,在24點鐘我們定義了7個modifier,根據字面意思大家也可以猜出來。這些都可以在OSL語法中自定義,然后通過Josn字符串獲得,在程序中進行處理。這個是我們程序進行處理的一個判斷機制。
上圖為2017年最新的視頻教程資料,搜索2352149755加我好友私聊我上傳視頻教程,有什么不懂的也可以來私聊問我。
不定時更新中。
如果你能明白這些視頻資料的好差,那么你也算是入行了,底層和中高層就是這一步之差。