使用Olami SDK實(shí)現(xiàn)一個(gè)語(yǔ)音輸入數(shù)字進(jìn)行24點(diǎn)計(jì)算的iOS程序

在目前的軟件應(yīng)用中间涵,輸入方式還是以文字輸入方式為主,但是語(yǔ)音輸入的方式目前應(yīng)用的越來(lái)越廣泛榜揖。這是一個(gè)利用 Olami SDK 編寫的一個(gè)24點(diǎn)iOS程序勾哩,是通過(guò)語(yǔ)音進(jìn)行輸入。

Olami SDK的介紹在下面這個(gè)網(wǎng)址

https://cn.olami.ai/wiki/?mp=sdk&content=sdk/ios/reference.html

在這個(gè)網(wǎng)址中詳細(xì)的介紹了Olami SDK包含了那些函數(shù)和定義的委托举哟。

App實(shí)現(xiàn)

下面就通過(guò)24點(diǎn)這個(gè)程序來(lái)介紹一下如何使用這個(gè)SDK思劳。

這個(gè)APP可在https://github.com/lym-ay/OlamiRecognizerMath24下載


去上面的網(wǎng)址下載Olami SDK.包括兩個(gè)文件,其中的一個(gè)是Olami的靜態(tài)函數(shù)庫(kù)妨猩,一個(gè)是其頭文件

第一步是初始化Olami的語(yǔ)音識(shí)別對(duì)象敢艰,并設(shè)置代理


2.調(diào)用setAuthorization函數(shù)進(jìn)行授權(quán)


這個(gè)函數(shù)的參數(shù)的說(shuō)明在OlamiRecognizer中有說(shuō)明,也可以去在線API說(shuō)明去查看

https://cn.olami.ai/wiki/?mp=sdk&content=sdk/ios/reference.html

有些參數(shù)必須去Olami的開(kāi)發(fā)平臺(tái)上注冊(cè)才可以獲的册赛,網(wǎng)址是https://olami.ai钠导,注冊(cè)登陸以后創(chuàng)建應(yīng)用才可以看到了


3.設(shè)置語(yǔ)系


在進(jìn)行錄音之前必須要先進(jìn)行設(shè)置,否則會(huì)得不到結(jié)果森瘪。目前只支持簡(jiǎn)體中文(LANGUAGE_SIMPLIFIED_CHINESE)

4.開(kāi)始錄音

調(diào)用 start()接口開(kāi)始進(jìn)行錄音


5.得到錄音的文字和語(yǔ)義牡属,并對(duì)其進(jìn)行處理

通過(guò)調(diào)用stop()函數(shù)或者自動(dòng)停止,都會(huì)獲得錄音的文字和對(duì)其進(jìn)行的語(yǔ)義分析的結(jié)果

實(shí)現(xiàn)OlamiRecognizerDelegate onResult函數(shù)可以獲得結(jié)果扼睬,其結(jié)果以一個(gè)json字符串的形式回調(diào)過(guò)來(lái)逮栅,對(duì)這個(gè)字符串進(jìn)行解析,就可以獲得想要的數(shù)字窗宇。例如對(duì)著話筒說(shuō)”2345算24點(diǎn)”措伐,得到的結(jié)果如下


這個(gè)是根據(jù)OSL語(yǔ)法描述語(yǔ)言定義的一套規(guī)則,返回的結(jié)果军俊。這個(gè)結(jié)果的說(shuō)明在https://cn.olami.ai/wiki/?mp=api_nlu&content=api_nlu3.html這個(gè)網(wǎng)址上有說(shuō)明侥加。

看到這里大家可能會(huì)有疑惑,APP怎么知道我說(shuō)的是什么意思呢粪躬?這就涉及到了OSL語(yǔ)法描述語(yǔ)言担败,OLAMI 語(yǔ)法描述語(yǔ)言(OLAMI Syntax Language昔穴,簡(jiǎn)稱:OSL)是 OLAMI 平臺(tái)針對(duì)自然語(yǔ)言處理所發(fā)展出的獨(dú)特語(yǔ)法標(biāo)記語(yǔ)言,自然語(yǔ)言語(yǔ)義互動(dòng)(Natural Language Interaction, 簡(jiǎn)稱:NLI)管理系統(tǒng)采用 OSL 取代復(fù)雜的編碼編程提前,使用簡(jiǎn)單吗货、容易學(xué)習(xí)而且靈活有彈性”吠可以在這個(gè)網(wǎng)址查看詳細(xì)的說(shuō)明

https://cn.olami.ai/wiki/?mp=osl&content=osl1.html

在編寫這個(gè)APP之前宙搬,會(huì)按照OSL的要求編寫好一套語(yǔ)法,這套語(yǔ)法可以被Olami的服務(wù)器所理解拓哺,并進(jìn)行語(yǔ)義分析然后給出結(jié)果勇垛,就是上面的json字符串。在Olami官網(wǎng)上有寫好的一些領(lǐng)域的模塊拓售,可以直接使用。在https://cn.olami.ai/wiki/?mp=nli&content=nli1.html網(wǎng)址可以看到介紹如何使用以后的模塊镶奉。這個(gè)24點(diǎn)就是利用已有的模塊來(lái)編寫代碼的础淤。

6.創(chuàng)建應(yīng)用,設(shè)置和導(dǎo)入grammar

首先去olami的主頁(yè)去登陸和注冊(cè)哨苛。登陸以后轉(zhuǎn)到這頁(yè)面


在這個(gè)頁(yè)面可以看到我的應(yīng)用 math24,還可以查看key

當(dāng)然這個(gè)頁(yè)面必須創(chuàng)建應(yīng)用以后才有鸽凶,點(diǎn)擊“創(chuàng)建新應(yīng)用”,轉(zhuǎn)到下面這個(gè)頁(yè)面


填寫 應(yīng)用名稱建峭,應(yīng)用描述玻侥,應(yīng)用介紹以后,就可以創(chuàng)建了亿蒸〈绽迹回到上一個(gè)頁(yè)面,就可以看到創(chuàng)建的應(yīng)用了边锁。

點(diǎn)擊”進(jìn)入NLI系統(tǒng)”就可以進(jìn)入模塊頁(yè)面


在官網(wǎng)已經(jīng)內(nèi)置了很多領(lǐng)域的grammar.在模塊頁(yè)面大家點(diǎn)擊“導(dǎo)入”按鈕姑食,查看已有領(lǐng)域的模塊


選擇一個(gè)要使用的,例如我要導(dǎo)入”math24”這個(gè)模塊茅坛,先選擇它音半,點(diǎn)擊“導(dǎo)入” 按鈕



然后進(jìn)入 math24模塊,就可以看到例句


但是這個(gè)時(shí)候還是不能使用贡蓖,需要先進(jìn)行發(fā)布曹鸠。點(diǎn)擊頁(yè)面上方的”發(fā)布”按鈕,進(jìn)入發(fā)布頁(yè)面


點(diǎn)擊“發(fā)布”按鈕


發(fā)布成功斥铺,現(xiàn)在就可以使用24模塊了彻桃。

Olami還提供了測(cè)試grammar的功能,點(diǎn)擊“測(cè)試”按鈕晾蜘,可以在頁(yè)面進(jìn)行測(cè)試叛薯,而不必要先開(kāi)發(fā)APP


最后還要回到“我的應(yīng)用”界面浑吟,點(diǎn)擊”配置NLI模塊”按鈕,讓自己創(chuàng)建的應(yīng)用和模塊關(guān)聯(lián)起來(lái)


7.onResult 函數(shù)的說(shuō)明

在整個(gè)程序中耗溜,最主要的一個(gè)函數(shù)就是onResult函數(shù)


這個(gè)函數(shù)就是對(duì)傳過(guò)來(lái)的結(jié)果進(jìn)行處理

在這個(gè)函數(shù)中组力,調(diào)用了三個(gè)函數(shù),分別來(lái)處理josn格式中的三個(gè)比較重要的節(jié)點(diǎn)


這個(gè)用來(lái)處理ASR節(jié)點(diǎn)抖拴,獲得語(yǔ)音識(shí)別的結(jié)果燎字,如果沒(méi)有結(jié)果,則彈出一個(gè)對(duì)話框進(jìn)行提示阿宅。ASR識(shí)別的文字顯示在第一個(gè)TextView中


這個(gè)用來(lái)處理Semantic節(jié)點(diǎn)候衍,這個(gè)節(jié)點(diǎn)中包含了slot的值和modifier的值。OSL 語(yǔ)法描述語(yǔ)言中的 slot 可理解為語(yǔ)義中的變量洒放,用于傳遞蛉鹿、提取信息,是代碼處理的數(shù)據(jù)的來(lái)源往湿。對(duì)于24點(diǎn)這個(gè)程序來(lái)說(shuō)妖异,就是進(jìn)行計(jì)算的4的數(shù)的來(lái)源。關(guān)于slot的值可以參考https://cn.olami.ai/wiki/?mp=osl&content=osl_slot.html领追,這里有詳細(xì)說(shuō)明他膳。在24點(diǎn)程序中我們的要計(jì)算的數(shù)字就是從這里獲得的。


這個(gè)用來(lái)處理語(yǔ)音和語(yǔ)義的結(jié)果绒窑。這個(gè)函數(shù)主要是處理json字符串中的modifier節(jié)點(diǎn)棕孙。modifier 語(yǔ)法描述規(guī)則是 OSL 語(yǔ)法描述語(yǔ)言中,除了 slot 以外的另一種內(nèi)置的信息傳遞機(jī)制些膨,一般用來(lái)表示語(yǔ)義目的蟀俊,也可以理解為對(duì)于語(yǔ)義的一種注釋方式,以便讓應(yīng)用程序的開(kāi)發(fā)者得知 grammar 所代表的相應(yīng)意圖订雾。詳細(xì)說(shuō)明參考

https://cn.olami.ai/wiki/?mp=osl&content=osl_regex.html#11欧漱,通過(guò)modifier,我們才能知道程序的意圖是什么葬燎?例如是想發(fā)問(wèn)误甚,還是計(jì)算結(jié)果。

如上代碼所示谱净,在24點(diǎn)鐘我們定義了7個(gè)modifier窑邦,根據(jù)字面意思大家也可以猜出來(lái)。這些都可以在OSL語(yǔ)法中自定義壕探,然后通過(guò)Josn字符串獲得冈钦,在程序中進(jìn)行處理。這個(gè)是我們程序進(jìn)行處理的一個(gè)判斷機(jī)制李请。


上圖為2017年最新的視頻教程資料瞧筛,搜索2352149755加我好友私聊我上傳視頻教程厉熟,有什么不懂的也可以來(lái)私聊問(wèn)我。

不定時(shí)更新中较幌。

如果你能明白這些視頻資料的好差揍瑟,那么你也算是入行了,底層和中高層就是這一步之差乍炉。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末绢片,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子岛琼,更是在濱河造成了極大的恐慌底循,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件槐瑞,死亡現(xiàn)場(chǎng)離奇詭異熙涤,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)困檩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門祠挫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人窗看,你說(shuō)我怎么就攤上這事茸歧【氤矗” “怎么了显沈?”我有些...
    開(kāi)封第一講書人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)逢唤。 經(jīng)常有香客問(wèn)我拉讯,道長(zhǎng),這世上最難降的妖魔是什么鳖藕? 我笑而不...
    開(kāi)封第一講書人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任魔慷,我火速辦了婚禮,結(jié)果婚禮上著恩,老公的妹妹穿的比我還像新娘院尔。我一直安慰自己,他們只是感情好喉誊,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布邀摆。 她就那樣靜靜地躺著,像睡著了一般伍茄。 火紅的嫁衣襯著肌膚如雪栋盹。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,046評(píng)論 1 285
  • 那天敷矫,我揣著相機(jī)與錄音例获,去河邊找鬼汉额。 笑死,一個(gè)胖子當(dāng)著我的面吹牛榨汤,可吹牛的內(nèi)容都是我干的蠕搜。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼件余,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼讥脐!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起啼器,我...
    開(kāi)封第一講書人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤旬渠,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后端壳,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體告丢,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年损谦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了岖免。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡照捡,死狀恐怖颅湘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情栗精,我是刑警寧澤闯参,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站悲立,受9級(jí)特大地震影響鹿寨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜薪夕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一脚草、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧原献,春花似錦馏慨、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至粤策,卻和暖如春樟澜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工秩贰, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留霹俺,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓毒费,卻偏偏與公主長(zhǎng)得像丙唧,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子觅玻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容