博客> 看过来!妹子手把手教你使用Olami SDK实现iOS语音计算器(附demo)
看过来!妹子手把手教你使用Olami SDK实现iOS语音计算器(附demo)
2018-08-15 00:12 评论:0 阅读:551 Scarlett0602
ios 人工智能 语音控制 自然语言 skd

代码是程序员的朋友,虽然没有热情,但是非常忠实。

前言: 在人工智能这样的大背景下,语音输入语音控制被使用的越来越广泛,与时俱进,我们的移动应用是不是也该跟上时代的步伐了。手动太笨拙,很多时候我们又倒不出来双手,那怎么办,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

好啦,最后希望路过的各位大神多多支持,喜欢的点个赞鼓励下,有问题可以留评论互相探讨。笔芯笔芯笔芯~

收藏
0
sina weixin mail 回到顶部