• 语音识别实践 之 科大讯飞


    参考:http://www.xfyun.cn/doccenter/iOS

    一、环境配置

    1. 下载SDK,省略

    2. 添加SDK,general->linked frameworks and libraries

    ibz.dylib,CoreTelephoney.framework不要遗漏。

    注:如果使用的是离线识别,还需要增加libc++.dylib。

    3. 配置SDK路径: Build Setting->Search paths->Framework Search Paths

    $(inherited)
    
    $(PROJECT_DIR)/testXunfeiCloud/lib
    

     注意下面的那个路径是下载的framework的路径

    4. 真机bitcode的错误

    需要在Build Setting -> build option -> enable bitcode 中设置

    5. 集成帮助文档到 xcode

    下面两种方式都没有成功

    5.1 Finder->应用程序->Xcode->显示包内容->Content->Developer->Documentation->DocSets

    5.2. 终端中,切换到下载的库中的doc目录

    运行命令

    cp -R -f -a com.iflytek.IFlyMSC.docset  ~/Library/Developer/Shared/Documentation/DocSets/ 

    二、代码开发

    1. 导入头文件

    //带界面的语音识别控件
    #import "iflyMSC/IFlyRecognizerViewDelegate.h"
    #import "iflyMSC/IFlyRecognizerView.h"
    
    //不带界面的语音识别控件
    #import "iflyMSC/IFlySpeechRecognizerDelegate.h"
    #import "iflyMSC/IFlySpeechRecognizer.h"
    
    //其它
    #import "iflyMSC/IFlySpeechUtility.h"
    #import "iflyMSC/IFlySpeechConstant.h"
    

     2. 初始化

    必须在初始化后才可以使用语音服务,初始化是异步过程,推荐在程序入口处调用。

    //将“12345678”替换成您申请的APPID。    
    NSString *initString = [[NSString alloc] initWithFormat:@"appid=%@",@"12345678"];    
    [IFlySpeechUtility createUtility:initString];  

    声明对象和代理

    @interface ViewController ()<
    IFlyRecognizerViewDelegate
    >
    {
        IFlyRecognizerView      *_iflyRecognizerView;
    }
    

    启动

    - (void) startRecognizer {
        
        NSString *initString = [[NSString alloc] initWithFormat:@"appid=%@",@""];
        [IFlySpeechUtility createUtility:initString];
        
        if (!_iflyRecognizerView) {
            
            //初始化语音识别控件
            _iflyRecognizerView = [[IFlyRecognizerView alloc] initWithCenter:self.view.center];
            
            [self.view addSubview:_iflyRecognizerView];
            _iflyRecognizerView.delegate = self;
            [_iflyRecognizerView setParameter: @"iat" forKey: [IFlySpeechConstant IFLY_DOMAIN]];
            //asr_audio_path保存录音文件名,如不再需要,设置value为nil表示取消,默认目录是documents
            [_iflyRecognizerView setParameter:nil forKey:[IFlySpeechConstant ASR_AUDIO_PATH]];
        }
    
        
        
        //启动识别服务--每次识别完成,或者隔一段时间,就要重启启动一次
        [_iflyRecognizerView start];
    }
    
    
    
    
    /*识别结果返回代理
     @param resultArray 识别结果
     @ param isLast 表示是否最后一次结果
     */
    - (void)onResult: (NSArray *)resultArray isLast:(BOOL) isLast
    {
        
        NSLog(@"%@",resultArray);
        
    }
    /*识别会话错误返回代理
     @ param  error 错误码
     */
    - (void)onError: (IFlySpeechError *) error
    {
        
        //NSLog(@"%@",error);
        
        [self startRecognizer];
    }
    

    不带界面

    - (void) startRecognizerNoView {
    
        if (!m_flySpeechRecognizer) {
            
            NSString *initString = [[NSString alloc] initWithFormat:@"appid=%@",@""];
            [IFlySpeechUtility createUtility:initString];
            
            //初始化语音识别控件
            m_flySpeechRecognizer = [IFlySpeechRecognizer sharedInstance] ;
            
            m_flySpeechRecognizer.delegate = self;
            [m_flySpeechRecognizer setParameter: @"iat" forKey: [IFlySpeechConstant IFLY_DOMAIN]];
            
            //[m_flySpeechRecognizer setParameter: @"iat" forKey: [IFlySpeechConstant LANGUAGE]];
            
            
            [m_flySpeechRecognizer setParameter: @"plain" forKey: [IFlySpeechConstant RESULT_TYPE]];
            
            //asr_audio_path保存录音文件名,如不再需要,设置value为nil表示取消,默认目录是documents
            [m_flySpeechRecognizer setParameter:nil forKey:[IFlySpeechConstant ASR_AUDIO_PATH]];
        }
        
        
        
        //启动识别服务--每次识别完成,或者隔一段时间,就要重启启动一次
        [m_flySpeechRecognizer startListening];
    
    }
    

    语音识别是按照一段语音文件来识别的,不是一直不停地识别。所以就有个开始和结束。

  • 相关阅读:
    城市联动
    Js-右键事件
    JS-键盘移动事件
    Js-点名器
    前端学习——HTML
    前端学习——前端基础
    Redis数据库学习
    2020系统综合实践 期末大作业
    #Nginx+Tomcat+Redis session共享
    2020系统综合实践 第7次实践作业
  • 原文地址:https://www.cnblogs.com/SimonGao/p/5437877.html
Copyright © 2020-2023  润新知