zoukankan      html  css  js  c++  java
  • 科大讯飞语音识别

    科大讯飞语音识别

           随着当今社会的高速发展,我们所使用的产品也向着遍历和智能的方面发展着,当然了手机端的App也不例外。现在的App都在缩减用户操作的流程,优化用户的体验,为了更加便利用户,提高用户的DAU(日活),增加用户的粘性一般我们都会想出比较新颖的招式。

           如果现在有这样一个需求:用户需要绑定银行卡输入银行卡号,手动输入增加用户的操作度,所以用户可以通过语音读取银行卡号,是不是既方便又智能。现在做语音识别的有一些不错的开放平台供我们使用,一家是科大讯飞平台,一家是百度语音平台。我个人比较偏爱科大讯飞,因为科大讯飞的优势在于大段大段的文字识别上,准确率较高。这正好能符合我输入银行卡号准确无误的需求。这篇博客也主要讲的是讯飞语音SDK的使用。下面我们来详细看一下科大讯飞。

    1.科大讯飞开放平台 

    2.科大讯飞iOS - API开放平台

            那下面我们来看一下科大讯飞的开发步骤吧

    第一步:申请账号ID

    登陆到讯飞开放平台上,在用户菜单栏里创建应用,这里的登陆也可以采用第三方的方式,在创建应用的界面填写相关的信息即可,然后就会有一个SDK的下载链接,如果没有直接去SDK选项下下载即可。

    第二步:导入讯飞SDK框架

    下载下来SDK解压后有三个文件夹:doc文件夹:不用多说肯定是开发文档;重要的是接下来的那两个文件夹:一个是lib文件夹:存放科大讯飞SDK类库,这就是我们要导入的SDK;Sample:iOS的科大讯飞demo演示工程。

    下面我们来创建一个工程,将lib文件夹下的“iflyMSC.framework”拷贝到工程目录,然后在工程中添加依赖库,如下图所示:

     

    第三步:开始进行语音识别了

    语音识别分两种,分别用在不同场合,一个是界面提示的语音识别,一个是无界面提示的语音识别,这里以有界面提示的语音识别为例先进性讲解。

    3.1导入头文件

    [objc] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. #import <iflyMSC/iflyMSC.h>  


    3.2登陆讯飞服务器

    在使用讯飞的语音解析之前,需要进行用户身份验证,即登陆讯飞服务器,这个在viewDidLoad()方法中添加两行代码即可.即讯飞服务器需要根据你当前用户的APPID才能同意你登陆。代码如下:

    [objc] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. //2.登陆讯飞服务器  
    2. NSString *appID = [NSString stringWithFormat:@"appid=%@",@"570f0a8b"];  
    3. [IFlySpeechUtility createUtility:appID];  

    3.3创建有界面提示语音识别对象

    创建一个讯飞语音识别对象,可以对他进行一系列的调用
     
    [objc] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. ///带界面的识别对象  
    2. @property (nonatomic,strong)IFlyRecognizerView *iflyRecognizerView;  
     

    3.4初始化带界面的识别对象

    [objc] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. _iflyRecognizerView = [[IFlyRecognizerView alloc] initWithCenter:self.view.center];  
    2. _iflyRecognizerView.delegate = self;  
    3. [_iflyRecognizerView setParameter:@"iat" forKey:[IFlySpeechConstant IFLY_DOMAIN]];  
    4. //asr_audio_path保存录音文件名,如不再需要,设置value为nil表示取消,默认目录是documents  
    5. [_iflyRecognizerView setParameter:@"asrview.pcm " forKey:[IFlySpeechConstant ASR_AUDIO_PATH]];  

    3.5实现代理方法

    讯飞对识别结果的处理采用的代理回调的方法,实现IFlySpeechSynthesizerDelegate协议的onResult:isLast:方法.
    注意!!!!这里的是onResult,不是onResults,后者是无界面提示的语音解析的结果回调函数.
     
    回调时默认传回来的数据是json数据,咱们大可不必疑惑解析到底使用哪种方式,科大讯飞已经为我们考虑到这些问题了,他官方提供了一个叫做“ISRDataHelper”用它解析就可以了。代码如下:
     
    [objc] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. - (void)onResult:(NSArray *)resultArray isLast:(BOOL)isLast{  
    2.       
    3.     NSMutableString *result = [[NSMutableString alloc] init];  
    4.     NSDictionary *dic = [resultArray objectAtIndex:0];  
    5.     for (NSString *key in dic) {  
    6.         [result appendFormat:@"%@",key];  
    7.     }  
    8.       
    9.     NSString * resu = [ISRDataHelper stringFromJson:result];  
    10.   
    11.       
    12.     //结果要显示在Lable上  
    13.     _showTextLable.text = [NSString stringWithFormat:@"%@%@",_showTextLable.text,resu];  
    14. }  

    3.6触发开始识别语音

    拖动一个Button,给一个响应事件,用于开始监听语音识别;代码如下:
     
    [objc] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. - (IBAction)voiceRecognize:(id)sender {  
    2.       
    3.     //开始识别语音  
    4.     [_iflyRecognizerView start];  
    5.       
    6. }  

    这时候运行app就可以进行语音识别了,界面如下图:
     
  • 相关阅读:
    输入框input只能输入数字和小数点
    ES6判断数组是否存在重复元素
    AutoPostBack的含义
    首次的boe with wss
    我的msn能在w2k3上使用了哈哈
    挑战excel
    wss的webpart的3种开发方式
    我来操作dts olap
    My dbconn of ASP
    sharepoint学习理解过程
  • 原文地址:https://www.cnblogs.com/mingjieLove00/p/5555220.html
Copyright © 2011-2022 走看看