看過來!妹子手把手教你使用Olami SDK實現iOS語音計算器(附demo)

代碼是程序員的朋友,雖然沒有熱情,但是非常忠實。

這裏寫圖片描述

前言:
在人工智能這樣的大背景下,語音輸入語音控制被使用的越來越廣泛,與時俱進,我們的移動應用是不是也該跟上時代的步伐了。手動太笨拙,很多時候我們又倒不出來雙手,那怎麼辦,OLAMI的在線語音識別API,自然語言語義理解API和NLI管理系統可以爲您輕鬆解決,釋放你的雙手。
下面,我爲大家介紹使用OlamiSDK來開發一款用語音操控的計算器,怎麼做計算器不是目的,目的是爲了用這個demo幫助大家更好的理解和使用OlamiSDK完成語音相關的開發。只需要幾部簡單的配置就好了哦,親準備好了,發車。

Olami SDK的介紹在下面這個網址
https://cn.olami.ai/wiki/?mp=sdk&content=sdk/ios/reference.html
在這個網址中詳細的介紹了Olami SDK包含了那些函數和定義的委託。

step 1:效果展示圖

這裏我展示了幾個簡單的對話,上面的sin曲線是識別音量大小的動畫。因爲本人是個妹子,內心還是很少女的,主色選了粉色調

step 2:前期準備(配置工程):
首先,利用Xcode開發工具創建一個項目,此處我不多說,你們懂的。

Olami SDK下載地址:https://github.com/olami-developers/olami-sdk-ios.git

這裏寫圖片描述

下載下來之後我們可以看到sdk-libs文件夾,我們只需要把libOlamiRecognizer.a靜態庫文件和OlamiRecognize.h對外提供接口文件拖入到我們的工程中。

配置工程:
這裏寫圖片描述

到這前期的準備工作就已經準備好了。親是不是很簡單,我們繼續。

step 3:用OlamiSDK實現應用

1.創建Olami應用
點擊https://cn.olami.ai/open/website/home/home_show註冊創建個人賬號並登陸。進入後創建新應用,建好之後進入應用管理可以看到下面界面(看到了嗎日期是7.3,我也是剛寫哦,所以很方便學習使用的)
這裏寫圖片描述
點擊查看key:

點擊配置模塊選擇你需要的語音模塊,目前有天氣,二十四點,新聞,聽書,數學等50~多個模塊,供大家選擇的還是很多的,但如果還是沒有你想要的模塊我們可以手動創建,後面我會詳細介紹,這裏我們選一個我已經寫好grammar的math模塊,選中確定就可以開始使用啦,是不是很方便吶:

2 初始化Olami語音識別對象並設置代理

 *CUSID;//終端用戶標識id,用來區分各個最終用戶 例如:手機的IMEI
 *appKey;//創建應用的appkey
 *api;//要調用的API類型。現有3種:語義(nli)和分詞(seg)和語音(asr)
 *appSecret;//加密的祕鑰,由應用管理自動生成

-(void)setupOLAMI{
    _olamiRecognizer= [[OlamiRecognizer alloc] init];
    _olamiRecognizer.delegate = self;

    [_olamiRecognizer setAuthorization:AppKey api:@"asr" appSecret:AppSecret cusid:macID];

    //設置語言,目前只支持中文
    [_olamiRecognizer setLocalization:LANGUAGE_SIMPLIFIED_CHINESE];

}

之後我們可以創建一個textView顯示,和一個錄音的按鈕

//設置是語音輸入還是文字輸入 0 爲語音 1爲文字輸入(這些在OlamiRecognizer頭文件裏標的很清楚)
    [_olamiRecognizer setInputType:0];

//isRecording = YES 即爲錄音模式
     if (_olamiRecognizer.isRecording) {
     //停止錄音
        [_olamiRecognizer stop];
        [_recordButton setTitle:@"開始錄音" forState:UIControlStateNormal];
    }else{
     //開始錄音
        [_olamiRecognizer start];
        [_recordButton setTitle:@"結束錄音" forState:UIControlStateNormal];
    }

語音結束後會返回結果:調用代理這個方法-(void)onResult:(NSData*)result; 其語義分析後的結果以一個json字符串的形式回調過來,對這個字符串進行解析,就可以獲得想要的變量。

後臺返回:語音內容是顯示在asr字段裏,大家可能會有疑問後臺怎麼識別的我們語音的內容,這是由於我們之前在olami平臺創建新應用後導入了一套識別相應內容的grammar,這樣olami的語義解析功能會爲我們自動識別出想要得到的變量內容。

Calculator[771:285595] json={
    data =     {
        asr =         {
            final = 1;
            result = "\U4e09\U52a0\U4e5d\U52a0\U516d";
            "speech_status" = 0;
            status = 0;
        };
        nli =         (
                        {
                "data_obj" =                 (
                                        {
                        content = "\U7ed3\U679c\U7b49\U4e8e18\U3002";
                        result = 18;
                    }
                );
                "desc_obj" =                 {
                    result = "\U7ed3\U679c\U7b49\U4e8e18\U3002";
                    status = 0;
                };
                type = math;
            }
        );
    };
    status = ok;
}

step 4:自定製語音模塊
olami平臺會爲廣大開發者提供一些已經寫好了的語法模塊,如果提供給大家的模塊不能滿足當下解析錄入語音的需求,那麼不要慌,下面就是教大家如何定製屬於自己的模塊。
首先.登錄,進入我的應用(沒有應用的話記得創建新應用哦),然後點擊“進入NLI系統”。下面是點擊之後的界面,可以看到右上角有導入和新增

點擊導入,可以看到如下界面,這裏是已經有的模塊有需要的直接導入:

重點:
如果沒有所需的模塊,那麼就需要點擊”新增“。當下我們做的是計算器那就給個名字,輸入calculate,提交成功後可以看到我的模塊裏面有了一個新模塊,:

到這,點擊calculate後面的進入模塊。界面中有例句庫,grammar,rule,slot,template模板。舉個簡單的栗子,幫我算一下八加三等於幾

思路:八、加、三是我們需要系統幫我們識別並且返回給我們的變量,那就可以在slot設置三個變量,幫我或者給我,等於多少或等於幾
類似這種我們可以設置到rule中,最後注意這兩個都是爲grammar服務的,要顯示句子要寫grammar,一切就緒提交成功了之後,就可以測試了,測試無誤滿足需求,點擊“發佈”就可以使用啦!話不多說上圖更直觀:

  • 1.新增grammar:

    添加語料
  • 2.寫出希望可以識別的一句grammar

    到這可能有人要問了()、[]這些符號都是什麼呀,我就簡單說一下,比如[ ] 是指可有可無的。要更多的瞭解點擊這裏查看OSL 語法描述語言 grammar的簡介,寫的很詳細https://cn.olami.ai/wiki/?mp=overview&content=quickstart.html

  • 3.最後測試無誤一定要點發布哦

  • 4.完成配置
    以上都完成了回到應用管理,我們就可以配置自己搭建的模塊嘍!

再來測試一下,噔噔噔噔~可以使用了,變量都幫我們識別出來了耶!

又get一項技能有沒有點小興奮!

本次demo的github下載地址:

https://github.com/zhaoshihui/olamiCalculator.git

好啦,最後希望路過的各位大神多多支持,喜歡的點個贊鼓勵下,有問題可以留評論互相探討。筆芯筆芯筆芯~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章