代碼是程序員的朋友,雖然沒有熱情,但是非常忠實。
前言:
在人工智能這樣的大背景下,語音輸入語音控制被使用的越來越廣泛,與時俱進,我們的移動應用是不是也該跟上時代的步伐了。手動太笨拙,很多時候我們又倒不出來雙手,那怎麼辦,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.html3.最後測試無誤一定要點發布哦
4.完成配置
以上都完成了回到應用管理,我們就可以配置自己搭建的模塊嘍!
再來測試一下,噔噔噔噔~可以使用了,變量都幫我們識別出來了耶!
又get一項技能有沒有點小興奮!
本次demo的github下載地址:
https://github.com/zhaoshihui/olamiCalculator.git
好啦,最後希望路過的各位大神多多支持,喜歡的點個贊鼓勵下,有問題可以留評論互相探討。筆芯筆芯筆芯~